CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2018 开发者帮助

在克隆过程中使用 appendAcDbEntity()

2024-5-18 16:58| 发布者: admin| 查看: 114| 评论: 0|原作者: admin|来自: AutoCAD

在克隆过程中使用 appendAcDbEntity()

AcDbBlockTableRecord::appendAcDbEntity()需要有效才能正确进行追加。在克隆过程中,可以将实体附加到 only if 返回 。这表明当前未克隆其本身。当克隆为空时,会发生此规则的一个例外。因为空不包含未翻译的 ,所以追加将正常工作。这种情况在某些形式的 中出现,稍后将更详细地描述。AcDbObjectIdsAcDbBlockTableRecordAcDbBlockTableRecord::isObjectIdsInFlux()Adesk::kFalseAcDbBlockTableRecordAcDbBlockTableRecordAcDbBlockTableRecordAcDbObjectIdswblock()

如果对单个实体调用深度克隆,则必须将其克隆追加到目标。然而,当它本身被深度克隆时,它的所有实体都会被它克隆,调用不仅没有必要,而且会破坏被克隆的实体AcDbBlockTableRecordAcDbBlockTableRecordAcDbBlockTableRecord::appendAcDbEntity()

AcDbBlockTableRecord.

的默认实现,并通过检查值知道何时调用。当一个实体被自身深度克隆时,为 true,并调用 append。如果实体是深度克隆 的结果,则为 false,并且不会调用 append。deepClone()wblockClone()AcDbBlockTableRecord::appendAcDbEntity() isPrimaryisPrimaryAcDbBlockTableRecordisPrimary

通常,应用程序不需要关注此细节,可以依赖实体的默认实现来处理实体。但是,当应用程序可能希望在克隆期间添加实体或使用对实体的硬引用时,可能会出现这种情况。硬引用实体的值为 ,并且不会调用 append,即使它可能需要这样做也是如此。下一节将介绍这种情况。deepClone()wblockClone()isPrimaryAdesk::kFalse

以下规则说明了克隆的重要方面。


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2025-3-14 08:41

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部