乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 75|回复: 5

[编程交流] 删除所有几何体,除非采购订单

[复制链接]

7

主题

19

帖子

11

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 23:35:13 | 显示全部楼层 |阅读模式
脚本:
[列表=1]
  • 创建当前图层为“0”且图层“SAMPLE”上具有几何图形的块
  • 在层“0”上插入块
  • 清除所有,除非块在“采样”层上具有几何体
    [/列表]
     
    我想我可以简单地锁定并冻结图层“SAMPLE”,然后擦除“ALL”
     
    1. (command "_.-layer" "_freeze" "SAMPLE" "_lock" "SAMPLE""_off" "SAMPLE" "")
    2. (command "_erase" "all" "")

     
    我想删除整个图形,但图层“SAMPLE”上的任何几何图形除外,即使它是在另一个图层上创建或插入的块的一部分。
  • 回复

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

    铜币
    543
    发表于 2022-7-5 23:57:51 | 显示全部楼层
    尝试以下快速编写的代码:
    1. (defun c:eraseall ( / a b i l r s )
    2.    
    3.    (setq l "SAMPLE") ;; Layer to retain
    4.    
    5.    (while (setq a (tblnext "block" (null a)))
    6.        (setq b (tblobjname "block" (cdr (assoc 2 a))))
    7.        (while (and b (/= l (strcase (cdr (assoc 8 (entget b))))))
    8.            (setq b (entnext b))
    9.        )
    10.        (if b (setq r (vl-list* "," (cdr (assoc 2 a)) r)))
    11.    )
    12.    (if (setq s
    13.            (ssget "_X"
    14.                (cons (cons 8 (strcat "~" l))
    15.                    (if r
    16.                        (list
    17.                           '(-4 . "<NOT")
    18.                               '(-4 . "<AND")
    19.                                   '(0 . "INSERT")
    20.                                    (cons 2 (apply 'strcat (cdr r)))
    21.                               '(-4 . "AND>")
    22.                           '(-4 . "NOT>")
    23.                        )
    24.                    )
    25.                )
    26.            )
    27.        )
    28.        (repeat (setq i (sslength s))
    29.            (entdel (ssname s (setq i (1- i))))
    30.        )
    31.        (princ "\nNo objects found to erase.")
    32.    )
    33.    (princ)
    34. )
    回复

    使用道具 举报

    7

    主题

    19

    帖子

    11

    银币

    初来乍到

    Rank: 1

    铜币
    40
    发表于 2022-7-6 00:07:18 | 显示全部楼层
    谢谢李,
    我早上第一件事就是试试。
    你的代码片段为我节省了很多时间,以至于注释行
    来自李Mac编程的“;;;”使我的许多大型项目变得杂乱无章。
     
    再次感谢您对您的编码同事如此友善。
    愿你更多地使用空格键而不是退格,愿你的生活充满幸福。
    回复

    使用道具 举报

    7

    主题

    19

    帖子

    11

    银币

    初来乍到

    Rank: 1

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

    使用道具 举报

    114

    主题

    1万

    帖子

    1万

    银币

    中流砥柱

    Rank: 25

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

    使用道具 举报

    7

    主题

    19

    帖子

    11

    银币

    初来乍到

    Rank: 1

    铜币
    40
    发表于 2022-7-6 00:44:22 | 显示全部楼层
    我想我只是很难描述我的场景。我需要把一张图剪下来,这样剩下的只有几层特定的几何图形和文字。不幸的是,我的客户偶尔会有松散的阻塞行为,要么将东西留在层“0”上,要么嵌套块上。
    我认为我的策略是选择并阻止我希望保留的所有项目。
    删除所有内容,然后插入我的新块,分解,然后清除。
     
    这是我新选择过程的根。
    1. 3
    回复

    使用道具 举报

    发表回复

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

    QQ|关于我们|小黑屋|乐筑天下 繁体中文

    GMT+8, 2025-3-11 00:28 , Processed in 0.562734 second(s), 64 queries .

    © 2020-2025 乐筑天下

    联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表