CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2019 开发者帮助

在 wblockClone() 期间处理对 AcDbEntities 的硬引用

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

在 wblockClone() 期间处理对 AcDbEntities 的硬引用

如果使用对 的引用或硬编码引用创建自定义对象,则负责在 期间需要调用引用的实体。在此上下文中,硬编码引用是指对象通过应用程序中编写的某些自定义代码导致实体包含在实体中的任何情况。AcDbHardPointerIdAcDbEntityAcDbBlockTableRecord::appendAcDbEntity()wblock()wblockClone()

必须手动执行追加,因为在调用引用对象时,默认实现将始终设置为。如果对象是 ,则此设置指示不要追加实体。但是,如上一节所述,如果我们不执行 WBLOCK*,并且克隆的实体将占用模型空间或图纸空间,则必须覆盖默认行为并调用追加。AcDbDatabase::wblockClone()isPrimaryAdesk::kFalsewblockClone()AcDbEntitywblockClone()

如果允许在对实体的调用中发生默认行为,则其克隆将最终位于数据库中,但它将是无所有者的。它不会附加到其新所有者,并且当前没有通过 API 完成其附加的方法。对于要追加的引用实体,必须在调用其函数之前将该值重置为该值。wblockClone()isPrimaryAdesk::kTruewblockClone()

注意:使用默认实现并驻留在命名对象字典中的自定义对象必须实现其 and 函数。当文件管理器类型为 时,这些函数应将其所有者的对象 ID 作为硬指针 ID 归档。这可确保所属对象也将包含在操作中。存储在其他对象的扩展字典中的自定义对象,或者已实现自己的方法(包括所有者)的对象,不需要提交其所有者的对象 ID。AcDbObject::wblockClone()dwgOutFields()dwgInFields()AcDb::kWblockCloneFilerwblockClone()wblockClone()

以下两种情况显示了如何处理从自定义对象到另一个实体的硬引用。第一种情况更简单,但它要求引用和引用的实体始终存在于同一个 .第二个显示如果两个实体可以存在于不同的记录中,或者当引用位于 而不是 .AcDbBlockTableRecordAcDbObjectAcDbEntity


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-6-27 15:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部