在克隆过程中使用 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 以下规则说明了克隆的重要方面。 父主题: |
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-3-14 08:41
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.