CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2018 开发者帮助

wblockClone()

2024-5-18 16:58| 发布者: admin| 查看: 131| 评论: 0|原作者: admin|来自: AutoCAD

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

以下是一些需要牢记的规则:

  1. 切勿在 期间使用 。如果必须创建新实体,则必须将它们与其未来所有者的 ID 一起保存在内存中,然后将它们追加到 .这也适用于将对象追加到 、折线、多面网格、多边形网格和块参照。AcDbBlocKTableRecord::appendAcDbEntity()WBLOCK*AcEdItorReactor::endDeepClone()AcDbDictionaries
  2. 在其他形式的 WBLOCK 中,仅在追加到模型空间或图纸空间时使用。但除了这个例外,WBLOCK* 提到的所有其他限制仍然适用。AcDbBlocKTableRecord::appendAcDbEntity()

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2025-3-14 06:18

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部