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. GBDT与XGBoost区别与联系 GBDT近些年来更因为被用于构建搜索排序的机器学习模型而引起广泛的关注
  2. java条码大小_java – 如何设置iText条码宽度?
  3. mysql多表查询书籍_MySQL多表查询及子查询
  4. Python编程基础:第五节 用户输入User Input
  5. Android中WebView的跨域漏洞分析和应用被克隆问题情景还原(免Root获取应用沙盒数据)...
  6. 使用RestTemplate消费Hybris User API获取指定用户的信息
  7. 因此,您是一名新软件工程师。 让我们面对一些事实,揭穿一些神话。
  8. sas 怎么连接mysql_sas连接MySQL
  9. 重构代码 —— 提取出类
  10. Go Slice 高级实践
  11. Atitit 前端技术体系 目录 1. 基础系列 2 1.1. NUI CLI GUI 2 1.2. MVC WEBFORM PAGE模式 stage模式 2 2. 技术应用系列 2 2.
  12. python——reportlab
  13. 0基础跟着黑马程序员学微信小程序前端开发Day02(自学笔记)
  14. TIMER:肿瘤浸润免疫细胞分析的综合网站
  15. android 自由落体,Android动画之属性动画1 自由落体
  16. 2020暨南大学计算机专硕考研经验分享
  17. 投射电子显微镜(TEM)
  18. linux 主机名称修改
  19. 实验吧-web-天下武功唯快不破
  20. python后缀是什么_python文件的后缀名是什么

热门文章

  1. 通过Jacob调用WPS将office文件转为PDF文件
  2. C语言常见的内存错误
  3. 虽然我不相信神,但今天确实看到“神”了
  4. 网页背景图片加遮罩层详解
  5. SONiC架构DOCKER组件交互分析
  6. 重装Windows系统后,Mysql的恢复
  7. 美机器战士亮相 魔鬼终结者来了?
  8. php json_decode 效率,浅析PHP中json_encode、json_decode与serialize、unserialize的性能测试...
  9. 万能码:大数据时代的新星(安全扫码专业委员会)
  10. HLA-Face: Joint High-Low Adaptation for Low Light Face Detection