明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2065|回复: 9

[求助]请问有没有求任意两个对象交点的程序

[复制链接]
发表于 2009-6-15 17:39:00 | 显示全部楼层 |阅读模式
如题,请问有没有求任意两个对象交点的程序,不胜感激
发表于 2009-6-15 18:35:00 | 显示全部楼层
vla-intersectwith 函数
回复 支持 1 反对 0

使用道具 举报

发表于 2009-6-15 18:05:00 | 显示全部楼层

好像有个函数是求交点的

要提供四个点

我不记得去了

高手指点一下

 楼主| 发表于 2009-6-15 18:12:00 | 显示全部楼层

谢谢,那个是求两条直线交点的函数,我需要的是求任意两个对象交点的函数

发表于 2009-6-15 18:19:00 | 显示全部楼层
;|;;===========================================================================
      通用函数                                                                ;
功能:求两个线条对象的交点                                                    ;
      适用对象: Line、Circle、Arc、Ellipse、Polyline、                        ;
      LWPolyline、3dPolyline、Spline                                          ;
参数:OBJ1   ----对象1                                                        ;
      OBJ2   ----对象2                                                        ;
      Extend ----延伸选项                                                     ;
                 0  acExtendNone                                              ;
                 1  acExtendThisEntity                                        ;
                 2  acExtendOtherEntity                                       ;
                 3  acExtendBoth                                              ;
      ZZZ    ----输出选项                                                     ;
                 "=0"  Z值取0                                                 ;
...
...




发表于 2009-6-15 18:42:00 | 显示全部楼层

函数调用如下:

(setq interPtVar (vl-catch-all-apply 'vla-intersectwith (list vlaobj1 vlaobj2 acExtend*)))

(if (vl-catch-all-error-p interPtVar)

...

)

发表于 2009-6-15 19:12:00 | 显示全部楼层
学习啦
发表于 2023-10-12 12:08:23 | 显示全部楼层
zml84 发表于 2009-6-15 18:19
;|;;===========================================================================   &#1 ...

大神你好,这个函数好像缺少了TOXY函数,可以提供一下吗,谢谢
发表于 2023-10-12 12:16:37 | 显示全部楼层
hntwty 发表于 2023-10-12 12:08
大神你好,这个函数好像缺少了TOXY函数,可以提供一下吗,谢谢

  1. ;;;=================================================================*
  2. ;;;功能:曲线实体上每个控制点的z坐标值置为0.0                       *
  3. (defun TOXY (OBJ / NAME PT1 TP2 i)
  4.   ;;取得实体的类型名称
  5.   (setq NAME (vla-get-objectname OBJ))
  6.   (cond
  7.     ;;类型1
  8.     ;;直线(line)
  9.     ((= NAME "AcDbLine")
  10.      ;;取得直线的起终点坐标
  11.      (setq PT1 (vlax-variant-value (vla-get-startpoint OBJ))
  12.            PT2 (vlax-variant-value (vla-get-endpoint OBJ))
  13.      )
  14.      ;;改变z值为0.0
  15.      (vlax-safearray-put-element PT1 2 0.0)
  16.      (vlax-safearray-put-element PT2 2 0.0)
  17.      (vla-put-startpoint OBJ PT1)
  18.      (vla-put-endpoint OBJ PT2)
  19.     )
  20.     ;;类型2
  21.     ;;圆(circle)
  22.     ;;圆弧(arc)
  23.     ;;椭圆及椭圆弧(ellipse)
  24.     ((or (= NAME "AcDbCircle")
  25.          (= NAME "AcDbArc")
  26.          (= NAME "AcDbEllipse")
  27.      )
  28.      ;;取得中心点座标
  29.      (setq PT1 (vlax-variant-value (vla-get-center OBJ)))
  30.      ;;改变中心点座标z值为0.0
  31.      (vlax-safearray-put-element PT1 2 0.0)
  32.      (vla-put-center OBJ PT1)
  33.     )
  34.     ;;类型3
  35.     ;;多段线(polyline、lwpolyline)
  36.     ;;拟合的2维多段线(polyline、lwpolyline)
  37.     ((or (= NAME "AcDbPolyline")
  38.          (= NAME "AcDb2dPolyline")
  39.      )
  40.      ;;改变标高值为0.0
  41.      (vla-put-elevation OBJ 0.0)
  42.     )
  43.     ;;类型4
  44.     ;;三维多段线(3dpolyline)  
  45.     ((= NAME "AcDb3dPolyline")
  46.      ;;取得3维多段线的控制点
  47.      (setq PT1 (vlax-variant-value (vla-get-coordinates OBJ))
  48.            I   0
  49.      )
  50.      (repeat (/ (length (vlax-safearray->list PT1)) 3)
  51.        (vlax-safearray-put-element PT1 (+ I 2) 0.0)
  52.        (setq I (+ I 3))
  53.      )
  54.      (vla-put-coordinates OBJ PT1)
  55.     )
  56.     ;;类型5
  57.     ;;样条曲线(Spline)
  58.     ((= NAME "AcDbSpline")
  59.      ;;取得样条曲线的拟合点
  60.      ;;改变每个拟合点的z值为0.0
  61.      (setq PT1 (vlax-variant-value (vla-get-fitpoints OBJ))
  62.            I   0
  63.      )
  64.      (repeat (vla-get-numberoffitpoints OBJ)
  65.        (vlax-safearray-put-element PT1 (+ I 2) 0.0)
  66.        (setq I (+ I 3))
  67.      )
  68.      (vla-put-fitpoints OBJ PT1)
  69.      ;;取得样条曲线的控制点
  70.      ;;改变每个控制点的z值为0.0  
  71.      (setq
  72.        PT2 (vlax-variant-value (vla-get-controlpoints OBJ))
  73.        I   0
  74.      )
  75.      (repeat (vla-get-numberofcontrolpoints OBJ)
  76.        (vlax-safearray-put-element PT2 (+ I 2) 0.0)
  77.        (setq I (+ I 3))
  78.      )
  79.      (vla-put-controlpoints OBJ PT2)
  80.     )
  81.     (t NIL)
  82.   )
  83. ) ;_结束defun
  84. ;;;=================================================================*
发表于 2023-10-12 12:40:05 | 显示全部楼层

能正常使用了,感谢大佬无私奉献
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 06:44 , Processed in 0.164241 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表