1 引 言
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个字节) “spacecube” 1012 x向空间位移 10.0
1001 应用名(最多31个字节) “ilacad-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,可以开发出许多新功能,在地图制图和信息工程等领域将具有广阔的应用前景。

作者单位:崔先国 (山东矿业学院)
     张明波 (淄博学院)

1 rusty gesner & joseph smith.autolisp 12.0编程大全.北京:学苑出版社,1995
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中扩展图元数据的应用相关推荐

  1. AutoCAD .Net 在dwg文件中存储自定义数据

    问题 我需要在 dwg 文件中存储一些信息,以额外描述图形文件并使它能够和其它软件程序集成. 请问怎样才能在 dwg 文件中写入自定义数据并读取? 回答 你可以使用 Named Object Dict ...

  2. pytorch中的expand()和expand_as()函数--扩展张量中某维数据的尺寸

    pytorch中的expand()和expand_as()函数 1.expand()函数: (1)函数功能: expand()函数的功能是用来扩展张量中某维数据的尺寸,它返回输入张量在某维扩展为更大尺 ...

  3. 【原创】从AutoCAD中提取明细栏和标题栏中的数据

    从AutoCAD中提取明细栏和标题栏中的数据 在AutoCAD中的明细栏和标题栏通常是采用定义块然后添加相应的属性值.那么如何在AutoCAD中提取到这些属性值呢?下面是实现的方法(通过AutoCAD ...

  4. AutoCAD中ObjectARX C++常用的方法

    在AutoCAD中选择实体 1. ads_name[在AutoCAD 2000中仍为此名].acdbNameSet()[ads_name_set()].acdbNameEqual()[ads_name ...

  5. 用Apache Ignite实现可扩展的数据网格

    在本文中,我们将先介绍数据网格(Data Grid)的基本概念.属性.以及能够提供的服务,然后讨论如何设计可扩展的数据网格,以满足实际场景的业务需求. 什么是数据网格? 数据网格是一组能够提供共享数据 ...

  6. websphere mq 查看队列中是否有数据_全网最全的 “消息队列”

    消息队列的使用场景 以下介绍消息队列在实际应用常用的使用场景.异步处理.应用解耦.流量削锋和消息通讯四个场景. 1]异步处理:场景说明:用户注册后,需要发注册邮件和注册短信. 引入消息队列后架构如下: ...

  7. 技术图文:如何通过 LINQ 查找集合中的重复数据?

    背景 在前几天介绍的 如何利用C#实现Huffman编码? 的图文中有以下代码. private List<HuffmanTreeNode> CreateInitForest(string ...

  8. iOS中几种数据持久化方案总结

    概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) ...

  9. 【FPGA】SRIO中的关键问题总结(一)SRIO中的关键数据包格式总结

    目录 1 SRIO事务及其类型 2 常用的I/O逻辑操作事务 3 HELLO包格式(重点) 4 SRIO数据包包格式 5 控制符号数据包格式 1 SRIO事务及其类型 SRIO(Serial Rapi ...

最新文章

  1. Microbiome:重新定义“卫生”的概念
  2. UA MATH567 高维统计 专题1 Supervised PCA Regression概述
  3. 隐藏水滴屏的软件_突破屏下摄像头技术,vivo APEX 2020,开启全面屏手机黑科技!...
  4. 新增房源服务实现之新增房源RESTful接口的开发
  5. ElasticSearch-JDBC驱动 像使用SQL一样使用ElasticSearch查询语句
  6. 阿里云服务器安装python3.7.3,解决openssl问题
  7. 如果SQL Server 配置管理器没有找到就代表安装失败?
  8. 教你如何预判用户手势行为
  9. 控制文件丢失 如何恢复
  10. 20155229 2017-2018-1 《信息安全系统设计基础》课程总结
  11. 【2022年】帝豪gs/帝豪gl 车机安装第三方软件教程
  12. C 语言中获取文件长度(ftell函数)
  13. python攻击校园网_Python模拟校园网登录
  14. 带你十分钟做出一个自己的手机APP
  15. 找到抓手,用对方法,中电金信关于金融机构数据治理建设路径分享
  16. 杨家将杨业四子杨延辉子嗣传人世代居住松滋
  17. 小红书笔记api_小红书笔记怎么写?
  18. Android 使用MediaPlayer播放本地raw资源超简单实现点击播放效果
  19. 一年中的某周转换成当前周星期一和星期日的日期
  20. python项目对接腾讯云发送短信

热门文章

  1. angularjs 动态添加html
  2. 时尚创意VI矢量设计模板
  3. 仿抖音 APP 视频切换和点赞效果
  4. whmcs对接cdn系统_对接whmcs常见报错信息及解决方法
  5. 详细的App推广前的准备工作
  6. 495. 提莫攻击(模拟)
  7. 像TransactionScope一样使用DbTransaction
  8. 4/5G双连接拓扑及组网协议栈
  9. 根据拼音做城市索引列表
  10. Quick BIV2.4.1 OLAP引擎2.2(时分秒、数据类型切换等)、仪表板布局升级