Тема: Связь между AcDbEntity и IAcadEntity
Существует указатель на абстрактный геомметрический обект (отрезок, окружность, дуга и т.д.) и в разные моменты реальные типы, на которые он указывает, могут отличаться.
AcDbEntity *subEnt;
Его нужно передать в VBA
Sub test()
Dim subEnt as AcadEntity
Dim myObj as MyObjectComWrapper
Set myObj = ThisDrawing.ModelSpace.AddCustomObject("MyObject")
Set subEnt = myObj.getSubEnt() ‘ Тут и нужно добраться до AcDbEntity *subEnt;
‘Или так status = myObj.getSubEnt(subEnt)
End sub
Тогда в ObjectARX функция getSubEnt() выглядит примерно так
STDMETHODIMP CMyObjectComWrapper::getSubEnt(IAcadEntity *ent)
{
try {
AcAxObjectRefPtr<MyObject> pRef(&m_objRef, AcDb::kForRead);
es = pRef.openStatus(); if ( es != Acad::eOk) throw es;
AcDbEntity *subEnt = pRef->mySubEnt;
// И теперь как-то subEnt привести к возвращаемому ent
}
catch {…}
return S_OK;
}