События документа Document

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

  • BeginDocumentClose : Событие, генерируемое перед закрытием документа. Событие, генерируемое перед закрытием документа. Позволяет разработчику вызвать метод DocumentBeginCloseEventArgs.Veto() при обработке этого события, чтобы остановить закрытие документа. Соответствует функции ObjectARX API AcEditorReactor.docCloseAborted();
  • CloseAborted : Событие, возникающее после того, как в обработчике отменяется закрытие документа. Это событие попадет во все реакторы, которые получают событие beginDocClose. Соответствует функции ObjectARX API AcEditorReactor.docCloseAborted();
  • CloseWillStart : Событие, возникающее после BeginDocumentClose и перед закрытием чертежа. Соответствует функции ObjectARX API AcEditorReactor.docCloseWillStart();
  • CommandCancelled : Событие, означающее, что команда cmdStr была отменена пользователем или другим приложением, и не смогла быть успешно завершена. Соответствует функции ObjectARX API AcEditorReactor.commandcanceled();
  • CommandFailed : Событие, означающее что команда cmdStr аварийно завершена. Соответствует функции ObjectARX API AcEditorReactor.commandFailed();
  • CommandWillStart : Событие, возникающее перед началом выполнения команды cmdStr. Соответствует функции ObjectARX API AcEditorReactor.commandWillStart();
  • ImpliedSelectionChanged : Событие, возникающее при изменении набора предварительно выбранных объектов в документе (pickfirst). Оно возникает для всех действий, добавляющих или удаляющих объекты из этого набора. Действия, меняющие геометрию или свойства объектов из этого набора (сдвиг, удлинение и т.д.) не вызывают этого события. Соответствует функции ObjectARX API AcEditorReactor.pickfirstModified();
  • LispCancelled : Событие, возникающее при прерывании выполнения lisp выражения в документе. Соответствует функции ObjectARX API AcEditorReactor.lispCancelled();
  • LispEnded : Событие, возникающее при прерывании выполнения lisp выражения в документе. Соответствует функции ObjectARX API AcEditorReactor.lispEnded();
  • LispWillStart : Событие, возникающее перед началом выполнения lisp выражения в документе. Соответствует функции ObjectARX API AcEditorReactor.lispWillStart();
  • UnknownCommand : Событие, возникающее при вызове команды, которую AutoCAD не распознает. Соответствует функции ObjectARX API AcEditorReactor.unknownCommand();
  • ViewChanged : Событие возникает, когда параметры текущего вида были изменены;

Примечание: в nanoCAD .NET API не реализованы события BeginDwgOpen, CommandEnded, EndDwgOpen, LayoutSwitched.

Пример ниже содержит код, подписывающийся на событие закрытия документа. Перед закрытием будет выведено диалоговое окно, при выборе в окне команды "No" закрытие документа будет прекращено.

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

[CommandMethod("AddDocEvent")]
public void AddDocEvent()
{
  // Get the current document
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
  acDoc.BeginDocumentClose +=
      new DocumentBeginCloseEventHandler(docBeginDocClose);
}
[CommandMethod("RemoveDocEvent")]
public void RemoveDocEvent()
{
  // Get the current document
  Document acDoc = Application.DocumentManager.MdiActiveDocument;
  acDoc.BeginDocumentClose :=
      new DocumentBeginCloseEventHandler(docBeginDocClose);
}
public void docBeginDocClose(object senderObj,
                             DocumentBeginCloseEventArgs docBegClsEvtArgs)
{
  // Display a message box prompting to continue closing the document
  if (System.Windows.Forms.MessageBox.Show(
                       "The document is about to be closed." +
                       "\nDo you want to continue?",
                       "Close Document",
                       System.Windows.Forms.MessageBoxButtons.YesNo) ==
                       System.Windows.Forms.DialogResult.No)
  {
      docBegClsEvtArgs.Veto();
  }
}