明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 609|回复: 6

[资源] [20240603有内容更新]外部参照状态查询和管理

[复制链接]
发表于 2024-5-30 19:28 | 显示全部楼层 |阅读模式
本帖最后由 tigcat 于 2024-6-3 20:03 编辑

外部参照有四种状态,如下图:1-需要重载;2-已卸载;3-已加载;4-未参照


如何获取这四种状态呢?

首先,外部参照是一种特殊的块,所以我们可以查询组码,打开cad帮助,提示组码"70"对应的值.


有了上面的组码,那么我们可以获取外部参照的数据表验证一下.


首先,我们用vla函数可以获取所有的外部参照名称

;获取所有的外部参照名称
(defun getallxref ()
  (setq blocklst '())
  (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  (vlax-for block (vla-get-Blocks doc)
    (if
      (eq (vla-get-IsXRef block) :vlax-true)
       (setq blocklst (cons (vla-get-Name block) blocklst))
    )
  )
  blocklst
)


;获取外部参照名称和组码70的数值的二元表
(defun xref-dxf70(lst)
  (setq name-dxfs '())
  (foreach x lst
    (setq name-dxfs (cons (cons x(cdr (assoc 70 (tblsearch "block" x))))name-dxfs))
    )
  )


用上面2个程序就可以获得如下图的"参照名称" 70组码的点对表



从上图知只有"2"的组码值为4,其余"1" "3" "4"外部参照70组码值均为36,结合上面组码说明,4表示为外部参照,此时是未融入或者引用的状态,36=4+32,表示融入的外部参照.从上面实例可知,单从70组码能判断外部参照是否卸载,但是无法判断是否是需要重载/未参照的情况.

下面是配套的测试的dwg和lsp


下面分享网络找来的两段代码,一段可以清除已卸载的外部参照,另外一段可以清理未使用的外部参照和光栅引用.





[20240602新增内容]经过本坛大佬bao_lai的探索,提供一个C#封装的函数命令:"(getxrefstatus)",利用这个函数可以读取参照管理器一样的参照状态,目前CAD2014还不支持,我测试2018可以用,bao_lai大佬用2020编写,所以2018/2020都可以使用.下面的动图也是大佬提供的.



[20240603]补充2014版cad适用程序,由bao_lai大佬提供







本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
kucha007 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-5-30 19:39 来自手机 | 显示全部楼层
数据库结构是一样的,要找到节点上面
https://www.cnblogs.com/JJBox/p/12407217.html
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-5-30 21:35 | 显示全部楼层
你有种再说一遍 发表于 2024-5-30 19:39
数据库结构是一样的,要找到节点上面
https://www.cnblogs.com/JJBox/p/12407217.html

感谢大佬回复,我还需慢慢学习了解
发表于 2024-5-31 07:40 | 显示全部楼层
感谢分享代码!
发表于 2024-5-31 09:22 | 显示全部楼层
好资料,谢谢分享
发表于 2024-6-1 14:14 | 显示全部楼层
好资料,谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-26 18:02 , Processed in 0.144589 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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