扩展数据 (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 位有符号(长)整数 |
评论? |