雨的节奏 发表于 2019-7-9 13:30:17

线段端点连接源码分享


(defun c:ggqj (/ pl1 pl2 PT-LST1 PT-LST2)
(command "._undo" "begin")
(setvar "cmdecho" 0)
(setq pl1 (car (entsel "\n选择原始轮廓线"))
      pl2 (car (entsel "\n选择要连接的轮廓线")))
;;然后得到点表,再连接起来
(setq PT-LST1 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (or (= (car x) 10)(= (car x) 11))) (entget pl1))))
(setq PT-LST2 (mapcar 'cdr (vl-remove-if-not '(lambda (x) (or (= (car x) 10)(= (car x) 11))) (entget pl2))))
(mapcar '(lambda (x y) (entmake (list '(0 . "LINE") (cons 10 x) (cons 11 y)))) PT-LST1 PT-LST2)
(command "._undo" "end")
(princ "\n************完成连线*********")
)

tangjunasd58 发表于 2019-7-10 00:53:09

(defun c:WMJX ( / i pts s1 ss x)
(mx-Start)
(setq x-jdjj (mx-dist "瓦面线对角节点间距" x-jdjj 600))
(mapcar
    'mx-set
    '("cmdecho" "osmode")
    '(0 0)
);15359
(princ "\n请框选多段线")
(if (setq ss (ssget '((0 . "lwpolyline"))))
    (progn
      (setq i (sslength ss))
      (while (setq s1 (ssname ss (setq i (1- i))))
        (setq pts(cons (mx-Polyline-GetVertices s1) pts))
      )
      (setq pts(apply 'append pts)
            pts(mapcar(function(lambda(x) (list x x))) pts)
      )
      (mapcar(function(lambda(x)
      (if(= (length x) 2)(mx-Line-Make (car x) (cadr x)))))
      (mx-Pts-GroupByDist pts x-jdjj);点表根据间距分组
      )
    )
)
(mx-End)
)

雨的节奏 发表于 2019-7-12 21:09:05

longer1000 发表于 2019-7-12 17:08
怎么用不了呢?

{:1_1:}代码的思路很清晰明了,钻石会员应该瞅一眼自己就能发现问题了

xvjiex 发表于 2020-8-26 21:16:23

代码的思路很清晰明了,线的方向必须一致。

yoyoho 发表于 2019-7-9 15:52:07

谢谢! 雨的节奏 分享程序!!!!!

tangjunasd58 发表于 2019-7-10 00:47:04

谢谢了,你的代码很短,我也有这样一个功能但是代码很长

664571221 发表于 2019-7-10 09:04:57

你好你那个是什么工具箱能分享下吗

panliang9 发表于 2019-7-11 08:47:08

不错,有点意思!!!

longer1000 发表于 2019-7-12 17:08:47

怎么用不了呢?

凨仴黯夜 发表于 2019-7-13 10:53:22

代码不错,要是再考虑一下线的方向就更好了

chenqiang26 发表于 2019-7-13 14:23:46

这种大多情况都是双线,可以直接框选吗?
页: [1] 2
查看完整版本: 线段端点连接源码分享