我之前对此感到内疚:
--->
^
我很感激;但不是所有的块,我只需要选定的(按层)块。
谢谢
(defun ss_id ( ss / id lst )
(if (eq 'PICKSET (type ss))
(repeat (setq id (sslength ss))
(setq lst
(cons
(ssname ss (setq id (1- id)))
lst
)
)
)
)
lst
)
(defun c:test ( / ss )
(if
(setq ss
(ss_id (ssget (list (cons 0 "insert"))))
;| (ssget (list (cons 0 "insert") (cons 8 "0") ))
will only select blocks in "0" layer |;
)
(foreach x ss
(entmake
(list
(cons 0 "point")
(cons 8 (getvar 'clayer))
(assoc 10 (entget x))
)
)
(entdel x)
)
)
(princ)
) 丹,
请注意,您可以通过只迭代一次SelectionSet来提高代码的效率:
(defun c:ins2pts ( / ss e i )
(if (setq ss (ssget "_:L" '((0 . "INSERT"))))
(repeat (setq i (sslength ss)) (setq e (ssname ss (setq i (1- i))))
(if
(entmakex
(list
(cons 0 "POINT")
(assoc 8 (entget e))
(cons 10 (trans (cdr (assoc 10 (entget e))) e 0))
(assoc 210 (entget e))
)
)
(entdel e)
)
)
)
(princ)
) 你好
但我需要上面的一层选择,因为我有不同的块名
谢谢
amr公司
你说的分层是什么意思?
没错,但是像这样的小任务,你永远不会注意到速度上的差异。我发现这样的设置更容易快速编程
@卡德马拉奥
请参阅我在上面代码中的红色评论。 小调整。。。
(defun c:ins2pts (/ ss i e d)
(if (setq ss (ssget "_:L" '((0 . "INSERT"))))
(repeat (setq i (sslength ss))
(if (entmakex (list '(0 . "POINT")
(assoc 8 (setq d (entget (setq e (ssname ss (setq i (1- i)))))))
(cons 10 (trans (cdr (assoc 10 d)) e 0))
(assoc 210 d)
)
)
(entdel e)
)
)
)
(princ)
) 有人很无聊。。。 不,刚才看到了这个线程,我想我会详细介绍一下您的示例,以删除同一对象上的多个实体转储。
页:
1
[2]