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
.
name:
60000014>)
(0
.
"LINE")
;Entity
type
(8
.
"0")
;Layer
(10
1.0
2.0
0.0)
;Start
point
(11
6.0
6.0
0.0)
;End
point
)
表的开头-1
项包含这个所代表的实体名.下面描述的
ENTMOD
函数将用这种表来识别要
修改的实体.
表示某一值的点对表可以很容易地用
ASSOC
提取,再用
CDR
分离出它们的值.实体中各部
分的编码是
DXF
所用的那些编码,在
AutoCAD
参考手册的附录
C
中有描述.和
DXF
一样,实体题
头项(实体的颜色和线型,属性跟随标志,厚度,及实体标号)只有在不为缺省值时才被输出.
和
DXF
不同的是,任选的实体定义字段不管是否和它们的缺省值相等都将被输出.这样做的