CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

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

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

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

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

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

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

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


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部