AutoCAD中扩展图元数据的应用
autocad有非常强大的图形编辑功能,但是与gis系统软件arc/info、mapinfo相比,其属性库功能相对较弱。在autocad数据库中,只是记录着表示图形元素的几何位置、形状、大小的几何坐标和表示图形元素性质(如颜色、层号等)的辅助数据。如果能将图形元素的其它属性数据添加到数据库中,将大大提高autocad的内部属性库功能,从而更有效的对autocad图形数据进行管理。而应用扩展图元数据就可以圆满完成这一功能。
2 扩展图元数据
利用扩展图元数据,或称xdata,用户能将用户定义数据添加到任何autocad图元中。用户可以用xdata向存在图元增添数据位或有效地创建唯一类型的图元。
作为一个应用程序,autocad处理许多类型的信息,包括字符串、点、实数和整数。数据类型作为一个小囊(capsule),保存相关信息,这样构造图元或管理其在图形中的用途。autocad支持在基本图元信息里保存每类原始数据,可是通用图元数据的数据组里的数值和类型是有限的,而xdata能够消除这些限制并使用户能够定义自己的数据类型。这样就可以与图元一起保存用户自己的信息,从而为定制autolisp提供了强有力的手段。
2.1 扩展图元数据码
autocad提供对所有普通数据类型的存储支持,以及对autocad有特殊意义的类型(如dxf)的支持,xdata的dxf组与基本图元数据的dfx组相比,其基本部分相同,但xdata的dfx组用高于1000的组码(见附表)。
附表 扩展图元数据dfx组码
说 明 | 例 子 | 说 明 | 例 子 | ||
1000 | 字符串(最多255个字节) | “space-cube” | 1012 | x向空间位移 | 10.0 |
1001 | 应用名(最多31个字节) | “il-acad-dev” | 1022 | y向空间位移 | 10.0 |
1002 | 控制串(组标记) | “{“或”}” | 1032 | z向空间位移 | 10.0 |
1003 | 层名 | “walls” | 1013 | x向空间坐标 | 10.0 |
1004 | 二进制数据块(最多127字节) | n/a | 1023 | y向空间坐标 | 10.0 |
1005 | 数据块句柄(大小写不敏感) | “a3e7d” | 1033 | z向空间坐标 | 10.0 |
1010 | 实数(点或向量的x坐标) | 10.0 | 1040 | 实数 | 10.0 |
1020 | 实数(点或向量的y坐标) | 10.0 | 1041 | 距离(与父图元比例一样) | 10.0 |
1030 | 实数(点或向量的z坐标) | 10.0 | 1042 | 比例因子(与父图元比例一样) | 10.0 |
1011 | x向空间位置 | 10.0 | 1070 | 整数(16位) | 12345 |
1021 | y向空间位置 | 10.0 | 1071 | 长整数(32位) | 1234567890 |
1031 | z向空间位置 | 10.0 |
xdata灵活性和使用性能的两个关键在于:以括号({)将其分组,一个图元可以有重复的相同数据类型的组码。但这必须要求应用程序跟踪其顺序和其他数据的格式。对于一般的图元数据,可以用assoc和subst函数以随意顺序处理其数据。 2.2 添加扩展图元数据 在为一个图元添加xdata之前,autocad需要注册应用名。因为一个图形可以为许多不同的应用程序引用。一个应用程序必须将其数据与别的应用程序分开,唯一应用程序识别名(appid)用于完成这种功能。注册应用程序名之后,可用append函数把扩展图元数据添加到原图数据表后。例如: comand:(regapp″solar5″) 注册应用程序名″solar5″ command:(command″circle″ ′(4000 4000)3963.5) 画一个圆 command:(setq ed(entget entlast)) 设置变量ed为圆图元的数据表。 command:(setq ex′(-3(″solor5″ 创建xdata表,连接到变量ex. (1000.″earth″) 变量ex. (1002.″{″) (1041.3963.5) (1002.″}″) ) ) ) command:(setq edx(append ed(list ex))) |
将新xdata数据表接在原图元数据表后,并连接到edx.
command:(entmod edx) 以联合后的表数据更新图元,并返回该表。
2.3 访问扩展图元数据
访问扩展图元数据时,必须为entget函数提供应用程序名appid。如不提供,则只返回常用图元数据。应用程序名包含在一个表里,所以可以给entget函数提供几个应用程序名。当提供给entget函数一个或多个应用程序名时,常用图元数据和所有应用程序名的扩展图元数据都将返回。还可用通配符,如solar,获取所有以solar开始的应用程序的xdata数据,或用来获取所有应用程序的xdata。
例如:
command:(entget(entlast))
返回上一个实体的图元数据表,但无xdata.
command:(entget(entlast)′(″solar5″))
返回上一个实体的应用程序名为solar5的图元数据表和xdata.
command:(entget′(″*″)
返回所有应用程序的图元数据表和xdata.
3 扩展图元数据的应用
扩展图元数据几乎能做到autocad图形中的任何事情。一旦扩展数据附加在图元数据上,许多程序可以查询、更新或分析信息。
a 利用扩展图元数据,可以实现图形数据与属性数据的连接,从而可以实现信息的管理、查询、分析、决策,大大弥补cad系统图形编辑功能强大,而属性库功能相对较弱的不足。例如:在地形图或地籍图中,可以给控制点符号添加扩展数据,如点号、等级、通视点号、x坐标、y坐标、h高程、点位精度等。之后,就可以以各种方式对控制点进行条件查询、修改等操作。
b 利用扩展图元数据,可以自动生成各类图元,从而达到绘图自动化,大大减少人工干预,提高工作效率。例如:可以将待填充区域的边界附加上扩展数据,如bj1—1、bj1—2等,用以标定区域边界及边界序号属性,然后用程序搜寻出属性为bj1—?的边界线,就可以将该区域以选定图案进行自动填充。
c 利用扩展图元数据,可以自动判别地物(图元)的属性,从而达到制图自动综合。例如:将1∶500地形图或地籍图进行1∶5000或更小比例尺缩绘时,一些扩展数据类型注为“普通地物”,且长度、面积在一定范围之内的,可以自动舍弃;而另一些扩展数据类型注为“独立地物”的,无论其大小,都要保留。又如,在1∶500,1∶1000,1∶2000等比例尺的地形图、地籍图之间进行缩绘时,陡坎(以未加固陡坎为例)是不能按比例缩绘的。陡坎的上沿实线可以按比例绘制,而与上沿实线垂直的陡坎投影线却有固定尺寸,高1mm,间距1.5mm。如果给陡坎附加上扩展数据,用dk1—1表示陡坎1的上沿实线, 以dk1—2表示陡坎1的投影线,那么在缩绘时,就可以用程序判定出哪些是陡坎1的上沿实线,并且按比例绘制:判定出哪些是陡坎1的投影线,并且删除,然后依据陡坎1的上沿实线按高度、间距尺寸自动生成投影线,并且附以扩展数据dk1—2。如上所说,利用扩展图元数据就可以实现陡坎等地物的制图自动综合了。
4 结束语
本文探讨了autocad中扩展图元数据dxf组码的形式,扩展图元数据的添加、访问和使用,展望其应用前景,认为扩展图元数据为autocad应用程序的开发提供了前所未有的威力。用adata数据可以让用户的应用程序从数据类型束缚中解放出来,使应用程序能够完成更多、更加先进的新功能。作者在实际中工作中利用xdata开发了一些应用程序,获得了令人满意的效果。在实践过程中如果善用xdata,可以开发出许多新功能,在地图制图和信息工程等领域将具有广阔的应用前景。
作者单位:崔先国 (山东矿业学院)
张明波 (淄博学院)
2 joseph smith & rusty gesner.autocad 12.0定制大全.北京:学苑出版社,1994
3 rusty gesner等.autocad 12 for windows 高级核心技术.北京:清华大学出版社,1995
4 george omura & steven keith.autocad 14 机械工程绘图教程.电子工业出版社.
5 中华人民共和国国家标准局.地形图图式.国家技术监督局,1995
转载于:https://www.cnblogs.com/jdmei520/articles/1512272.html
AutoCAD中扩展图元数据的应用相关推荐
- AutoCAD .Net 在dwg文件中存储自定义数据
问题 我需要在 dwg 文件中存储一些信息,以额外描述图形文件并使它能够和其它软件程序集成. 请问怎样才能在 dwg 文件中写入自定义数据并读取? 回答 你可以使用 Named Object Dict ...
- pytorch中的expand()和expand_as()函数--扩展张量中某维数据的尺寸
pytorch中的expand()和expand_as()函数 1.expand()函数: (1)函数功能: expand()函数的功能是用来扩展张量中某维数据的尺寸,它返回输入张量在某维扩展为更大尺 ...
- 【原创】从AutoCAD中提取明细栏和标题栏中的数据
从AutoCAD中提取明细栏和标题栏中的数据 在AutoCAD中的明细栏和标题栏通常是采用定义块然后添加相应的属性值.那么如何在AutoCAD中提取到这些属性值呢?下面是实现的方法(通过AutoCAD ...
- AutoCAD中ObjectARX C++常用的方法
在AutoCAD中选择实体 1. ads_name[在AutoCAD 2000中仍为此名].acdbNameSet()[ads_name_set()].acdbNameEqual()[ads_name ...
- 用Apache Ignite实现可扩展的数据网格
在本文中,我们将先介绍数据网格(Data Grid)的基本概念.属性.以及能够提供的服务,然后讨论如何设计可扩展的数据网格,以满足实际场景的业务需求. 什么是数据网格? 数据网格是一组能够提供共享数据 ...
- websphere mq 查看队列中是否有数据_全网最全的 “消息队列”
消息队列的使用场景 以下介绍消息队列在实际应用常用的使用场景.异步处理.应用解耦.流量削锋和消息通讯四个场景. 1]异步处理:场景说明:用户注册后,需要发注册邮件和注册短信. 引入消息队列后架构如下: ...
- 技术图文:如何通过 LINQ 查找集合中的重复数据?
背景 在前几天介绍的 如何利用C#实现Huffman编码? 的图文中有以下代码. private List<HuffmanTreeNode> CreateInitForest(string ...
- iOS中几种数据持久化方案总结
概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...
- 【FPGA】SRIO中的关键问题总结(一)SRIO中的关键数据包格式总结
目录 1 SRIO事务及其类型 2 常用的I/O逻辑操作事务 3 HELLO包格式(重点) 4 SRIO数据包包格式 5 控制符号数据包格式 1 SRIO事务及其类型 SRIO(Serial Rapi ...
最新文章
- Microbiome:重新定义“卫生”的概念
- UA MATH567 高维统计 专题1 Supervised PCA Regression概述
- 隐藏水滴屏的软件_突破屏下摄像头技术,vivo APEX 2020,开启全面屏手机黑科技!...
- 新增房源服务实现之新增房源RESTful接口的开发
- ElasticSearch-JDBC驱动 像使用SQL一样使用ElasticSearch查询语句
- 阿里云服务器安装python3.7.3,解决openssl问题
- 如果SQL Server 配置管理器没有找到就代表安装失败?
- 教你如何预判用户手势行为
- 控制文件丢失 如何恢复
- 20155229 2017-2018-1 《信息安全系统设计基础》课程总结
- 【2022年】帝豪gs/帝豪gl 车机安装第三方软件教程
- C 语言中获取文件长度(ftell函数)
- python攻击校园网_Python模拟校园网登录
- 带你十分钟做出一个自己的手机APP
- 找到抓手,用对方法,中电金信关于金融机构数据治理建设路径分享
- 杨家将杨业四子杨延辉子嗣传人世代居住松滋
- 小红书笔记api_小红书笔记怎么写?
- Android 使用MediaPlayer播放本地raw资源超简单实现点击播放效果
- 一年中的某周转换成当前周星期一和星期日的日期
- python项目对接腾讯云发送短信