明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1713|回复: 6

[讨论] 如何最快速地清理指定的块?

[复制链接]
发表于 2013-11-24 16:17 | 显示全部楼层 |阅读模式
本帖最后由 mandala 于 2013-11-24 16:22 编辑

是这样的,有一个块“a”已定义,但图纸中无块实体。要清理它可以用
(command "._purge" "b" “a” "n" )

但如果多次要清理这类指定名称的块定义,比如说一个重复1000次的repeat中,每次repeat一开始都生成这个块,最后又得删除这个块,这样用command就很慢,而且每次都提示“正在删除块“a”。已删除 1 个块。”很麻烦。

有更快速的办法吗?需要注意的是要删除(清理)的只是一个块定义,而非块实体。
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-11-24 19:19 | 显示全部楼层
首先可以在repeat前生成块,repeat后去清除它,repeat里边只去insert就行了
当然如果确实有必要在repeat里边来做这件事,那好象没什么太好的办法
 楼主| 发表于 2013-11-24 20:18 | 显示全部楼层
repeat里需要生成这个块定义。
发表于 2013-11-24 22:23 | 显示全部楼层
那就只有想想能不能不用purge而做到清理它了,不然估计没辙
发表于 2013-11-24 22:27 | 显示全部楼层
本帖最后由 llsheng_73 于 2013-11-24 22:30 编辑

疑惑的一点是,在REPEAT里边生成了块,经过一系列处理后又要清理掉这个块定义,也就是说生成的块最终被删了或者炸开了,总之没有实体依赖于这个块定义而存在了,不然也不用清理它,那么就可以不需要清理掉这个块定义而对这个块它重新定义....repeat后再清理它不就结了?
发表于 2013-11-24 22:27 | 显示全部楼层
本帖最后由 Gu_xl 于 2013-11-24 22:29 编辑

  1. ;;删除指定块定义
  2. (defun delBlkdef (name)
  3.   (if (not
  4.         (VL-CATCH-ALL-ERROR-P
  5.           (setq
  6.             obj
  7.              (VL-CATCH-ALL-APPLY
  8.                'vla-item
  9.                (list (vla-get-blocks
  10.                        (vla-get-ActiveDocument (vlax-get-acad-object))
  11.                      )
  12.                      name
  13.                )
  14.              )
  15.           )
  16.         )
  17.       )
  18.     (VL-CATCH-ALL-APPLY 'vla-delete (list obj))
  19.   )
  20. )
发表于 2013-11-24 22:35 | 显示全部楼层
本帖最后由 llsheng_73 于 2013-11-24 22:41 编辑
Gu_xl 发表于 2013-11-24 22:27


G版又出手了,高效,刚才我调用的时候用错了参数,差点以为没能清理掉。。。
好象G版这办法可以删除图层等其它非图元数据
比如(vla-get-blocks改成layers。。。学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-19 20:58 , Processed in 0.251387 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表