修改对象(图元)的定义数据
(entmod elist)
entmod 函数更新由 elist 的 -1 组中指定的图元名的数据库信息。AutoLISP 更新数据库信息的基本方法是,先用 entget 函数获得图元的定义数据,修改定义图元的表,然后用 entmod 函数来更新数据库中的图元。entmod 函数既可以修改图形对象,又可以修改非图形对象。
参数
elist
与 entget 函数返回表相同格式的表
对于那些使用浮点值的图元域(如厚度),entmod 函数可以接受整数,并将其转换成浮点数。与此类似,对于使用整数的图元域(如颜色代码),如果提供的是浮点数,entmod 函数会切除其小数部分,将其转换成整数。
返回值
如果成功,则 entmod 返回 elist。如果 entmod 不能修改指定图元,则函数返回 nil。
示例
下列命令获取图元的特性,然后修改图元。
将变量 en1 的值设置为图形中的一个图元的名称:
命令: (setq en1 (entnext))
<图元名: 2c90520>
将图元 en1 的图元数据保存在变量 ed 中:
命令: (setq ed (entget en1))
((-1 . <Entity name: 2c90520>) (0 . "CIRCLE") (5 . "4C") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbCircle") (10 3.45373 6.21635 0.0) (40 . 2.94827) (210 0.0 0.0 1.0))
将 ed 中的图层组从图层 0 改为图层 1:
命令: (setq ed (subst (cons 8 "1") (assoc 8 ed) ed ))
((-1 . <Entity name: 2c90520>) (0 . "CIRCLE") (5 . "4C") (100 . "AcDbEntity") (67 . 0) (8 . "1") (100 . "AcDbCircle") (10 3.45373 6.21635 0.0) (40 . 2.94827) (210 0.0 0.0 1.0))
修改图形中 en1 图元的图层:
命令: (entmod ed)
((-1 . <Entity name: 2c90520>) (0 . "CIRCLE") (5 . "4C") (100 . "AcDbEntity") (67 . 0) (8 . "1") (100 . "AcDbCircle") (10 3.45373 6.21635 0.0) (40 . 2.94827) (210 0.0 0.0 1.0))
entmod 的使用限制
关于 entmod 函数所作的修改有一些限制:
可以将图元的空间可见性改为 0 或 1(视口对象除外)。如果用 entmod 函数修改了块定义中的图元,该修改会影响图形中该块的所有实例。
在用 entmod 函数修改顶点图元前,应先读出或写入多段线的头部。如果最近处理的多段线图元不是该顶点所在的多段线,可能会丢失宽度信息(40 和 41 组)。
警告! 可以用 entmod 函数修改块定义中的图元,但这样做可能会生成引用自身的块,导致 AutoCAD 系统崩溃。
参阅
entdel、 entget、 entmake、entnext 和 handent 函数。Visual LISP 开发人员手册中的 修改图元 和 图元数据函数和图形屏幕。
明经通道 版权所有 未经许可 不得传播 |
评论 |