CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

深度克隆基础知识

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

深层克隆函数复制对象及其所有权引用。将忽略任何指针引用。wblock 克隆函数复制硬所有者和硬指针,并忽略软引用。除了复制拥有对象的层次结构之外,深层克隆函数和 wblock 克隆函数还处理克隆对象的引用,并在必要时将引用转换为指向新对象。

要启动克隆操作,请使用以下函数之一:

AcDbDatabase::deepCloneObjects()
AcDbDatabase::wblock()
AcDbDatabase::insert()

AcDbDatabase::deepCloneObjects()仅支持在单个数据库中克隆。如果需要在数据库之间克隆对象,请使用其中之一或两者的组合(例如,克隆到临时数据库,然后将该数据库克隆到现有目标数据库中)。wblock()insert()wblock()insert()

使用时,仅插入到已构建的目标数据库。通过使用构造函数参数 ofor 生成新数据库,可以使用构造函数参数 ofor 生成一个空的新数据库,然后调用它来填充它,从而获得完全构建(并且可能完全填充)的目标数据库。AcDbDatabase::insert()Adesk::kTrueAdesk::kFalseAcDbDatabase::readDwgFile()

一般来说,要使用,AcDbDatabase::deepCloneObjects()

AcDbDatabase::wblock(),或函数 在代码中,您不需要知道对象 ID 映射是如何填充的,或者深度克隆的每个阶段到底发生了什么。如果要创建一个新类,并且想要覆盖AcDbDatabase::insert()AcDbObject::deepClone()

AcDbObject::wblockClone()函数中,您需要熟悉这些函数的详细信息,这些详细信息在为自定义类实现 deepClone() 中进行了描述。

不应直接在应用程序代码中的自定义对象上调用 TheandFunctions。它们仅作为来自更高级别的克隆操作的链的一部分进行调用。AcDbObject::deepClone()AcDbObject::wblockClone()


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部