CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

AcDbObjects 和自动化对象之间的关系

2022-12-31 12:47| 发布者: admin| 查看: 273| 评论: 0|来自: AutoCAD

AutoCAD 通过在驻留在数据库的对象 () 和表示它的 COM 对象之间创建链接来与其 ActiveX 自动化对象模型进行通信。此链接由两个单向指针组成。第一个指针引用 COM 对象。它使用瞬态反应器储存在上面。第二个指针是驻留在数据库的对象,该对象作为成员变量存储在 COM 对象上。AcDbObjectIUnknownAcDbObjectAcDbObjectId

链接允许您从指针中检索 COM 对象的现有指针,如以下代码所示:IUnknownIUnknownAcDbObject

AcAxOleLinkManager* pOleLinkManager = AcAxGetOleLinkManager();
// pObject is an AcDbObject*
// 
IUnknown* pUnk = pOleLinkManager->GetIUnknown(pObject);
// NOTE: AcAxOleLinkManager::GetIUnknown() does not AddRef() 
// the IUnknown pointer.

相反,可以从接口指针检索由 COM 对象表示的数据库驻留对象,如以下代码所示:AcDbObjectId

IAcadBaseObject* pAcadBaseObject = NULL;
// pUnk is the IUnknown* of a COM object representing 
// some object in the database
//
HRESULT hr = pUnk->QueryInterface(IID_IAcadBaseObject, 
    (LPVOID*) &pAcadBaseObject); 
AcDbObjectId objId;
if(SUCCEEDED(hr))
{
    pAcadBaseObject->GetObjectId(&objId);
}

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-5-19 13:52

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部