AcDbObjects 和自动化对象之间的关系
AutoCAD 通过在驻留在数据库的对象 () 和表示该对象的 COM 对象之间创建链接来与其 ActiveX Automation 对象模型进行通信。此链接由两个单向指针组成。第一个指针引用 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-3-14 06:40
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.