线段端点连接源码分享
(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************完成连线*********")
)
(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)
) longer1000 发表于 2019-7-12 17:08
怎么用不了呢?
{:1_1:}代码的思路很清晰明了,钻石会员应该瞅一眼自己就能发现问题了 代码的思路很清晰明了,线的方向必须一致。 谢谢! 雨的节奏 分享程序!!!!! 谢谢了,你的代码很短,我也有这样一个功能但是代码很长 你好你那个是什么工具箱能分享下吗 不错,有点意思!!! 怎么用不了呢? 代码不错,要是再考虑一下线的方向就更好了 这种大多情况都是双线,可以直接框选吗?
页:
[1]
2