其他lisperati将收集您的帖子并帮助您解决问题。 谢谢你堆 您在第一篇文章中提到,对象是线,这就是为什么我只包括线和实体。
无论如何,试试这个更新版本,也包括多段线。
(defun c:Test (/ ss i sn l) (vl-load-com)
(if (setq ss (ssget "_:L" '((0 . "LINE,*POLYLINE"))))
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i))))
(if (eq (cdr (assoc 0 (entget sn))) "LINE")
(setq l (distance (cdr (assoc 10 (entget sn)))
(cdr (assoc 11 (entget sn)))
)
)
(setq
l (vlax-curve-getdistatparam
sn
(fix (vlax-curve-getendparam sn))
)
)
)
(if (or (eq l 1.25) (eq l 3.0) (and (> l 1.25) (< l 3.0)))
(entdel sn)
)
)
)
(princ)
) 另一个变体:
(defun c:eraselines ( / s )
(if (ssget "_:L" '((0 . "LINE,*POLYLINE")))
(progn
(vlax-for o
(setq s
(vla-get-activeselectionset
(vla-get-activedocument (vlax-get-acad-object))
)
)
(if (<= 1.25 (vla-get-length o) 3.0) (vla-delete o))
)
(vla-delete s)
)
)
(princ)
)
(vl-load-com) (princ)
(defun c:Test (/ ss i sn l)
(vl-load-com)
(if (setq ss (ssget "_:L" '((0 . "LINE,*POLYLINE"))))
(repeat (setq i (sslength ss))
(setq sn (ssname ss (setq i (1- i))))
(if (eq (cdr (assoc 0 (entget sn))) "LINE")
(setq l (distance (cdr (assoc 10 (entget sn))) (cdr (assoc 11 (entget sn)))))
(setq l (vlax-curve-getdistatparam sn (fix (vlax-curve-getendparam sn))))
)
(if (or (eq l 0.5) (eq l 1.25) (eq l 1.5) (eq l 3.0))
(entdel sn)
)
)
)
(princ)
)
Tharwat、Lee Mac、,
你们俩都很聪明,非常感谢你们,两个动作都很完美。。。。。。。。然而我知道我很抱歉我还有一个问题,
在所附的图像中,LISP不会删除这些行。。。。。它们的长度为3.0,但似乎是椭圆外观的非闭合/连接多段线类型,有一个区域,无论我是否闭合它们并禁用线型,lisp仍然不会删除这些多段线(当我选择对象时,它会在“属性”框中告诉我它们是多段线)。
你知道为什么吗?
如果没有,不用担心,你们俩和达加德都帮了大忙。
干杯
艾米丽
37068 由于某种原因,我无法查看图像Emily,当单击您的附件时,我收到以下消息:
你能附上一张样图吗?
这里也是一样。
Same thing here .
页:
1
[2]