CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

深度克隆

2022-12-31 15:53| 发布者: admin| 查看: 310| 评论: 0|来自: AutoCAD

AcDbAssocAction 对象遵循常规的深度克隆和 wblockcloning 规则。AcDbAssocAction 是其 AcDbAssocDependencies 的硬所有者,因此当克隆操作时,其依赖项也会被克隆。当某个操作由 AcDbAssocNetwork 硬拥有并且网络被克隆时,该操作也会被克隆。AcDbAssocAction::addMoreObjectsToDeepClone() 方法用于更好地控制克隆,并减少应用程序开发人员实现自定义深度克隆反应器的需求。客户端代码可以通过重写相应的 AcDbAssocActionBody::addMoreObjectsToDeepCloneOverride() 方法来提供自己的实现。

参数化绘图框架跟踪已深度克隆的对象以及附加了依赖项的对象。克隆原始对象集后,对所有依赖于已克隆对象的操作调用 addMoreObjectsToDeepClone()。然后,这些操作可以添加更多要克隆的对象,以及添加要克隆的自身。请注意,尽管此时对象已被克隆,但 id 尚未转换;不建议遍历或检查对象克隆;只能安全地检查原始对象。

应用程序可以通过覆盖和实现 AcDbAssocActionBody::p ostProcessAfterDeepCloneOverride() 方法来完成额外的工作。源操作可以通过查阅提供的 AcDbIdMap 来获取自己的克隆或其他对象的克隆。如果 AcDbAssoc2dConstraintGroup 对象引用已克隆的几何图形,则它们将自身添加到要克隆的位置。然后修剪约束组克隆,使其仅包含已全部克隆的几何之间的约束。引用尚未克隆的几何的约束将从约束组克隆中删除。如果克隆约束组,它还会请求克隆 AcDbAssocVariables 和 AcDbDimensions,这些变量为约束组拥有的维度约束提供值,以及用作维度约束的图形表示的 AcDbDimensions。


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部