hhh454 发表于 2011-1-8 14:28:11

[求助]:lisp 已知直线,最短距离连线

在cad里面已知平行的直线或不平行(之间不相交),怎样进行首尾最短距离连线,最后合成一条pline线。见图片。

ZZXXQQ 发表于 2011-1-8 14:28:12

本帖最后由 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)
)

hhh454 发表于 2011-1-10 08:36:56

谢谢zzxxqq。代码,测试结果:
选择第一条直线 :
选择第二条直线 :; 错误: 参数太少
我用的是2004版,请帮忙看看,那个地方问题

Andyhon 发表于 2011-1-10 11:42:45

...参数太少...
(= (cdr(assocent1)) (cdr(assocent2)) "LINE")
==>
(= (cdr(assoc 0 ent1)) (cdr(assoc 0 ent2)) "LINE")

ZZXXQQ 发表于 2011-1-10 22:26:13

谢谢Andyhon。2楼已改。

yoyoho 发表于 2011-1-12 12:05:42

感谢z版程序
收藏学了!

xiaxiang 发表于 2011-1-12 15:33:20

是个好程序,谢谢斑竹

461045462 发表于 2011-2-13 17:20:13

ZZXXQQ 发表于 2011-1-10 22:26 static/image/common/back.gif
谢谢Andyhon。2楼已改。

请问版主:我将程序中的LINE改为LWPOLYLINE后,运行不能实现线条的连接,请问如果是连接LWPOLYLINE线,程序代码要做哪方面的修改?
请指教
谢谢

sfae 发表于 2011-2-21 11:24:44

好好好好学习中

xy829475 发表于 2011-2-27 09:26:50

应该是很好的程序,可惜我浏览不到~
页: [1] 2 3
查看完整版本: [求助]:lisp 已知直线,最短距离连线