查找未闭合的多段线
如何将其与打印或警报一起列出,“我的DWG”中未闭合的所有多段线? 试试这个,它会高亮显示开放的多段线。
(defun c:test (/ ss x sn lst l)
(vl-load-com)
(if (setq
ss (ssget "_x"
(list '(0 . "*POLYLINE") (cons 410 (getvar 'ctab)))
)
)
(repeat (setq x (sslength ss))
(setq sn (ssname ss (setq x (1- x))))
(if (not (vlax-curve-isclosed sn))
(setq lst (cons sn lst))
)
)
)
(setq l (ssadd))
(sssetfirst nil (foreach x lst (ssadd x l)))
(princ)
) (defun c:hipl nil
(sssetfirst nil
(ssget "_X" '((0 . "*POLYLINE,SPLINE")
(-4 . "<NOT")(-4 . "<OR")
(70 . 1) (70 . 9)(70 . 129)
(-4 . "OR>")(-4 . "NOT>")
)
)
)(princ)
) 如果我们采用Tharvat代码,并假设它有时不是正确闭合的多段线(相同的起点和终点),则如下所示:
(defun c:test (/ ss x sn lst l)
(vl-load-com)
(if (setq
ss (ssget "_x"
(list '(0 . "*POLYLINE") (cons 410 (getvar 'ctab)))
)
)
(repeat (setq x (sslength ss))
(setq sn (ssname ss (setq x (1- x))))
(if (or
(vlax-curve-isclosed sn)
(equal (vlax-curve-getStartPoint sn)
(vlax-curve-getEndPoint sn)
)
)
(ssdel sn ss)
)
)
)
(sssetfirst nil ss)
(princ)
) hmmmn让我想知道OP计划如何处理选定的PLINE
也许是这样:
(defun c:hipl ( / p b e)
(vl-load-com)
(if (setq p (ssget "_X" '((0 . "*POLYLINE,SPLINE")
(-4 . "<NOT")(-4 . "<OR")
(70 . 1) (70 . 9)(70 . 129)
(-4 . "OR>")(-4 . "NOT>")
)
)
)
(repeat (setq b (sslength p))
(setq e (ssname p (setq b (1- b))))
(if (equal (vlax-curve-getStartPoint e)
(vlax-curve-getEndPoint e))
(vla-put-closed (vlax-ename->vla-object e) :vlax-true)
)
)
)
(princ)
)
以相同的起点和终点闭合PLINE。 (defun c:selectopenpolylines ( )
(sssetfirst nil (ssget "_X" '((0 . "*POLYLINE") (-4 . "<NOT") (-4 . "&=") (70 . 1) (-4 . "NOT>"))))
(princ)
)
(Defun C:ChkPl(/ old_var plcntr pllen ssnme ent)
(setq old_var(Getvar "CMDECHO"))
(setvar "CMDECHO" 0)
(if (setq plset(ssget "x" '((0 . "POLYLINE"))))
(progn
(setq plcntr 0)
(setq pllen(sslength plset))
(repeat pllen
(setq ssnme(ssname plset plcntr))
(setq Ent(entget ssnme))
(if (/= (cdr (assoc 70 ent)) 9)
(Vl-Cmdf "CHPROP" ssnme "" "C" "1" "")
)
(setq plcntr(1+ plcntr))
)
)
(princ "\nNo POLYLINES Found in Drawing!:")
)
(setvar "CMDECHO" old_var)
(princ)
)
快乐计算 谢谢大家的帮助
页:
[1]