深度克隆基础知识
深度克隆函数复制对象及其所有权引用。任何指针引用都将被忽略。wblock clone 函数复制硬所有者和硬指针,并忽略软引用。除了复制所拥有对象的层次结构之外,深度克隆函数和 wblock 克隆函数还处理克隆对象的引用,并在必要时将引用转换为指向新对象。 若要启动克隆操作,请使用以下函数之一: AcDbDatabase::deepCloneObjects() AcDbDatabase::wblock() AcDbDatabase::insert() AcDbDatabase::deepCloneObjects()仅支持在单个数据库内进行克隆。如果需要在数据库之间克隆对象,请使用、 或两者的组合(例如,克隆到临时数据库,然后将该数据库克隆到现有目标数据库)。wblock()insert()wblock()insert() 使用 时,仅插入到已构建的目标数据库。通过使用当前图形生成构造函数参数为 的新数据库,或者使用构造函数参数 创建空的新数据库,然后调用该数据库来填充该数据库,可以获取完全构建(并且可能已完全填充)的目标数据库。AcDbDatabase::insert()Adesk::kTrueAdesk::kFalseAcDbDatabase::readDwgFile() 一般来说,要使用 ,AcDbDatabase::deepCloneObjects() AcDbDatabase::wblock(),或代码中的函数,则无需了解对象 ID 映射的填充方式,也无需了解深度克隆的每个阶段所发生的情况。如果要创建一个新类,并且想要覆盖 或AcDbDatabase::insert()AcDbObject::deepClone() AcDbObject::wblockClone()函数,您需要熟悉这些函数的详细信息,这些函数在为自定义类实现 deepClone() 中进行了描述。 不应直接在应用程序代码中的自定义对象上调用 and 函数。它们仅作为更高级别克隆操作的链的一部分被调用。AcDbObject::deepClone()AcDbObject::wblockClone() 父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-19 06:52
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.