Сообщество программистов Autodesk в СНГ

ADN Club => AutoCAD .NET API => Тема начата: Вильдар от 23-06-2018, 19:53:50

Название: Событие или проверка закрытия автокада
Отправлено: Вильдар от 23-06-2018, 19:53:50
Как проверить что автокад закрывается?
Нужно проверить до закрытия чертежей и Terminate приложений.
Вроде было что-то такое. Найти не могу.
Заранее спасибо!  :-*  ;D
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 19:55:41
Например, Application.BeginQuit
Название: Re: Событие или проверка закрытия автокада
Отправлено: Вильдар от 23-06-2018, 19:57:01
Не подходит  :(
Оно после закрытия чертежей происходит.
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 19:59:11
А Application.BeginCloseAll ?
Название: Re: Событие или проверка закрытия автокада
Отправлено: Вильдар от 23-06-2018, 20:01:43
Не вижу такого события Application.BeginCloseAll.
Автокад 2017.
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 20:04:12
Не подходит  :(
Оно после закрытия чертежей происходит.
А ты не путаешь? В этом событии можно вызвать Veto() и тогда AutoCAD не должен закрываться.
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 20:06:41
Не вижу такого события Application.BeginCloseAll.
Автокад 2017.
Да. В 2017-ом его нет. Разве что отлавливать поштучное закрытие окон (Document.CloseWillStart).
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 20:08:11
Еще можно попробовать через ActiveX/COM событие: AcadApplication.BeginQuit
Название: Re: Событие или проверка закрытия автокада
Отправлено: Вильдар от 23-06-2018, 20:11:08
Хочу сделать штуку по восстановлению открытых чертежей. Как вкладки у браузера при старте.

Да, события закрытия приложения происходят после событий закрытия чертежей.
Вот тут тоже так http://drive-cad-with-code.blogspot.com/2011/10/about-terminate-method-of.html:
Цитировать
Document C:\Users\norm\Documents\Drawing3.dwg closing begins
Document C:\Users\norm\Documents\Drawing3.dwg closing begins
Document C:\Users\norm\Documents\Drawing3.dwg is about to be destroyed
Database in document C:\Users\norm\Documents\Drawing3.dwg is about to be destroyed
Document C:\Users\norm\Documents\Drawing3.dwg has been destroyed
Document C:\Users\norm\Documents\Drawing2.dwg closing begins
Document C:\Users\norm\Documents\Drawing2.dwg closing begins
Document C:\Users\norm\Documents\Drawing2.dwg is about to be destroyed
Database in document C:\Users\norm\Documents\Drawing2.dwg is about to be destroyed
Document C:\Users\norm\Documents\Drawing2.dwg has been destroyed
Document C:\Users\norm\Documents\Drawing1.dwg closing begins
Document C:\Users\norm\Documents\Drawing1.dwg closing begins
Document C:\Users\norm\Documents\Drawing1.dwg is about to be destroyed
Database in document C:\Users\norm\Documents\Drawing1.dwg is about to be destroyed
Document C:\Users\norm\Documents\Drawing1.dwg has been destroyed
Quiting Autodesk begins
Autodesk is about to quit
Terminate() is called
Document count is 0
Form1 is disposed, but its reference is still alive
Form2 has not been disposed
Terminate() call is completed
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 20:22:56
Хочу сделать штуку по восстановлению открытых чертежей. Как вкладки у браузера при старте.
Т.е. фактически ты хочешь записать перечень открытых в AutoCAD документов в момент его завершения?
Тогда можешь отловить событие DocumentCollection.DocumentLockModeChanged с глобальным именем команды QUIT. Эта команда запускается и в случае если ты нажимаешь на крестик, закрывая AutoCAD, и если запускаешь команду _QUIT или _EXIT. Отдельно нужно бы обработать ситуацию с аварийным завершением AutoCAD. Но тут вопрос спорный - нужно ли открывать файлы, которые возможно привели к аварийному завершению AutoCAD...
Название: Re: Событие или проверка закрытия автокада
Отправлено: Вильдар от 23-06-2018, 20:23:16
Вроде подходит событие запуска команды "QUIT".
Пока его использую.
Название: Re: Событие или проверка закрытия автокада
Отправлено: Вильдар от 23-06-2018, 20:25:31
Во супер. Все по полочкам.
Про аврарийность - будет окошко выбора открываемых чертежей.
Пока задумка такая. Многие просят.
Если будет нестабильно работать, то уберу совсем.
Спасибо большое!
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 20:25:49
Вроде подходит событие запуска команды "QUIT".
Пока его использую.
Ты про Document.CommandWillStart ? Но на него нужно подписываться в каждом открытом документе, что не очень практично.
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 20:27:19
Про аврарийность - будет окошко выбора открываемых чертежей.
Или что-то типа кнопочки для восстановления предыдущей сессии AutoCAD.
Название: Re: Событие или проверка закрытия автокада
Отправлено: Вильдар от 23-06-2018, 20:31:28
Да, посмотрим как лучше будет. На всех не угодишь.
Спасибо про заметку что событие CommandWillStart в каждом чертеже, а DocumentLockModeChanged общий.
Чуть не упустил это.
Название: Re: Событие или проверка закрытия автокада
Отправлено: Александр Ривилис от 23-06-2018, 20:35:16
Можешь еще поиграться с MGDDBG - он подскажет какие еще события возникают при попытке завершения AutoCAD:
QUIT
[Doc Mgr Event] : Document Lock Mode Will Change : Drawing2.dwg
    Global Command Name  : QUIT
    Current Mode         : NotLocked
    My Current Mode      : NotLocked
    My New Mode          : Write
[Doc Mgr Event] : Document Lock Mode Changed : Drawing2.dwg
    Global Command Name  : QUIT
    Current Mode         : Write
    My Current Mode      : NotLocked
    My Previous Mode     : Write
[Doc Event] : Command will Start        : QUIT
[Doc Mgr Event] : Document Activation Changed : False
[Doc Mgr Event] : Document Activation Changed : True
[Doc Event] : Command Ended             : QUIT
[Doc Mgr Event] : Document Lock Mode Will Change : Drawing2.dwg
    Global Command Name  : #QUIT
    Current Mode         : Write
    My Current Mode      : Write
    My New Mode          : NotLocked
[Doc Mgr Event] : Document Lock Mode Changed : Drawing2.dwg
    Global Command Name  : #QUIT
    Current Mode         : NotLocked
    My Current Mode      : Write
    My Previous Mode     : NotLocked