求助如何框选使两条不平行的多义线相交但不闭合
如题,在工程设计中经常要用到,请高手帮帮忙。现在经常是两条线延伸,然后剪切掉两头多余的线,或者是倒直角,然后打断闭合多义线,这样都不方便,在论坛找了找也没有这方面的东西。 ;;;1、只有一边会相交,若可能双边的话自加判断;;;2、可以用pedit命令连接断线,自理
(defun c:tt(/ SS interp)
(setq ss(ssget))
(setq interp
(vlax-safearray->list
(vlax-variant-value
(vla-IntersectWith
(vlax-ename->vla-object (setq e1(ssname ss 0)))
(vlax-ename->vla-object (setq e2(ssname ss 1)))
acExtendBoth
)
)
)
)
(entmake (list(CONS 0 "LINE")(cons 10(vlax-curve-getclosestpointto e1 interp))(cons 11 interp)))
(entmake (list(CONS 0 "LINE") (cons 10(vlax-curve-getclosestpointto e2 interp))(cons 11 interp)))
(PRINC)
)
谢谢yjr111 老大,我试了一下程序,可以将两条不相交的多义线线连接起来,但是连接的方法是重新画了两条细线,不是原来多义线的宽度,且与原来的多义线是断开的。最好能达到像两条不相交的线延伸相交,但是不闭合,谢谢了! ;;;仅适用多段线
(defun c:tt(/ SS interp)
(setq ss(ssget))
(setq interp(vlax-safearray->list(vlax-variant-value(vla-IntersectWith
(vlax-ename->vla-object (setq e1(ssname ss 0)))
(vlax-ename->vla-object (setq e2(ssname ss 1)))
acExtendBoth
))))
(setq s1(entget e1)s2(entget e2))
(mapcar '(lambda(x)
(equal x (vlax-curve-getclosestpointto e1 interp)1e-3)
(entmod (subst (cons 10 interp) x s1))
)
s1
)
(mapcar '(lambda(x)
(equal x (vlax-curve-getclosestpointto e2 interp)1e-3)
(entmod (subst (cons 10 interp) x s2))
)
s2
)
(PRINC)
) 谢谢yjr111,您的程序已经完全可以解决我的问题了,这样平时画流程图的时候快多了,再次感谢。。只是两条多义线连接后,每条相交线变成了中间有端点的两条线连接起来的,看着有点别扭。当然,程序不影响使用,也不影响美观和整体效果,可能是个人比较挑剔,呵呵,再次表示感谢!
页:
[1]