Small Fish 发表于 2022-7-6 12:22:21

交点

我有一个大概是圆形的形状,有一条线穿过它,所以有两个交点。我想找到这些交点的2个值,这是怎么做到的?
我已经写了下面的代码,但是pt1是一个变体(2个值),我想要2个单独的值。这是怎么做到的?
谢谢
 
(setq    enaPline(car (entsel "\nSelect shape : ")))
          ObjName1 (vlax-ename->vla-object enaPline))
          enaLine(car (entsel "\nSelect line : ")))
          ObjName2 (vlax-ename->vla-object enaLine))
          Pt1    (vlax-safearray->list
(vlax-variant-value
(vla-IntersectWith ObjName1 ObjName2 acExtendNone))))

MSasu 发表于 2022-7-6 12:51:02

首先,请注意你的代码有很多不平衡的右括号(每行一个)!
 
其次,使用上述方法减去所需的子列表(根据需要重命名变量):

(setq InsPoint1st (list (car Pt1) (cadr Pt1) (caddr Pt1))
   InsPoint2nd (cdddr Pt1))

 
当做

ronjonp 发表于 2022-7-6 13:04:41

假设只有两个相交点。。。下面是另一种方法:
 
(setq enapline (car (entsel "\nSelect shape : "))
   objname1 (vlax-ename->vla-object enapline)
   enaline(car (entsel "\nSelect line : "))
   objname2 (vlax-ename->vla-object enaline)
   pts      (vlax-invoke objname1 "intersectwith" objname2 acextendnone)
   pt1      (reverse (cdddr (reverse pts)))
   pt2      (cdddr pts)
)

Small Fish 发表于 2022-7-6 13:24:24

非常感谢-效果很好
干杯SM
页: [1]
查看完整版本: 交点