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