Подписка на Database.SavedComplete (Database.BeginSave)

Автор Тема: Подписка на Database.SavedComplete (Database.BeginSave)  (Прочитано 10420 раз)

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

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
Приветствую.
Класс такой:
Код - C# [Выбрать]
  1.     public class Class1 : IExtensionApplication
  2.     {
  3.         public void Initialize()
  4.         {
  5.             Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("before");
  6.             MainMethod();
  7.             Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("after");
  8.         }
  9.  
  10.         public void Terminate()
  11.         {
  12.             //
  13.         }
  14.         private void MainMethod()
  15.         {
  16.             Document doc = Application.DocumentManager.MdiActiveDocument;
  17.             Database db = doc.Database;
  18.             /// подписка на событие окончания сохранения файла
  19.             #region
  20.             Application.DocumentManager.MdiActiveDocument.Database.SaveComplete += new DatabaseIOEventHandler(dbSaveComplete);
  21.             #endregion
  22.         }
  23.  
  24.         private void dbSaveComplete(object sender, DatabaseIOEventArgs e)
  25.         {
  26.             //Application.ShowAlertDialog("Saved");
  27.             Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\nSaved");
  28.         }
  29.     }

Результат: не срабатывает. Причем как инициализация не срабатывает, так и все остальное.
Исправил public void MainMethod() на private void MainMethod(); и инициализация заработала.

срабатывает.

AutoCAD 2014x64 + Win7

Только почему модельное сообщение не показывается а в консоль отправляется?
« Последнее редактирование: 02-02-2015, 15:39:26 от Александр Ривилис »
Я не профессиональный программист, сделайте скидку ))

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
версия акада?

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
Шапку обновил. И код тоже.
Я не профессиональный программист, сделайте скидку ))

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Только почему сообщение не показывается?
О каком сообщении речь: о том, что в консоль отправляется, или о том, которое в модальном окне должно отображаться?

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
Да. Опять напутал.
В консоли сообщение отображается, а модальное нет.
Я не профессиональный программист, сделайте скидку ))

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Да. Опять напутал.
В консоли сообщение отображается, а модальное нет.
Потому что у тебя эта строка кода закомментирована. :)

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
 ;)да нет же. Если я ее раскомментирую, то модальное сообщение не показывается. А сообщение в консоли отображается.
Я не профессиональный программист, сделайте скидку ))

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
да нет же. Если я ее раскомментирую, то модальное сообщение не показывается. А сообщение в консоли отображается.
Ты уж как-то синхронизируй свои вопросы с кодом, который показываешь. :)

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
не успел... :-\ собственно подписка на событие работает. Вопрос почему не показывается модальное окно, если код будет выглядеть так:
Код - C# [Выбрать]
  1.     public class Class1 : IExtensionApplication
  2.     {
  3.         public void Initialize()
  4.         {
  5.             MainMethod();
  6.         }
  7.  
  8.         public void Terminate()
  9.         {
  10.             //
  11.         }
  12.         private void MainMethod()
  13.         {
  14.             Document doc = Application.DocumentManager.MdiActiveDocument;
  15.             Database db = doc.Database;
  16.             /// подписка на событие окончания сохранения файла
  17.             #region
  18.             Application.DocumentManager.MdiActiveDocument.Database.SaveComplete += new DatabaseIOEventHandler(dbSaveComplete);
  19.             #endregion
  20.         }
  21.  
  22.         private void dbSaveComplete(object sender, DatabaseIOEventArgs e)
  23.         {
  24.             Application.ShowAlertDialog("Saved");
  25.         }
  26.     }
« Последнее редактирование: 02-02-2015, 15:40:33 от Александр Ривилис »
Я не профессиональный программист, сделайте скидку ))

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Дай-ка я ещё попробую догадаться... Загрузить-то .NET сборку ты загружаешь, но затем выполнить сохранение файла забываешь... Я прав? :) Будь собранней!

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #10 : 02-02-2015, 15:42:06 »
На всякий случай даю дополнительную информацию: это окошко у тебя скорее всего не будет появляться в AutoCAD 2015, если твой плагин зарегистрирован в реестре (возможно что и через Bundle-механизм так же не будет) и обозначен к автоматической загрузке при старте акада.

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #11 : 02-02-2015, 15:55:07 »
Дай-ка я ещё попробую догадаться... Загрузить-то .NET сборку ты загружаешь, но затем выполнить сохранение файла забываешь... Я прав? :) Будь собранней!
ан нет... не забываю... я же говорю, при сохрании файла...

Ну 2015 акад меня пока не очень интересует. Работаем в 2014
Я не профессиональный программист, сделайте скидку ))

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #12 : 02-02-2015, 15:59:24 »
ан нет... не забываю... я же говорю, при сохрании файла...
Я говорю о том же. У меня твой код работает, окошко появляется при сохранении текущего файла (в режиме отладки сохраняю новый файл).
Цитировать
Ну 2015 акад меня пока не очень интересует. Работаем в 2014
Не интересует - и слава Богу. Информацию дал на тот случай, если в будущем всё же заинтересует.

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

  • Administrator
  • *****
  • Сообщений: 13832
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #13 : 02-02-2015, 16:06:48 »
Я говорю о том же. У меня твой работает, окошко появляется при сохранении текущего файла (в режиме отладки сохраняю новый файл).
Аналогично. Проверял в AutoCAD 2014 SP1 x64. На всякий случай проверял при разных значениях FIBERWORLD - работает в любом случае.

dp, а ты уверен, что у тебя сохраняется именно та база, на которую ты подписался?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #14 : 02-02-2015, 16:09:26 »
dp, а ты уверен, что у тебя сохраняется именно та база, на которую ты подписался?
именно поэтому я и уточнял насчёт 2015-го :)

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #15 : 02-02-2015, 16:16:15 »
Собственно это не так важно. Не появляется да и, как говорится, ляд с ним, главное что подписка работает. А окошко показывал для отладки.

Спасибо всем откликнувшимся и уделившим мне время.
Я не профессиональный программист, сделайте скидку ))

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

  • Administrator
  • *****
  • Сообщений: 13832
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #16 : 02-02-2015, 16:17:47 »
Не появляется да и, как говорится, ляд с ним, главное что подписка работает.
Не уверен. Это возможно следствие какой-то более глубокой проблемы.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #17 : 02-02-2015, 16:18:02 »
А окошко показывал для отладки.
Жуть. А зачем? Чем не устраивают "брэйк-поинты"?

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #18 : 02-02-2015, 16:52:17 »
Насчет проблемы более глубоких - да. Там посмотрим.

Брейкпоинты хороши. Приучаюсь использовать их, но в силу своей косности не всегда могу заставить себя. :) :)
Я не профессиональный программист, сделайте скидку ))

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #19 : 03-02-2015, 09:35:59 »
Чудо.
Перезагрузка компа решила проблему не показа модального сообщения.
Теперь все показывается.
Я не профессиональный программист, сделайте скидку ))

Оффлайн Денис ПерепецкийАвтор темы

  • ADN Club
  • Сообщений: 22
  • Карма: 1
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #20 : 03-02-2015, 09:48:57 »
А вот такой вопрос в догонку: будет ли срабатывать подписка SaveComplete на автосохранение?
И если не срабатывает, то как отловить начало/конец автосохранения?


Проверил  :o, подойдет...
« Последнее редактирование: 03-02-2015, 10:03:44 от dp »
Я не профессиональный программист, сделайте скидку ))

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

  • Administrator
  • *****
  • Сообщений: 13832
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Подписка на Database.SavedComplete (Database.BeginSave)
« Ответ #21 : 03-02-2015, 09:55:05 »
А вот такой вопрос в догонку: будет ли срабатывать подписка SaveComplete на автосохранение?
А почему бы тебе самому не проверить? ;)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение