明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 740|回复: 4

[提问] 如何删除一个已知块名的块?

[复制链接]
发表于 2023-4-2 15:27:42 | 显示全部楼层 |阅读模式




  如何删除一个已知块名的块?例如:我想删除名字为Axis-01块,用purge可以是可以,如下面的这个语句,但是这种语句多的话,执行好慢啊。还有什么更快的方法吗? 谢谢。
  • (command "-purge" "B" "Axis-01" "N")
发表于 2023-4-2 16:19:50 | 显示全部楼层
  1. ;;36 [功能] 删除指定名的所有块
  2. ;; (MJ:EraseBlock "BTL");删除名叫"BTL"的所有块
  3. (defun MJ:EraseBlock (bn / layout i)
  4.   (vlax-for layout *LOUTS*
  5.     (vlax-for i (vla-get-block layout)
  6.       (if (and
  7.      (= (vla-get-objectname i) "AcDbBlockReference")
  8.      (= (strcase (vla-get-name i)) (strcase bn))
  9.    )
  10. (vla-Delete i)
  11.       )
  12.     )
  13.   )
  14. )

  15. ;;28.1 [功能] 清理打开文档
  16. (defun MJ:PurgeAllDocs (/ item cur)
  17.   (vlax-for item *DOCS*
  18.     (vla-PurgeAll item)
  19.   )
  20. )
  21. (LH:DELETETBLK "1")
  22. ;;28.1 [功能] 清理打开文档BLK
  23. (defun LH:DELETETBLK (BLK / item cur)
  24.   (setq
  25.     *ACAD* (vlax-get-acad-object)
  26.     *DOC*  (vla-get-ActiveDocument *ACAD*)
  27.     *BLKS* (vla-get-Blocks *DOC*)
  28.   )
  29.   (vlax-for item *BLKS*
  30.     (IF        (= (VLA-GET-NAME ITEM) BLK)
  31.       (PROGN
  32.         (SETQ ERR (vl-catch-all-apply 'vla-delete (LIST item)))
  33.         (IF (vl-catch-all-error-p ERR)
  34.           (PROGN
  35.             (PRINC (vl-catch-all-error-message ERR))
  36.           )
  37.         )
  38.       )
  39.     )
  40.   )
  41. )
  42. (setq
  43.       *ACAD*  (vlax-get-acad-object)
  44.       *DOC*   (vla-get-ActiveDocument *ACAD*)
  45.       *BLKS*  (vla-get-Blocks *DOC*)
  46.       *LAYS*  (vla-get-Layers *DOC*)
  47.       *LTS*   (vla-get-Linetypes *DOC*)
  48.       *STS*   (vla-get-TextStyles *DOC*)
  49.       *GRPS*  (vla-get-groups *DOC*)
  50.       *DIMS*  (vla-get-DimStyles *DOC*)
  51.       *LOUTS* (vla-get-Layouts *DOC*)
  52.    
  53. )

评分

参与人数 1金钱 +10 收起 理由
vpddup + 10

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2023-4-2 16:20:54 | 显示全部楼层
(setq ss(ssget "A" '((2 . "Axis-01"))))
(if ss(command "erase" ss ""))
发表于 2023-4-2 17:55:14 | 显示全部楼层
(if(setq ss(ssget"x"'((2 . "Axis-01"))))(command"erase"ss""))
 楼主| 发表于 2023-4-2 21:30:05 | 显示全部楼层
本帖最后由 vpddup 于 2023-4-2 21:38 编辑

可能我没有说清楚。我是想清理这个块。这个块已经从图面上删除了,但还在块定义库中。 我想把它从块库删除。

DELETEBLK 这个函数好使,能够实现这个想法。谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-16 13:51 , Processed in 0.169062 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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