wblockClone()
有四个版本:AcDbDatabase::wblock() WBLOCK* Acad::ErrorStatus AcDbDatabase::wblock( AcDbDatabase*& pOutputDatabase); 用户定义块的 WBLOCK Acad::ErrorStatus AcDbDatabase::wblock( AcDbDatabase*& pOutputDatabase, AcDbObjectId nObjId); 选择集的 WBLOCK Acad::ErrorStatus AcDbDatabase::wblock( AcDbDatabase*& pOutputDatabase, const AcDbObjectIdArray& pIdSet, const AcGePoint3d& pPoint3d); Acad::ErrorStatus AcDbDatabase::wblock( AcDbDatabase* pOutputDb, const AcDbObjectIdArray& outObjIds, const AcGePoint3d& basePoint, AcDb::DuplicateRecordCloning drc); 这些版本的 wblock 之间的主要内部差异之一是它们对模型空间和纸张空间的处理。由于整个数据库是在版本 1 中克隆的,因此模型空间和图纸空间中的所有实体及其包含图纸和模型空间的实体都将被克隆。但是,在其他版本中,目的是仅克隆一组选定的实体。尽管对模型空间和图纸空间进行了处理,但它们使用“浅层克隆”,这反过来又不会克隆模型空间和图纸空间中包含的所有实体。AcDbBlockTableRecordsAcDbBlockTableRecordsAcDbBlockTableRecords 尽管模型空间和图纸空间块已在版本二和版本三中克隆,但它们仍为空。因此,不仅可以接受将克隆的实体放入其中,而且有必要这样做。(这是使用 on 的例外,其 ID 在变化中)。此外,在版本二和版本三中,实体将设置为在接到呼叫时。这是因为内部代码会单独克隆选择集的实体或所选 .它不会克隆它本身。(但是,嵌套块中的实体仍将设置为 )。此行为很有用,如下一节中的案例 1 所示。它使应用程序不必知道正在发生什么类型的 WBLOCK 操作。AcDbBlockTableRecord::appendAcDbEntity()AcDbBlocKTableRecord::appendAcDbEntity()AcDbBlockTableRecordsisPrimaryAdesk::kTruewblockClone()AcDbBlockTableRecordAcDbBlockTableRecordisPrimaryAdesk::kFalse 以下是一些需要牢记的规则:
|
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-3-14 06:18
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.