扩展数据
 
 
 

扩展数据 (xdata) 由 AutoLISP 或 ObjectARX 应用程序创建。如果图元包含扩展数据,则扩展数据将跟随在图元的普通定义数据之后。组码 1000 至 1071 描述了扩展数据。下面是一个包含 DXF 格式扩展数据的图元样例。

普通图元定义数据:

  0 
INSERT
  5
F11
100
AcDbEntity
  8
TOP
100
AcDbBlockReference
 2
BLOCK_A
 10
0.0
 20
0.0
 30
0.0

扩展图元定义数据:

1001
AME_SOL
1002
{
1070
 0
1071
 1.95059E+06
1070
 519
1010
2.54717
1020
2.122642
1030
2.049201
1005
ECD
1005
EE9
1005
0
1040
0.0
1040
1.0
1000
MILD_STEEL

组码 1001 表示扩展数据的开始。与普通图元数据相比,具有扩展数据的同一组码可以出现多次,而且出现次序很重要。

扩展数据按注册的应用程序名分组。每个注册的应用程序组始于 1001 组码,并将程序名作为字符串值。注册的应用程序名对应于 APPID 符号表条目。

应用程序可以根据需要使用任意多的 APPID 名。APPID 名是固定不变的,但是,如果当前未在图形中使用 APPID 名,则可以将它们删除。每个 APPID 名只能向每个图元附加一个数据组。在应用程序组中,扩展数据组的顺序和含义由应用程序定义。

下表列出了扩展数据组码。

扩展数据组码和说明

图元名

组码

说明

字符串

1000

扩展数据中字符串的最大长度为 255 个字节(第 256 个字节是为空字符保留的)

应用程序名称

1001

也是字符串值

应用程序名的最大长度为 31 个字节(第 32 个字节是为空字符保留的)

注意不要将 1001 组添加到扩展数据中,因为 AutoCAD 假定它是新应用程序扩展数据组的开始

控制字符串

1002

扩展数据控制字符串可以是“{”或“}”。这两个大括号使应用程序可以通过将数据细分为表来组织数据。左大括号开始一个列表,右大括号结束最近的列表。列表可以嵌套。

读取特定应用程序的扩展数据时,AutoCAD 会进行检查以确保大括号是成对的

图层名

1003

与扩展数据关联的图层名

二进制数据

1004

二进制数据组织成可变长度的数据块。每个数据块的最大长度为 127 个字节。在 ASCII 格式的 DXF 文件中,二进制数据以十六进制数字字符串的形式表示,每个二进制字节由两个数字字符表示

数据库句柄

1005

图形数据库中的图元句柄

注意使用 INSERT、INSERT *、XREF BIND、XBIND 或 PARTIAL OPEN 将带有句柄和扩展数据句柄的图形输入到另一个图形时,扩展数据句柄将使用其相应图元句柄的转换方式进行转换,从而使两者之间的绑定保持不变。EXPLODE 块操作或任何其他 AutoCAD 操作也是如此。如果 AUDIT 检测出扩展数据句柄与图形文件中的图元句柄不匹配,将认为存在错误。AUDIT 修复图元时,将句柄设置为 0。

3 个实数

1010, 1020, 1030

XYZ 次序排列的三个实数值。可将它们用作点或矢量记录。AutoCAD 永远不会改变它们的值

世界空间位置

1011, 1021, 1031

与简单的三维点不同,世界空间坐标随扩展数据所属的父图元进行移动、缩放、旋转和镜像。对父图元使用 STRETCH 命令并且此点位于选择窗口中时,世界空间位置也会被拉伸。

世界空间位移

1012, 1022, 1032

也是一个随着父图元进行缩放、旋转和镜像(而不是移动或拉伸)的三维点

世界方向

1013, 1023, 1033

也是一个随着父图元旋转和镜像(而不是移动、缩放或拉伸)的三维点

实数

1040

一个实数值

距离

1041

一个随着父图元进行缩放的实数值

比例因子

1042

也是一个随着父图元进行缩放的实数值。距离和缩放因子的差别由应用程序定义

整数

1070

一个 16 位整数(有符号或无符号)

长整数

1071

一个 32 位有符号(长)整数