CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于修改没有命令函数的实体(AutoLISP)

2023-1-8 11:00| 发布者: admin| 查看: 471| 评论: 0|来自: AutoCAD

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

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

该函数通过向实体传递与返回的列表相同的格式的列表来修改实体,但应用程序修改了一些实体组代码值(大概)。此功能是对补充。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 )

GMT+8, 2024-5-19 13:19

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部