脚印2012 发表于 2019-8-1 10:29:35

2条平行线闭合成多段线

求助:大神。运用lisp后。只能一边闭合,而且多生成了一条直线。希望框选后能直接生成闭合的多段线
      求助修改,谢谢!

start4444 发表于 2019-8-1 11:02:26

你那个太繁琐了,简化了一下

15617556676 发表于 2019-8-1 15:23:26

start4444 发表于 2019-8-1 11:02
你那个太繁琐了,简化了一下

你这个还需要判定一下起点和端点,要不又自相交叉的

tangjunasd58 发表于 2019-8-2 00:26:18

直接PE就好

tangjunasd58 发表于 2019-8-2 00:28:17

pe-m-j-距离-

xyp1964 发表于 2019-8-5 22:56:22


dasha321 发表于 2021-7-5 15:52:13

xyp1964 发表于 2019-8-5 22:56


你好,请问这个有源码啊,谢谢,正需要,楼上的不可以框选。

xj6019 发表于 2021-7-5 19:15:24

你应该想多了,请先了解一下你说的你的楼上是干嘛的

xyp1964 发表于 2021-7-5 20:52:53

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

(defun c:tt () ;tt(平行线闭合成多段线)
(defun abc (l1 l2 / p1 p2 p3 p4 s1 s2)
    (setq p1 (xyp-DXF 10 l1)
          p2 (xyp-DXF 11 l1)
          p3 (xyp-DXF 10 l2)
          p4 (xyp-DXF 11 l2)
    )
    (if        (inters p1 p4 p2 p3 nil)
      (progn
        (setq s1 (xyp-line p1 p3)
              s2 (xyp-line p2 p4)
        )
        (xyp-PeditJoin (xyp-list2ss (list l1 l2 s1 s2)) 0)
      )
      (progn
        (setq s1 (xyp-line p1 p4)
              s2 (xyp-line p2 p3)
        )
        (xyp-PeditJoin (xyp-list2ss (list l1 l2 s1 s2)) 0)
      )
    )
)
(if (setq ss (ssget '((0 . "line"))))
    (progn
      (setq lst        (xyp-Ss2List ss)
          lst        (vl-sort lst'(lambda (x y)(< (cadr (xyp-CurveMidPoint x))(cadr (xyp-CurveMidPoint y)))))
          lst        (xyp-List-Div lst 2)
      )
      (mapcar '(lambda (x)(if (= (length x) 2)(abc (car x) (cadr x))))lst)
    )
)
(princ)
)

dasha321 发表于 2021-7-6 15:46:23

xyp1964 发表于 2021-7-5 20:52


真心地感谢你,再次感谢你。谢谢
页: [1] 2
查看完整版本: 2条平行线闭合成多段线