扩展词典和永久反应器
高级 DXF 问题
对象坐标系 (OCS)
扩展数据 (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 位有符号(长)整数
|