CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

在克隆过程中使用 appendAcDbEntity()

2022-12-31 17:58| 发布者: admin| 查看: 297| 评论: 0|来自: AutoCAD

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

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

AcDbBlockTableRecord.

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

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

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


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 14:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部