AUTO LISP函数参考5
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
?/Create/Load/Set:RETURN
Command:COLOR
New entity color
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