События вызова,отмены,ошибки,завершение для своих команд

Автор Тема: События вызова,отмены,ошибки,завершение для своих команд  (Прочитано 7332 раз)

0 Пользователей и 3 Гостей просматривают эту тему.

Оффлайн xSAKABSxАвтор темы

  • ADN Club
  • Сообщений: 36
  • Карма: 1
Есть команда которая вызывает модальное окно,
как сделать так чтоб при закрытии окна с помощью крестика или кнопки "Отмена" было вызвано событие Document.CommandCancelled а не Document.CommandEnded

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
1. Ты имеешь в виду команду, которую ты написал при помощи .NET ?
2. Объясни зачем это нужно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн xSAKABSxАвтор темы

  • ADN Club
  • Сообщений: 36
  • Карма: 1
Александр, приветствую.

Да команда на .net
Тут встал вопрос о ведение логов использования команд проектировщиками, при помощи стандартных средств System.Diagnostics.EventLog.
И чтобы не дописывать команды, я решил отслеживать их по событию Document.CommandEnded
Просто не честно писать в лог команду если она в итоге не отработала, а была прервана.


Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Хм. Интересный вопрос. Боюсь, что средствами .NET этого сделать нельзя. Начиная с AutoCAD 2013 есть недокументированная функция acedSendCommandCancelled, а до того ничего подобного я не нашел.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Кстати есть еще и событие commandFailed
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Еще немного поковырявшись в мозгах я придумал такой вариант:
Код - C# [Выбрать]
  1. [CommandMethod("TestCancel")]
  2. public void TestCancel()
  3. {
  4.   Document doc = Application.DocumentManager.MdiActiveDocument;
  5.   Editor ed = doc.Editor;
  6.   doc.SendStringToExecute("\x03",false,false,false);
  7.   ed.GetPoint("");
  8. }
Проверял его работоспособность только в AutoCAD 2014, хотя в принципе должно работать во всех версиях. Немного нервирует сообщение *Cancel* в командной строке, но раз уж ты так решил издеваться над AutoCAD, то придется потерпеть.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн xSAKABSxАвтор темы

  • ADN Club
  • Сообщений: 36
  • Карма: 1
Александр Ривилис,
по поводу commandfailed мне тоже интересно;
по поводу прерывания команды , у текстовых команд с этим проблем нету =),
ну а у родных команд автокада которые вызывают любые окна тоже самое  что и у меня ,  вызвал окно вот тебе команда закончена =)

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
по поводу прерывания команды , у текстовых команд с этим проблем нету =),
Тот код, который я дал ты можешь запустить после закрытия окна и CommandCancelled обеспечена.
ну а у родных команд автокада которые вызывают любые окна тоже самое  что и у меня ,  вызвал окно вот тебе команда закончена =)
Переведи. Я не понял что ты имеешь в виду.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн xSAKABSxАвтор темы

  • ADN Club
  • Сообщений: 36
  • Карма: 1
Переведи. Я не понял что ты имеешь в виду.
Любые команды автокада, которые вызывают модальные окна(style например),
при любом исходе событий то есть,
было ли просто закрыто окно, или нажата  кнопка отмены,
все равно вызывает событие commandEnded , хотя по идее должно быть commandCancelled
 

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
А! Ты об этом. Ну вообще-то событие commandCancelled возникает только при нажатии ESC, о чем в документации четко сказано.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение