AUTO LISP函数参考5

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

AUTO LISP函数参考

4实体数据函数

下列函数可让用户检索和修改定义实体的数据,所有函数都用实体名指定要操作的实体.

4.1(entdel<实体名>)

如果由<实体名>指定的实体在当前图中,它就被删掉,如果在这次编辑中该实体已被删除,那么它将被重新恢复出来(从当前图中).退出图形编辑程序时,被删除的实体便从图中

彻底清除掉了,所以ENTDEL只能在删除实体的那次编辑过程中使实体再恢复.ENTDEL只对

主实体进行操作.对属性和多义线的顶点是不能脱离其双亲实体而予删除的(可使用COMM AND函数执行ATTEDIT或PEDIT命令来达到这一目的).

例如:

(setq e1(entnext));置E1为图中第一个实体的名

(entdel e1);删去实体E1

(entdel e1);不删除(恢复)已被删去的实体E1

4.2(entget<实体名>)

从数据库中检索到名为<实体名>的实体,并以表形式返回,此表包含实体的定义数据表的结果以LISP的关联表形式编制,用ASSOC函数可以容易地从中检索每一项.表中的对象是用AutoCAD的DXF组码形式定义的,它们是为实体数据的每个部分准备的.例如,用下列命令序列画线,然后再检索此线:

对下面的例子,我们假定:

.当前层是"0",

.当前线型是"CONTINUOUS"(缺省值),

.当前Z向高度是零(缺省值),

.实体标号功能被关闭,而且

.FLATLAND系统变量值为零.

假设用下列命令画一条线:

Command:LINE

From point:1,2

To point:6,6

To point:RETURN

然后可以用下述命令为线检索实体数据:

Command:(setq a(entget(entlast)))

假定系统变量FLATLAND为零(即要求3D点).这样,将把A置为下表(为了可读,作了缩进排列):

((-1.)

(0."LINE");Entity type

(8."0");Layer

(101.02.00.0);Start point

(116.06.00.0);End point

)

表的开头-1项包含这个所代表的实体名.下面描述的ENTMOD函数将用这种表来识别要修改的实体.

表示某一值的点对表可以很容易地用ASSOC提取,再用CDR分离出它们的值.实体中各部分的编码是DXF所用的那些编码,在AutoCAD参考手册的附录C中有描述.和DXF一样,实体题头项(实体的颜色和线型,属性跟随标志,厚度,及实体标号)只有在不为缺省值时才被输出.

和DXF不同的是,任选的实体定义字段不管是否和它们的缺省值相等都将被输出.这样做的

意图是为了简化处理;对于使用那种操作和处理它们的通用程序,可以总是假设这些字段是

存在的.另外与DXF不同的是,三维坐标是被组合成一个点值表,如(101.02.03.0),而不

象DXF格式中所出现的三个独立的10,20和30组值.

注意,点的子表不同于以上所述的点对型的.我们约定,子表的CDR即为组值,由于点是由两个实数(或三个函数)组成的一个表,所以使得整个组为一个三元素(或四元素)表.这

个组的CDR即为代表此点的表.因此,这便保证了CDR总能返回组值的这个约定.

当编写函数来处理这些实体表时,必须保证它们与子表的顺序无关.使用ASSOC能保证达到这个要求.包含实体名的-1组使得修改操作只须诉诸于实体表,也避免了在平行(另外的)结构内保持实体名的要求.在多义线或属性集最后的SEQEND实体中包含-2组,它的CDR

是这个实体的排头的实体名.这样,查到SEQEND,就能从子实体序列中找到排头,然后用SEQ END实体中-2组的CDR作为实体名,从而由此获得相关联的主实体.

下面的例子表示一个更复杂的实体数据.对此例,我们假定当前的UCS处在WCS中关于Z 轴逆时针旋转40度的位置,实体标号的功能是打开状态和系统变量FLATLAND为零.

Command:LINETYPE

?/Create/Load/Set:SET

New entity linetype:DASHED

?/Create/Load/Set:RETURN

Command:COLOR

New entity color:BLUE

Command:LAYER

?/Make/Set/New/On/Off/Color/Ltype/Freeze/Thaw:MAKE

New current layer<0>:ANNOTATION

?/Make/Set/New/On/Off/Color/Ltype/Freeze/Thaw:RETURN

Command:TEXT

Start point or Align/Center/Fit/Middle/Right/Style:2,2

Height<0.2000>:0.3

Rotation angle<0>:30

Text:So long,and thanks for all the fish!

Command:(setq ed(entget(setq e(entlast))))

在这种情况下,E将被置为TEXT的实体名,而ED被置为它的实体表(如下示).查找Auto CAD参考手册中的附录C就能知道这个表的具体含意.

((-1.)

(0."TEXT");Entity type

(8."ANNOTANTION");Layer

(6."DASHED");Linetype

(62.5);Color

(5."7E");Handle

(102.02.00.0);Start point

(40.0.3);Height

(1."So long,and thanks for all the fish!")

(50.0.523599);Rotation angle(radians)

(41.1.0);Width factor

(51.0.0);Obliquing angle

(7."STANDARD");Text style

(71.0);Generation flags

(72.0);Justification

(110.00.00.0);Alignment point

(2100.0-0.6427880.766044);Extrusion direction vector

相关文档
最新文档