深度克隆
AcDbAssocAction 对象遵循常规的深度克隆和 wblockclning 规则。AcDbAssocAction 是其 AcDbAssocDependencies 的硬所有者,因此在克隆操作时,也会克隆其依赖项。当操作由 AcDbAssocNetwork 硬拥有并且网络被克隆时,也会克隆该操作。提供 AcDbAssocAction::addMoreObjectsToDeepClone() 方法是为了更好地控制克隆,并减少应用程序开发人员实现自定义深度克隆反应器的需要。客户端代码可以通过重写相应的 AcDbAssocActionBody::addMoreObjectsToDeepCloneOverride() 方法来提供自己的实现。 参数化绘图框架可跟踪已深度克隆且附加了依赖关系的对象。克隆原始对象集后,将对与已克隆对象具有依赖关系的所有操作调用 addMoreObjectsToDeepClone()。然后,这些操作可以添加更多要克隆的对象,以及添加要克隆的自身。请注意,尽管此时已经克隆了对象,但 ID 尚未翻译;不建议遍历或检查对象克隆;只有原始物体才能被安全地检查。 应用程序可以通过重写和实现 AcDbAssocActionBody::p ostProcessAfterDeepCloneOverride() 方法来执行其他工作。源操作可以通过查阅提供的 AcDbIdMapping 来获取自己的克隆或其他对象的克隆。如果 AcDbAssoc2dConstraintGroup 对象引用已克隆的几何图形,则会添加要克隆的自身。然后,将“约束组”(Constraint Group) 克隆修剪为仅包含所有已克隆的几何之间的约束。引用尚未克隆的几何的约束将从“约束组”(Constraint Group) 克隆中移除。如果克隆了约束组,它还会请求克隆 AcDbAssocVariables,这些变量为约束组拥有的维度约束和 AcDbDimensions 提供值,这些约束作为维度约束的图形表示。 父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-19 07:22
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.