连接多个pol的端点
尊敬的各位:,我正在寻找一个lisp例程,将多条多段线的端点连接到公共点。我不需要将它们连接成一条多段线,只需在一个点上接触所有内容。
根据选择,我想获得选择中第一条多段线的“主点”,然后将所有其余多段线连接到该点,如附图所示。
干得好。。。
(defun c:foo (/ cp p s x)
;; RJP » 2018-08-15
;; Puts plines and lines closest vertice to a common picked point
(cond
((and (setq p (getpoint "\nPick common point: "))
(setq s (ssget "_:L" '((0 . "LINE,LWPOLYLINE"))))
)
(foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
(setq cp (car (vl-sort (list (vlax-curve-getstartpoint e) (vlax-curve-getendpoint e))
'(lambda (r j) (< (distance r p) (distance j p)))
)
)
)
(entmod (mapcar '(lambda (x)
(cond ((equal (list (car cp) (cadr cp)) (cdr x) 1e- (cons (car x) p))
(x)
)
)
(entget e '("*"))
)
)
)
)
)
(princ)
)
完美的
非常感谢。
我一直在努力使用多段线扩展数据,但没有成功。
您可以修改它,使其也可以应用于多段线吗?
如果需要更多技巧,不要浪费时间。 还有一个-这不包括与WCS不平行的UCS:
(defunc:cpt(/a b e i p q s x)(if(and(setqs(ssget'(-04”“))(setqp(getpoint“\n指定公共点:)(setqp(transp 1 0))(repeat(setqi(1-i)e(ssnames i)x(entgete))(if(“POLYLINE”(cdr(assoc0 x))(progn(setqe(entnexte)x(entgete)a x)(while(=“VERTEX”(cdr(assoc0 x))(setqb x e(entnexte)x(entgete)))(setqq(如果( 你不能也使用约束来维护端点到端点的关系吗? 很好,李
谢谢Ron-你也是-我喜欢你代码的简洁
干杯
Thnks Lee。
它工作得很好 不客气Jozef
页:
[1]