AutoCAD中扩展图元数据的应用

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” 1012x向空间位移 10.0
1001应用名(最多31个字节)“ilacad-dev”1022 y向空间位移10.0
1002控制串(组标记)“{“或”}” 1032z向空间位移 10.0
1003层名 “walls”1013x向空间坐标10.0
1004二进制数据块(最多127字节) n/a 1023y向空间坐标 10.0
1005数据块句柄(大小写不敏感) “a3e7d” 1033z向空间坐标10.0
1010实数(点或向量的x坐标) 10.01040实数10.0
1020实数(点或向量的y坐标) 10.0 1041距离(与父图元比例一样)10.0
1030 实数(点或向量的z坐标)10.01042 比例因子(与父图元比例一样) 10.0
1011x向空间位置10.01070整数(16位)12345
1021y向空间位置 10.0 1071长整数(32位)1234567890
1031z向空间位置 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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值