CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2019 开发者帮助

关于修改不带命令函数的实体 (AutoLISP)

2024-5-18 17:48| 发布者: admin| 查看: 99| 评论: 0|原作者: admin|来自: AutoCAD

关于修改不带命令函数的实体 (AutoLISP)

可以通过更改实体列表并将更改发布回数据库来直接修改实体。

该函数通过向实体传递一个列表来修改实体,该列表的格式与应用程序返回的列表相同,但某些实体组代码值(可能)由应用程序修改。此功能补充了 .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 分配给某些组代码的值:-2,实体名称参照;-1,实体名称;5,实体句柄。任何更改内部字段(例如,Seqend 子实体中的主实体名称(组代码 -2))的尝试都将被忽略。
  • 视口实体。尝试更改视口实体会导致错误。

修改尺寸和填充图案时,存在其他限制。

AutoCAD 必须识别实体列表引用的所有对象(图层除外)。在将实体列表传递给 之前,必须在当前图形中定义实体列表中出现的任何文本样式、线型、形状或块的名称。唯一的例外是接受新的图层名称。如果图元列表引用的图层名称尚未在当前图形中定义,则创建一个新图层。新图层的属性是 AutoCAD LAYER 命令的“新建”选项使用的标准默认值。entmodentmodentmod

该函数可以修改子实体,例如折线顶点和块属性。如果用于修改块定义中的图元,则会影响模型空间和图纸空间中存在的对该块的所有引用。除非定义为常量,否则不会为图形中存在的每个块参照更新属性。此外,块定义中的实体不能被 删除。entmodentmodentdel


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1   苏公网安备32011402011833)

GMT+8, 2024-12-15 11:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部