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); } |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:05
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.