找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 96|回复: 0

[图块] XD::Doc:GetBlockReferences

[复制链接]

已领礼包: 20个

财富等级: 恭喜发财

发表于 2025-4-3 21:12:05 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Doc:GetBlockReferences
调用格式: (XD::Doc:GetBlockReferences name ms)
参数说明: - name (字符串): 要查找的块名。
- ms (整数): 指定查找的空间。0 表示模型空间,1 表示纸空间。
返回值: - lst (列表): 包含匹配块引用的实体名称列表。
函数简介: 函数名称: XD::Doc:GetBlockReferences
;;; 功能: 查找给定块名 (name) 的所有引用,并返回其实体名称。
;;; 如果 ms 为 0,则返回模型空间中所有匹配的引用;如果 ms 为 1,则返回纸空间中的引用。
;;; 参数:
;;; - name (字符串): 要查找的块名。
;;; - ms (整数): 指定查找的空间。0 表示模型空间,1 表示纸空间。
;;; 返回值:
;;; - lst (列表): 包含匹配块引用的实体名称列表。
函数来源: 二次修改
函数作者: marting
适用版本: 不限 
最后更新时间: 2025-04-03
备注: -
演示图片: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

  1. ;;; 函数名称: XD::Doc:GetBlockReferences
  2. ;;; 功能: 查找给定块名 (name) 的所有引用,并返回其实体名称。
  3. ;;;        如果 ms 为 0,则返回模型空间中所有匹配的引用;如果 ms 为 1,则返回纸空间中的引用。
  4. ;;; 参数:
  5. ;;;   - name (字符串): 要查找的块名。
  6. ;;;   - ms (整数): 指定查找的空间。0 表示模型空间,1 表示纸空间。
  7. ;;; 返回值:
  8. ;;;   - lst (列表): 包含匹配块引用的实体名称列表。
  9. (defun XD::Doc:GetBlockReferences (name ms / lst it tmp)
  10.   ;; 遍历所有块对象
  11.   (vlax-for x
  12.     (vla-item
  13.       (vla-get-blocks
  14.         (vla-get-activedocument (vlax-get-acad-object))
  15.       )
  16.       name
  17.     )
  18.     (if (= ms 0)
  19.       (progn
  20.         ;; 如果 ms 为 0,将块引用添加到列表中
  21.         (setq lst (cons (vlax-vla-object->ename x) lst))
  22.       )
  23.       (progn
  24.         ;; 如果 ms 为 1,获取块的实体名称并递归查找引用
  25.         (setq it (vlax-vla-object->ename x))
  26.         (if (= (y-get-dxf 0 it) "INSERT")
  27.           (progn
  28.             ;; 如果是插入类型,递归查找子块
  29.             (setq tmp (cons it (XD::Doc:GetBlockReferences (y-get-dxf 2 it) 1)))
  30.           )
  31.           (progn
  32.             ;; 如果不是插入类型,仅返回当前块
  33.             (setq tmp (list it))
  34.           )
  35.         )
  36.         ;; 将当前块及其引用添加到列表中
  37.         (setq lst (append tmp lst))
  38.       )
  39.     )
  40.   )
  41.   ;; 返回所有找到的块引用列表
  42.   lst
  43. )

[/copde
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-4-28 09:52 , Processed in 0.367988 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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