可以通过更改实体列表并将更改发布回数据库来直接修改实体。 该函数通过向实体传递与返回的列表相同的格式的列表来修改实体,但应用程序修改了一些实体组代码值(大概)。此功能是对补充。AutoLISP 应用程序更新数据库的主要机制是检索实体,修改其实体列表,然后将列表传递回数据库。entmodentgetentgetentgetentmod 下面的示例代码检索图形中第一个实体的定义数据,并将其图层属性更改为 MYLAYER。 (setq en (entnext)) ; Sets en to first entity name in the drawing. (setq ed (entget en)) ; Sets ed to the entity data for entity name en. (setq ed (subst (cons 8 "MYLAYER") (assoc 8 ed) ; Changes the layer group in ed. ed ; to layer MYLAYER. ) ) (entmod ed) ; Modifies entity en's layer in the drawing. 对数据库所做的更改有限制;不能更改以下内容:entmodentmod
修改尺寸和填充图案时,其他限制适用。 AutoCAD 必须识别实体列表引用的所有对象(图层除外)。在将实体列表传递到之前,必须在当前图形中定义实体列表中出现的任何文本样式、线型、形状或块的名称。唯一的例外是接受新的图层名称。如果实体列表引用的图层名称尚未在当前图形中定义,则创建一个新图层。新图层的属性是 AutoCAD LAYER 命令的“新建”选项使用的标准默认值。entmodentmodentmod 该函数可以修改子实体,例如折线顶点和块属性。如果使用修改块定义中的图元,则会影响模型空间和图纸空间中存在的对该块的所有引用。除非定义为常量,否则不会为图形中存在的每个块参照更新属性。此外,块定义中的实体不能被 删除。entmodentmodentdel |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )
GMT+8, 2024-6-10 19:17
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.