События приложения AutoCAD

События приложения AutoCAD (вернее, для статического класса Application) позволяют отлавливать действия с окном самого AutoCAD и действиями на уровне всего приложения:

  • BeginDoubleClick : при двукратном нажатии на ЛКМ;
  • BeginQuit : перед закрытием AutoCAD;
  • Idle : срабатывает при загрузке AutoCAD (появление меню);
  • QuitAborted : при попытке прервать завершение работы AutoCAD;
  • QuitWillStart : после срабатывания события BeginQuit и перед завершением работы AutoCAD;
  • SystemVariableChanged : после изменения системной переменной;
  • SystemVariableChanging : перед изменением системной переменной;

Примечание: в nanoCAD .NET API не реализованы события BeginCustomizationMode, DisplayingCustomizeDialog, DisplayingDraftingSettingsDialog, DisplayingOptionDialog, EndCustomizationMode, EnterModal, LeaveModal, PreTranslateMessage

В примере ниже приведен код, осуществляющий подписку на событие SystemVariableChanged. После того, как системная переменная была изменена, появится модальное диалоговое окно с сообщением, какое новое значение у измененной переменной. После запуска метода AddAppEvent для запуска связанной с обработчиком события процедуры (вывода модального окна с новым значением переменной) измените вручную в AutoCAD значение любой системной переменной

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;

[CommandMethod("AddAppEvent")]
public void AddAppEvent()
{
    Application.SystemVariableChanged +=
        new SystemVariableChangedEventHandler(appSysVarChanged);
}
[CommandMethod("RemoveAppEvent")]
public void RemoveAppEvent()
{
    Application.SystemVariableChanged :=
        new SystemVariableChangedEventHandler(appSysVarChanged);
}
public void appSysVarChanged(object senderObj,
                             Autodesk.AutoCAD.ApplicationServices.
                             SystemVariableChangedEventArgs sysVarChEvtArgs)
{
    object oVal = Application.GetSystemVariable(sysVarChEvtArgs.Name);
    // Display a message box with the system variable name and the new value
    Application.ShowAlertDialog(sysVarChEvtArgs.Name + " was changed." +
                                "\\nNew value: " + oVal.ToString());
}