高手帮解决下,判断线收尾连接,希望对其他线形起作用
(defun c:ccc()(if (setq ssa (ssget '((0 . "LINE"))))
(progn
(setq ptb nili -1)
(repeat (sslength ssa)
(setq dxf (entget (ssname ssa (setq i (1+ i))))
p10 (cdr (assoc 10 dxf))
p11 (cdr (assoc 11 dxf))
ptb (cons p11 (cons p10 ptb))
)
)
(setq jgb nil fhz nil)
(while (setq pt(car ptb)
ptb (cdr ptb)
)
(if (member pt ptb)
(setq ptb (vl-remove pt ptb)
fhz (cons pt fhz)
)
(setq jgb (cons pt jgb))
)
)
(mapcar '(lambda(x) (command "_circle" x 50)) jgb)
;变量tymlb储存刚好首尾相接直线的图元名列表
(setq tymlb nil)
(foreach pt fhz
(setq ssa (ssget "c" pt pt '((0 . "LINE")))
i -1
)
(repeat (sslength ssa)
(if (not (member (setq ent (ssname ssa (setq i (1+ i)))) tymlb))
(setq tymlb (cons ent tymlb))
)
)
)
)
)
(princ)
) 本帖最后由 llsheng_73 于 2023-3-9 15:17 编辑
不管什么线(CIRCLE,ELLIPSE,xline,ray等无所谓起止的除外),提取起点和止点,然后找出容差范围内只出现过一次的点,画圆
(defun c:tt(/ s a pt e n)
(and(or(setq a(getreal"容差"))(setq a 1e-3))
(setq s(ssget'((0 . "*polyline,line,arc,ellipse,spline"))))
(while(setq e(ssname s 0))
(ssdel e s)
(setq pt(vl-list*(vlax-curve-getstartpoint e)(vlax-curve-getendpoint e)pt)))
(while pt(setq n(length pt))
(if(=(1- n)(length(setq e(car pt)pt(vl-remove-if(function(lambda(x)(equal x e a)))(cdr pt)))))
(entmakex(list'(0 . "circle")'(62 . 1)(cons 10 e)'(40 . 1)))))))
非常不错的代码,谢谢楼主分享啊。 希望能标出连接线两端,对line,pline,arc,cire等都有效。。不知道我说的大家理解吗 那样的话,在画图的时候就可以在标出的地方处理了。。要不量太大。。。 本帖最后由 egoroom 于 2012-7-3 13:10 编辑
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=90624
这是原文连接,望解决。。。
上传个您认为具代表性的 Dwg文件 用作探讨呗 您看下。。现在只对直线起作用 egoroom 发表于 2012-7-3 13:52 static/image/common/back.gif
您看下。。现在只对直线起作用
应该是连接的线,不论直线或者其他线形。。在图形的首尾加个标注。
串接的话,如此即可
=================
Command: Pedit
Select polyline or : M
Select objects: Specify opposite corner: 7 found
Select objects:
Enter an option : J
Join Type = Extend
Enter fuzz distance or <0.0000>: 0.0001
6 segments added to polyline
Enter an option :
fuzz distance 依需求而定 本帖最后由 egoroom 于 2012-7-3 14:30 编辑
Andyhon 发表于 2012-7-3 14:22 http://bbs.mjtd.com/static/image/common/back.gif
串接的话,如此即可
=================
Command: Pedit
你好,不是串接。。是为了标出连接线的首尾,就是上面我给的lsp,但他的那个只能标注直线----
弧线连接就有问题了。。。
Andyhon 发表于 2012-7-3 14:22 static/image/common/back.gif
串接的话,如此即可
=================
Command: Pedit
你好,不是串接。。是为了标出连接线的首尾,就是上面我给的lsp,但他的那个只能标注直线----
弧线连接就有问题了。。。麻烦你帮看一下。。