该函数以列表形式返回指定实体的定义数据。entget 列表中的每个项目都由 DXF 组代码指定。列表中的第一项包含实体的当前名称。 在此示例中,以下(默认)条件适用于当前图形:
用户使用以下命令序列绘制了一条线: 命令:行 从点:1,2 至点:6,6 到点:按回车键 AutoLISP 应用程序可以使用以下示例代码检索和输出该行的定义数据: (defun C:PRINTDXF ( ) (setq ent (entlast)) ; Set ent to last entity. (setq entl (entget ent)) ; Set entl to association list of last entity. (setq ct 0) ; Set ct (a counter) to 0. (textpage) ; Switch to the text screen. (princ "\nentget of last entity:") (repeat (length entl) ; Repeat for number of members in list: (print (nth ct entl)) ; Output a newline, then each list member. (setq ct (1+ ct)) ; Increments the counter by one. ) (princ) ; Exit quietly. ) 这将输出以下内容: entget of last entity: (-1 . <Entity name: 1bbd1c8>) (0 . "LINE") (330 . <Entity name: 1bbd0c8>) (5 . "69") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbLine") (10 1.0 2.0 0.0) (11 6.0 6.0 0.0) (210 0.0 0.0 1.0) 列表开头的 -1 项包含实体的名称。本节中介绍的函数使用该名称来标识要修改的实体。表示值的各个虚线对可以通过使用函数提取。entmodassoccdr 点的子列表不像返回的其余值那样表示为虚线对。约定是子列表是组码的值。因为一个点是两个或三个实数的列表,所以整个组是一个三(或四)元素列表。组码值是表示点的列表,因此始终返回值的约定将被保留。cdrcdrcdr 实体组件的组代码是 DXF 使用的组代码。与 DXF 一样,仅当实体标题项(颜色、线型、粗细、属性跟随标志和实体手柄)具有默认值以外的值时,才会返回这些项目。与 DXF 不同,无论可选实体定义字段是否等于其默认值,以及关联的 X、Y 和 Z 坐标是否作为单个点变量返回,而不是作为单独的X(10)、Y(20) 和Z(30) 组代码返回,都会返回这些字段。 与对象关联的所有点都以该对象的对象坐标系 (OCS) 表示。对于点、线、3D 线、3D 面、3D 折线、3D 网格和尺寸对象,OCS 等效于 WCS(对象点是世界点)。对于所有其他对象,OCS 可以从 WCS 和对象的拉伸方向(其 210 组代码)派生。使用使用 WCS 以外的坐标系绘制的对象时,可能需要使用函数将点转换为 WCS 或当前 UCS。trans 编写函数来处理实体列表时,请确保函数逻辑独立于子列表的顺序;用来保证这一点。该函数在列表中搜索指定类型的组代码。下面的代码从列表中返回对象类型“LINE”(0)。assocassocentl (cdr (assoc 0 entl)) 如果指定的组码不在列表中(或者如果它不是有效的组码),则返回。assocnil 谨慎:在执行负顶点实体之前,应读取或写入折线实体的标头。如果最近处理的折线图元与折点所属的折线图元不同,则宽度信息(40 和 41 组码)可能会丢失。entget
|
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )
GMT+8, 2024-5-19 13:19
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.