扩展数据 (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 | 按 X、Y、Z 次序排列的三个实数值。可将它们用作点或矢量记录。AutoCAD 永远不会改变它们的值 |
世界空间位置 | 1011, 1021, 1031 | 与简单的三维点不同,世界空间坐标随扩展数据所属的父图元进行移动、缩放、旋转和镜像。对父图元使用 STRETCH 命令并且此点位于选择窗口中时,世界空间位置也会被拉伸。 |
世界空间位移 | 1012, 1022, 1032 | 也是一个随着父图元进行缩放、旋转和镜像(而不是移动或拉伸)的三维点 |
世界方向 | 1013, 1023, 1033 | 也是一个随着父图元旋转和镜像(而不是移动、缩放或拉伸)的三维点 |
实数 | 1040 | 一个实数值 |
距离 | 1041 | 一个随着父图元进行缩放的实数值 |
比例因子 | 1042 | 也是一个随着父图元进行缩放的实数值。距离和缩放因子的差别由应用程序定义 |
整数 | 1070 | 一个 16 位整数(有符号或无符号) |
长整数 | 1071 | 一个 32 位有符号(长)整数 |