明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2857|回复: 13

[提问] 2条平行线闭合成多段线

[复制链接]
发表于 2019-8-1 10:29:35 | 显示全部楼层 |阅读模式
求助:大神。运用lisp后。只能一边闭合,而且多生成了一条直线。希望框选后能直接生成闭合的多段线
        求助修改,谢谢!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2025-6-25 13:51:53 | 显示全部楼层
15617556676 发表于 2019-8-1 15:23
你这个还需要判定一下起点和端点,要不又自相交叉的
  1. (defun c:tt5(/ ss len en1 en2 data1 data2 pt1 pt2 pt3 pt4)
  2.         (prompt "\nSelect 2 lwpolylines:")
  3.         (setq ss (ssget '((0 . "lwpolyline,line"))))
  4.         (setq len (sslength ss))
  5.         (if (/= len 2)
  6.                 (princ "\n不是2根! ---程序退出......")
  7.                 (progn
  8.                         (setq en1 (ssname ss 0) en2 (ssname ss 1))
  9.                         (setq data1 (entget en1) data2 (entget en2))
  10.                         (setq pt1 (cdr (assoc 10 data1)) pt2 (cdr (assoc 11 data1)))
  11.                         (setq pt3 (cdr (assoc 10 data2)) pt4 (cdr (assoc 11 data2)))
  12.                         ;; (PRINT pt1)
  13.                         ;; (PRINT pt2)
  14.                         ;; (PRINT pt3)
  15.                         ;; (PRINT pt4)
  16.                         (setq d1 (distance pt1 pt3))
  17.                         (setq d2 (distance pt1 pt4))
  18.                         (if (< d1 d2)
  19.                                 ((command "line" pt1 pt3 "") (command "line" pt2 pt4 "") )
  20.                                 ((command "line" pt1 pt4 "") (command "line" pt2 pt3 "") )
  21.                         )
  22.                 )
  23.         )
  24.         (princ)
  25. )
回复 支持 反对

使用道具 举报

发表于 2021-7-5 20:52:53 | 显示全部楼层
dasha321 发表于 2021-7-5 15:52
你好,请问这个有源码啊,谢谢,正需要,楼上的不可以框选。

  1. (defun c:tt () ;tt(平行线闭合成多段线)
  2.   (defun abc (l1 l2 / p1 p2 p3 p4 s1 s2)
  3.     (setq p1 (xyp-DXF 10 l1)
  4.           p2 (xyp-DXF 11 l1)
  5.           p3 (xyp-DXF 10 l2)
  6.           p4 (xyp-DXF 11 l2)
  7.     )
  8.     (if        (inters p1 p4 p2 p3 nil)
  9.       (progn
  10.         (setq s1 (xyp-line p1 p3)
  11.               s2 (xyp-line p2 p4)
  12.         )
  13.         (xyp-PeditJoin (xyp-list2ss (list l1 l2 s1 s2)) 0)
  14.       )
  15.       (progn
  16.         (setq s1 (xyp-line p1 p4)
  17.               s2 (xyp-line p2 p3)
  18.         )
  19.         (xyp-PeditJoin (xyp-list2ss (list l1 l2 s1 s2)) 0)
  20.       )
  21.     )
  22.   )
  23.   (if (setq ss (ssget '((0 . "line"))))
  24.     (progn
  25.       (setq lst        (xyp-Ss2List ss)
  26.             lst        (vl-sort lst'(lambda (x y)(< (cadr (xyp-CurveMidPoint x))(cadr (xyp-CurveMidPoint y)))))
  27.             lst        (xyp-List-Div lst 2)
  28.       )
  29.       (mapcar '(lambda (x)(if (= (length x) 2)(abc (car x) (cadr x))))lst)
  30.     )
  31.   )
  32.   (princ)
  33. )
发表于 2019-8-1 15:23:26 | 显示全部楼层
start4444 发表于 2019-8-1 11:02
你那个太繁琐了,简化了一下

你这个还需要判定一下起点和端点,要不又自相交叉的
发表于 2019-8-1 11:02:26 | 显示全部楼层
你那个太繁琐了,简化了一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2019-8-2 00:26:18 | 显示全部楼层
直接PE就好

点评

正解  发表于 2025-6-25 15:18
发表于 2019-8-2 00:28:17 | 显示全部楼层
pe-m-j-距离-
发表于 2019-8-5 22:56:22 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2021-7-5 15:52:13 | 显示全部楼层

你好,请问这个有源码啊,谢谢,正需要,楼上的不可以框选。
发表于 2021-7-5 19:15:24 | 显示全部楼层
你应该想多了,请先了解一下你说的你的楼上是干嘛的
发表于 2021-7-6 15:46:23 | 显示全部楼层

真心地感谢你,再次感谢你。谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-8-12 09:31 , Processed in 0.204811 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表