乐筑天下

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

[编程交流] 检查是否可以删除块

[复制链接]

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:45:34 | 显示全部楼层
 
我认为这只适用于外部参照,不是吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:46:49 | 显示全部楼层
也许是最简单的检查方法:
 
  1. (defun purge (bNme)  
  2. (and (tblsearch "BLOCK" bNme)
  3.       (setvar "CMDECHO" 0)
  4.       (vl-cmdf "_.-purge" "_b" bNme "_n")
  5.       (setvar "CMDECHO" 1)
  6.       (not (tblsearch "BLOCK" bNme))))
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 12:51:02 | 显示全部楼层
可能这就足够了,李,可能是清除可能已经有一个内置的捕捉错误,这就是为什么它只报告一条消息,这毕竟不是一个毫无意义的清除。
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 12:54:27 | 显示全部楼层
 
看起来这是另一个多年来发生变化的1。它曾一度遵循标准的70组标志代码-大卫
 
来自R13帮助文件
 
70块类型位编码标志
1=这是通过图案填充、关联标注、其他内部操作或应用程序生成的匿名块
2=此块具有属性定义
4=此块是外部参照(xref)
8=此块是外部参照覆盖
16=该块依赖于外部
32=这是已解析的外部引用,或依赖于外部引用(在输入时忽略)
64=引用此定义(输入时忽略)
 
版权所有©1995 Autodesk,股份有限公司。
回复

使用道具 举报

15

主题

209

帖子

121

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 12:58:27 | 显示全部楼层
下面是我使用的JimmyB的一个:
 
  1. ;; Check to see if the block is used and purge it
  2. ;; Method Thanks to Jimmy Bergmark
  3. (if
  4. (vl-catch-all-error-p
  5.         (vl-catch-all-apply
  6.                 'vla-delete
  7.                 (list (vl-catch-all-apply
  8.                                 'vla-item
  9.                                 (list (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) X)
  10.                         )
  11.                 )
  12.         )
  13. )
  14. nil         ; name cannot be purged or doesn't exist
  15. )
回复

使用道具 举报

1

主题

316

帖子

311

银币

初来乍到

Rank: 1

铜币
29
发表于 2022-7-6 13:02:05 | 显示全部楼层
谢谢蒂姆,它的工作,但嵌套块它的失败。即使父块已清除,也无法清除子块。
回复

使用道具 举报

3

主题

19

帖子

16

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-6 13:06:38 | 显示全部楼层
嗨,谢谢你的建议。这不容易,是吗?
 
我想我将使用vanilla lisp返回一些基本逻辑,以使其与AutoCAD14兼容。
 
我将使用:
  1. (if (and (tblsearch "BLOCK" bname)
  2.      (not (ssget "X" (cons '(0 . "INSERT") (list (cons 2 bname)))))
  3. )

这将检查块是否存在,以及它是否未直接插入到图形中。
 
然后,我将检查assoc 70代码,以确保块不是外部参照、外部相关等。
 
然后,如果块存在、未直接插入、不是外部参照等,我将发出purge命令。
  1. (command "PURGE" "B" bname)

然后我将再次使用:(tblsearch“BLOCK”bname),如果块仍然存在,我将得出它是嵌套的结论。
 
这听起来合理吗?
 
拉祖
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 13:09:38 | 显示全部楼层
没错,这不能解释嵌套,但我认为这可能是你最好的选择。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 07:05 , Processed in 0.762142 second(s), 66 queries .

© 2020-2025 乐筑天下

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