马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - ;;; 函数名称: XD::Doc:GetBlockReferences
- ;;; 功能: 查找给定块名 (name) 的所有引用,并返回其实体名称。
- ;;; 如果 ms 为 0,则返回模型空间中所有匹配的引用;如果 ms 为 1,则返回纸空间中的引用。
- ;;; 参数:
- ;;; - name (字符串): 要查找的块名。
- ;;; - ms (整数): 指定查找的空间。0 表示模型空间,1 表示纸空间。
- ;;; 返回值:
- ;;; - lst (列表): 包含匹配块引用的实体名称列表。
- (defun XD::Doc:GetBlockReferences (name ms / lst it tmp)
- ;; 遍历所有块对象
- (vlax-for x
- (vla-item
- (vla-get-blocks
- (vla-get-activedocument (vlax-get-acad-object))
- )
- name
- )
- (if (= ms 0)
- (progn
- ;; 如果 ms 为 0,将块引用添加到列表中
- (setq lst (cons (vlax-vla-object->ename x) lst))
- )
- (progn
- ;; 如果 ms 为 1,获取块的实体名称并递归查找引用
- (setq it (vlax-vla-object->ename x))
- (if (= (y-get-dxf 0 it) "INSERT")
- (progn
- ;; 如果是插入类型,递归查找子块
- (setq tmp (cons it (XD::Doc:GetBlockReferences (y-get-dxf 2 it) 1)))
- )
- (progn
- ;; 如果不是插入类型,仅返回当前块
- (setq tmp (list it))
- )
- )
- ;; 将当前块及其引用添加到列表中
- (setq lst (append tmp lst))
- )
- )
- )
- ;; 返回所有找到的块引用列表
- lst
- )
-
[/copde |