扩展数据 (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 组添加到扩展数据中,因为程序假定它是新应用程序扩展数据组的开始。
|
控制字符串 |
1002 |
扩展数据控制字符串可以是“{”或“}”。这两个大括号使应用程序可以通过将数据细分为表来组织数据。左大括号开始一个列表,右大括号结束最近的列表。列表可以嵌套。 读取特定应用程序的扩展数据时,程序会进行检查以确保大括号是成对的。 |
图层名 |
1003 |
与扩展数据关联的图层名。 |
二进制数据 |
1004 |
二进制数据组织成可变长度的数据块。每个数据块的最大长度为 127 个字节。在 ASCII 格式的 DXF 文件中,二进制数据以十六进制数字字符串的形式表示,每个二进制字节由两个数字字符表示。 |
数据库句柄 |
1005 |
图形数据库中的图元句柄 注: 使用 INSERT、INSERT *、XREF BIND、XBIND 或 PARTIAL OPEN 将带有句柄和扩展数据句柄的图形输入到另一个图形时,扩展数据句柄将使用其相应图元句柄的转换方式进行转换,从而使两者之间的绑定保持不变。EXPLODE 块操作或任何其他操作也是如此。如果 AUDIT 检测出扩展数据句柄与图形文件中的图元句柄不匹配,将认为存在错误。AUDIT 修复图元时,将句柄设定为 0。
|
3 个实数 |
1010, 1020, 1030 |
按 X、Y、Z 次序排列的三个实数值。可将它们用作点或矢量记录。程序永远不会改变它们的值。 |
世界空间位置 |
1011, 1021, 1031 |
与简单的三维点不同,世界空间坐标随扩展数据所属的父图元进行移动、缩放、旋转和镜像。对父图元使用 STRETCH 命令并且此点位于选择窗口中时,世界空间位置也会被拉伸。 |
世界空间位移 |
1012, 1022, 1032 |
也是一个随着父图元进行缩放、旋转和镜像(而不是移动或拉伸)的三维点。 |
世界方向 |
1013, 1023, 1033 |
也是一个随着父图元旋转和镜像(而不是移动、缩放或拉伸)的三维点。 |
实数 |
1040 |
一个实数值。 |
距离 |
1041 |
一个随着父图元进行缩放的实数值。 |
比例因子 |
1042 |
也是一个随着父图元进行缩放的实数值。距离和缩放因子的差别由应用程序定义。 |
整数 |
1070 |
一个 16 位整数(有符号或无符号)。 |
长整数 |
1071 |
一个 32 位有符号(长)整数。 |