[求助]:lisp 已知直线,最短距离连线
在cad里面已知平行的直线或不平行(之间不相交),怎样进行首尾最短距离连线,最后合成一条pline线。见图片。本帖最后由 ZZXXQQ 于 2011-1-10 22:21 编辑
;直线端点最近点连线 明经 ZZXXQQ 2011.1.9
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq s1 (entsel "\n选择第一条直线 :"))
(setq s2 (entsel "\n选择第二条直线 :"))
(setq ent1 (entget(car s1)))
(setq ent2 (entget(car s2)))
(= (cdr(assoc 0 ent1)) (cdr(assoc 0 ent2)) "LINE")) (progn
(setq pt1 (cdr(assoc 10 ent1))
pt2 (cdr(assoc 11 ent1))
pt3 (cdr(assoc 10 ent2))
pt4 (cdr(assoc 11 ent2)))
(if (inters pt1 pt4 pt2 pt3)
(if (> (distance pt1 pt3) (distance pt2 pt4))
(command ".LINE" pt2 pt4 "")
(command ".LINE" pt1 pt3 "")
)
(if (> (distance pt1 pt4) (distance pt2 pt3))
(command ".LINE" pt2 pt3 "")
(command ".LINE" pt1 pt4 "")
)
)
))
(setvar "CMDECHO" 1)
(princ)
)
谢谢zzxxqq。代码,测试结果:
选择第一条直线 :
选择第二条直线 :; 错误: 参数太少
我用的是2004版,请帮忙看看,那个地方问题 ...参数太少...
(= (cdr(assocent1)) (cdr(assocent2)) "LINE")
==>
(= (cdr(assoc 0 ent1)) (cdr(assoc 0 ent2)) "LINE") 谢谢Andyhon。2楼已改。 感谢z版程序
收藏学了! 是个好程序,谢谢斑竹 ZZXXQQ 发表于 2011-1-10 22:26 static/image/common/back.gif
谢谢Andyhon。2楼已改。
请问版主:我将程序中的LINE改为LWPOLYLINE后,运行不能实现线条的连接,请问如果是连接LWPOLYLINE线,程序代码要做哪方面的修改?
请指教
谢谢 好好好好学习中 应该是很好的程序,可惜我浏览不到~