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

ADN Club => AutoCAD .NET API => Тема начата: Дмитрий Загорулькин от 14-09-2016, 01:54:19

Название: Команды AutoCAD. Всегда ли последовательно выполнение основных команд?
Отправлено: Дмитрий Загорулькин от 14-09-2016, 01:54:19
Поискал, по крайней мере здесь, вроде бы, не задавали еще такой вопрос. Насколько можно полагаться на то, что команды автокада выполняются последовательно друг за другом? Может ли возникнуть ситуация когда во время работы команды будет запущена-завершена другая команда?
Немного поясню. Есть такие события у документа: CommandWillStart, CommandEnded, CommandCancelled и CommandFailed(кстати, вот это событие ни разу не удалось словить, но на всякий случай и его обрабатываю). Как показывают эксперименты, события срабатывают только в момент запуска-прекращения основных команд, т.е. прозрачные команды типа 'PAN, 'ZOOM, 'MTP и т.п. не вызывают этих событий. И, вроде как, всегда выполняется правило, что если команда была запущена - сработало событие CommandWillStart, то потом обязательно сработает CommandEnded или CommandCancelled и только затем может быть запущена новая команда. Я же до сегодняшнего дня всегда проверял в событиях завершения команды ее название и сверял с тем, которое получал в событии запуска команды, чтобы точно быть уверенным, что была завершена именно та команда, которая запускалась. А вот сейчас такая проверка сильно мне мешает и я задумался о ее целесообразности. Если команды всегда выполняются последовательно, то нет смысла проверять название завершившейся команды - это будет та команда, которая была запущена. Или же возможна другая ситуация?
Извините, вам запрещён просмотр содержимого спойлеров.
Название: Re: Команды AutoCAD. Всегда ли последовательно выполнение основных команд?
Отправлено: Александр Ривилис от 14-09-2016, 10:04:29
Или же возможна другая ситуация?
Конечно возможна при запуске во время работы одной команды другой:
Command: LINE
[Doc Event] : Command will Start        : LINE
Specify first point: 'setvar
[Doc Event] : Command will Start        : SETVAR>>Enter variable name or [?]:
[Doc Event] : Command Ended             : SETVAR
Resuming LINE command.
Specify first point:
No line or arc to continue.
Specify first point: *Cancel*
[Doc Event] : Command Cancelled         : LINE
Название: Re: Команды AutoCAD. Всегда ли последовательно выполнение основных команд?
Отправлено: Дмитрий Загорулькин от 14-09-2016, 13:03:27
Да, как-то плохо я проверял. Действительно, запускаемые параллельно команды тоже вызывают эти события. Буду думать, как с этим быть. Спасибо!