本帖最后由 llsheng_73 于 2025-4-24 18:20 编辑
好象都有点问题,第一个是强行要求两个圆弧端点重合,不然不进行行判断
院长只计算圆心距与半径和(差)比较,没有管它们实际有无切点
无聊用院长的代码加上判断两ARC有无交点作为是否进一步计算的依据
 - (defun c:ACA(/ e1 e2 s1 s2 r1 r2 dd)
- (vl-load-com)
- (if (and (setq e1 (car (entsel "\n选择第一条弧<退出>: ")))
- (vl-position'(0 . "ARC")(setq s1(entget e1)))
- (setq e2 (car (entsel "\n选择第二条弧<退出>: ")))
- (vl-position'(0 . "ARC")(setq s2(entget e2)))
- (not(equal e1 e2))
- (>(vlax-safearray-get-u-bound(vlax-variant-value(vlax-invoke-method(vlax-ename->vla-object e1)'IntersectWith(vlax-ename->vla-object e2)0))1)0)
- (setq r1(cdr(assoc 40 s1))
- r2(cdr(assoc 40 s2))
- dd(distance(cdr(assoc 10 s1))(cdr(assoc 10 s2))))
- (vl-some'(lambda(x)(equal dd(eval x)1e-6))'((+ r1 r2)(abs(- r1 r2)))))
- (alert "两弧相切")
- (alert "两弧不相切"))
- )
|