明经通道 AutoLISP 函数  
entmod
 

修改对象(图元)的定义数据

(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 系统崩溃。

参阅

entdelentgetentmakeentnexthandent 函数。Visual LISP 开发人员手册中的 修改图元图元数据函数和图形屏幕

明经通道 版权所有 未经许可 不得传播

 评论