扩展数据的组织
扩展数据由一个或多个 1001 组组成,每个组都以唯一的应用程序名称开头。应用程序名称是字符串值。返回的扩展数据组按照定义数据在数据库中的保存顺序进行操作。acdbEntGetX()
在每个应用程序的组中,数据的内容、含义和组织由应用程序定义;AutoCAD 会维护信息,但不会使用它。扩展数据的组代码在 1000–1071 范围内,如下所示:
- 字符串
-
1000. 扩展数据中的字符串长度最多为 255 个字节(第 256 个字节保留给 null 字符)。
- 应用程序名称
-
1001(也是一个字符串值)。应用程序名称的长度最多为 31 个字节(第 32 个字节保留给 null 字符),并且必须遵守符号表名称(例如图层名称)的规则。应用程序名称可以包含字母、数字和特殊字符 $(美元符号)、-(连字符)和 _(下划线)。它不能包含空格。名称中的字母将转换为大写。
一组扩展数据不能由不带其他数据的应用程序名称组成。
删除扩展数据
- 调用以检索实体。acdbEntGet()
- 添加到由 resbuf 返回的列表末尾,其 a 为 -3。acdbEntGet()restype
- 在列表末尾添加另一个 resbuf,其 a 为 1001,设置为 <>。restyperesval.rstringappname
如果尝试向现有实体添加 1001 组,但未添加其他扩展数据,则忽略该尝试。如果尝试创建其唯一扩展数据组是单个 1001 组的实体,则尝试将失败。
- 图层名称
-
1003. 与扩展数据关联的图层的名称。
- 数据库句柄
-
1005. 图形数据库中实体的句柄。在某些情况下,AutoCAD 会转换这些内容。
- 3D点
-
1010. 三个实数值,包含在一个点中。
- 真正
-
1040. 真正的价值。
- 整数
-
1070. 16 位整数(有符号或无符号)。
- 长
-
1071. 32 位有符号(长)整数。如果 1071 组中出现的值是短整数或实数,则将其转换为长整数;如果它无效(例如,字符串),则将其转换为长零 (0L)。
- 控制字符串
-
1002. 扩展数据控制字符串可以是“{”或“}”。这些大括号使应用程序能够通过将数据细分为列表来组织其数据。左大括号开始一个列表,右大括号终止最近的列表。(列表可以嵌套。读取扩展数据时,AutoCAD 会进行检查以确保大括号正确平衡。
- 二进制数据
-
1004. 二进制数据被组织成可变长度的块,可以在 ObjectARX 中使用结构处理这些块。每个块的最大长度为 127 字节。ads_binary
- 世界空间位置
-
1011. 与简单的三维点不同,世界空间坐标与扩展数据所属的父实体一起移动、缩放、旋转和镜像。当 STRETCH 命令应用于父图元时,世界空间位置也会拉伸,并且该点位于选择窗口内。
- 世界空间位移
-
1012. 与父项一起缩放、旋转或镜像但未拉伸或移动的 3D 点。
- 世界方向
-
1013. 也是一个 3D 点,该点与父项一起旋转或镜像,但未缩放、拉伸或移动。世界方向是始终具有单位长度的归一化位移。
- 距离
-
1041. 与父实体一起缩放的实际值。
- 比例因子
-
1042. 也是一个与父级一起缩放的实际值。
注意:
如果 1001 组出现在列表中,则将其视为字符串,并且不会开始新的应用程序组。
|