CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于扩展数据组代码(AutoLISP)

2023-1-6 11:17| 发布者: admin| 查看: 597| 评论: 0|来自: AutoCAD

摘要: 扩展数据由一个或多个 1001 组代码组成,每个组代码都以唯一的应用程序名称开头。

扩展数据由一个或多个 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. 也是随父级缩放的实际值。


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 12:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部