扩展数据由一个或多个 1001 组代码组成,每个组代码都以唯一的应用程序名称开头。
返回的 xdata 组按照定义数据在数据库中的保存顺序跟踪定义数据。在每个应用程序的组中,数据的内容、含义和组织由应用程序定义。AutoCAD 会保留信息,但不使用它。该表还显示 xdata 的组码在 1000-1071 范围内。其中许多组码适用于熟悉的数据类型,如下所示:entget
- 字符串
-
1000. 扩展数据中的字符串最长可达 255 字节(第 256 个字节保留用于空字符)。
- 应用程序名称
-
1001(也是一个字符串值)。应用程序名称最长可达 31 个字节(第 32 个字节保留用于空字符),并且必须遵守符号表名称(例如图层名称)的规则。应用程序名称可以包含字母、数字和特殊字符 $(美元符号)、-(连字符)和 _(下划线)。它不能包含空格。
- 图层名称
-
1003. 与 xdata 关联的图层的名称。
- 数据库句柄
-
1005. 图形数据库中图元的句柄。
- 3D 点
-
1010.三个实值,包含在一个点中。
- 真正
-
1040.真正的价值。
- 整数
-
1070. 16 位整数(有符号或无符号)。
- 长
-
1071. 一个 32 位有符号(长)整数。如果 1071 组码中出现的值是短整数或实数,则转换为长整数;如果无效(例如字符串),则将其转换为长零 (0L)。
注意:AutoLISP 将 1071 个组码作为实际值进行管理。如果使用检索包含 1071 组码的实体定义列表,则该值将作为 real 返回,如以下示例所示:entget(1071 . 12.0)
如果要在实体withor中创建1071组码,可以使用实数或整数值,如以下示例所示:entmakeentmod
(entmake '((..... (1071 . 12) .... )))
(entmake '((..... (1071 . 12.0) .... )))
(entmake '((..... (1071 . 65537.0) .... )))
(entmake '((..... (1071 . 65537) .... )))
但是 AutoLISP 仍然将组码值作为实数返回:
(entmake '((..... (1071 . 65537) .... )))
前面的语句返回以下内容:
(1071 . 65537.0)
ObjectARX 和托管 .NET 始终将 1071 个组码管理为长整数。
其他几个扩展数据组代码在此上下文中具有特殊含义(如果应用程序选择使用它们):
- 控制字符串
-
1002. xdata 控件字符串可以是非此即彼。这些大括号使应用程序能够通过将数据细分为列表来组织其数据。左大括号开始一个列表,右大括号终止最近的列表。列表可以嵌套。"{""}"
注意:如果列表中出现 1001 组代码,则该组代码将被视为字符串,并且不会开始新的应用程序组代码。
- 二进制数据
-
1004. 组织成可变长度块的二进制数据,可以在 ObjectARX 和托管 .NET 中使用结构进行处理。每个区块的最大长度为 127 字节。ads_binary
注意:AutoLISP 不能直接处理二进制块,因此适用于长 (1071) 组码的相同预防措施也适用于二进制组代码。
- 世界空间位置
-
1011.与简单的 3D 点不同,WCS 坐标与扩展数据所属的父实体一起移动、缩放、旋转和镜像。当 AutoCAD 拉伸命令应用于父图元时,以及当此点位于选择窗口中时,WCS 位置也会被拉伸。
- 世界空间-位移
-
1012. 与父项一起缩放、旋转或镜像但未拉伸或移动的 3D 点。
- 世界 -方向
-
1013. 与父级一起旋转或镜像,但未缩放、拉伸或移动的 3D 点。WCS 方向是始终具有单位长度的归一化位移。
- 距离
-
1041. 与父实体一起缩放的实际值。
- 比例因子
-
1042. 也是随父级缩放的实际值。
|