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” 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

posted on 2009-06-27 15:53  jdmei520  阅读(2052)  评论(0编辑  收藏  举报

导航