TuFoFi 发表于 2022-7-5 23:35:13

删除所有几何体,除非采购订单

脚本:
[列表=1]
[*]创建当前图层为“0”且图层“SAMPLE”上具有几何图形的块
[*]在层“0”上插入块
[*]清除所有,除非块在“采样”层上具有几何体
[/列表]
 
我想我可以简单地锁定并冻结图层“SAMPLE”,然后擦除“ALL”
 
(command "_.-layer" "_freeze" "SAMPLE" "_lock" "SAMPLE""_off" "SAMPLE" "")
(command "_erase" "all" "")
 
我想删除整个图形,但图层“SAMPLE”上的任何几何图形除外,即使它是在另一个图层上创建或插入的块的一部分。

Lee Mac 发表于 2022-7-5 23:57:51

尝试以下快速编写的代码:
(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)
)

TuFoFi 发表于 2022-7-6 00:07:18

谢谢李,
我早上第一件事就是试试。
你的代码片段为我节省了很多时间,以至于注释行
来自李Mac编程的“;;;”使我的许多大型项目变得杂乱无章。
 
再次感谢您对您的编码同事如此友善。
愿你更多地使用空格键而不是退格,愿你的生活充满幸福。

TuFoFi 发表于 2022-7-6 00:15:41

李,
今天早上我尝试了这段代码,但它在我正在努力解决的特定场景中不起作用。
客户已在层“0”上创建并插入块,但从技术上讲,在不同层“SAMPLE”和“SAMPLE2”上具有几何体。
我想删除图形中的所有内容,除了这些层上的任何几何体,即使它们位于插入到不同层上的块内。
我可以全部分解,但如果客户端在层“0”上创建了一个块,但插入到“SAMPLE”上,我也希望保留该示例。
 
我倾向于使用剪贴板或块来选择我希望保存的所有几何体。。。保存(或阻止)全部擦除,然后插入或粘贴。

Lee Mac 发表于 2022-7-6 00:25:29

以下经过调整的代码应允许您保留带有“SAMPLE”前缀的所有层:
 
代码似乎在我有限的测试中成功运行,但可能是我误解了您的要求。
 
代码是否删除了错误的对象,或者忽略了实际上应该删除的对象?
 
当你说代码“不起作用”时,你能详细说明一下吗-
它是否有任何错误,或者只是没有产生您预期的结果?
 
顺便说一句,谢谢你对我的工作表示感谢和赞扬——我很高兴听到我在许多项目中为你提供了帮助,即使是间接地通过其他帖子。
 

TuFoFi 发表于 2022-7-6 00:44:22

我想我只是很难描述我的场景。我需要把一张图剪下来,这样剩下的只有几层特定的几何图形和文字。不幸的是,我的客户偶尔会有松散的阻塞行为,要么将东西留在层“0”上,要么嵌套块上。
我认为我的策略是选择并阻止我希望保留的所有项目。
删除所有内容,然后插入我的新块,分解,然后清除。
 
这是我新选择过程的根。
3
页: [1]
查看完整版本: 删除所有几何体,除非采购订单