删除所有几何体,除非采购订单
脚本:[列表=1]
[*]创建当前图层为“0”且图层“SAMPLE”上具有几何图形的块
[*]在层“0”上插入块
[*]清除所有,除非块在“采样”层上具有几何体
[/列表]
我想我可以简单地锁定并冻结图层“SAMPLE”,然后擦除“ALL”
(command "_.-layer" "_freeze" "SAMPLE" "_lock" "SAMPLE""_off" "SAMPLE" "")
(command "_erase" "all" "")
我想删除整个图形,但图层“SAMPLE”上的任何几何图形除外,即使它是在另一个图层上创建或插入的块的一部分。 尝试以下快速编写的代码:
(defun c:eraseall ( / a b i l r s )
(setq l "SAMPLE") ;; Layer to retain
(while (setq a (tblnext "block" (null a)))
(setq b (tblobjname "block" (cdr (assoc 2 a))))
(while (and b (/= l (strcase (cdr (assoc 8 (entget b))))))
(setq b (entnext b))
)
(if b (setq r (vl-list* "," (cdr (assoc 2 a)) r)))
)
(if (setq s
(ssget "_X"
(cons (cons 8 (strcat "~" l))
(if r
(list
'(-4 . "<NOT")
'(-4 . "<AND")
'(0 . "INSERT")
(cons 2 (apply 'strcat (cdr r)))
'(-4 . "AND>")
'(-4 . "NOT>")
)
)
)
)
)
(repeat (setq i (sslength s))
(entdel (ssname s (setq i (1- i))))
)
(princ "\nNo objects found to erase.")
)
(princ)
) 谢谢李,
我早上第一件事就是试试。
你的代码片段为我节省了很多时间,以至于注释行
来自李Mac编程的“;;;”使我的许多大型项目变得杂乱无章。
再次感谢您对您的编码同事如此友善。
愿你更多地使用空格键而不是退格,愿你的生活充满幸福。 李,
今天早上我尝试了这段代码,但它在我正在努力解决的特定场景中不起作用。
客户已在层“0”上创建并插入块,但从技术上讲,在不同层“SAMPLE”和“SAMPLE2”上具有几何体。
我想删除图形中的所有内容,除了这些层上的任何几何体,即使它们位于插入到不同层上的块内。
我可以全部分解,但如果客户端在层“0”上创建了一个块,但插入到“SAMPLE”上,我也希望保留该示例。
我倾向于使用剪贴板或块来选择我希望保存的所有几何体。。。保存(或阻止)全部擦除,然后插入或粘贴。 以下经过调整的代码应允许您保留带有“SAMPLE”前缀的所有层:
代码似乎在我有限的测试中成功运行,但可能是我误解了您的要求。
代码是否删除了错误的对象,或者忽略了实际上应该删除的对象?
当你说代码“不起作用”时,你能详细说明一下吗-
它是否有任何错误,或者只是没有产生您预期的结果?
顺便说一句,谢谢你对我的工作表示感谢和赞扬——我很高兴听到我在许多项目中为你提供了帮助,即使是间接地通过其他帖子。
李 我想我只是很难描述我的场景。我需要把一张图剪下来,这样剩下的只有几层特定的几何图形和文字。不幸的是,我的客户偶尔会有松散的阻塞行为,要么将东西留在层“0”上,要么嵌套块上。
我认为我的策略是选择并阻止我希望保留的所有项目。
删除所有内容,然后插入我的新块,分解,然后清除。
这是我新选择过程的根。
3
页:
[1]