Подписка на события из ActiveX (COM)
AutoCAD ActiveX (COM) API содержит некоторую функциональность, отсутствующую в настоящем .NET API, там также есть возможность подписки на события, но этот процесс будет выглядеть немного по-другому, подписываться будет необходимо на соответствующие события у интерфейсов. В примере ниже приводится процесс подписки на событие NewDrawing, срабатывающее после создания нового документа в AutoCAD.
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Interop;
AcadApplication acAppCom;
[CommandMethod("AddCOMEvent")]
public void AddCOMEvent()
{
// Set the global variable to hold a reference to the application and
// register the BeginFileDrop COM event
acAppCom = Application.AcadApplication as AcadApplication;
acAppCom.NewDrawing +=
new _DAcadApplicationEvents_NewDrawingEventHandler(appNewDrawing);
}
[CommandMethod("RemoveCOMEvent")]
public void RemoveCOMEvent()
{
// Unregister the COM event handle
acAppCom.NewDrawing -=
new _DAcadApplicationEvents_NewDrawingEventHandler(appNewDrawing);
acAppCom = null;
}
public void appNewDrawing()
{
Application.ShowAlertDialog("Drawing " + Application.DocumentManager.MdiActiveDocument.Name + " is now active!");
}