удалить все Updater-ы

Автор Тема: удалить все Updater-ы  (Прочитано 2254 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
удалить все Updater-ы
« : 18-09-2018, 19:33:35 »
как удалить все Updater-ы из текущего документа ?

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: удалить все Updater-ы
« Ответ #1 : 19-09-2018, 13:28:35 »
updater-ы не хранятся в документе, чтобы их можно было бы удалить )

Для всех манипуляций с апдейтерами предназначен класс UpdaterRegistry. Насколько знаю, Revit не позволит управлять updater-ами из других addin-ов, а только теми, которые зарегистрированы в Вашем приложении, соответственно, Вы знаете все UpdaterId ваших updater-ов, можете проверить, зарегистрирован ли он с помощью метода IsUpdaterRegistered(UpdaterId, Document) и при необходимости вызвать UnregisterUpdater(UpdaterId, Document)

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: удалить все Updater-ы
« Ответ #2 : 19-09-2018, 13:51:21 »
спасибо
Пробовал сделать что то вроде - при закрытии документа ревит все апдейтеры анрегистрируются


   
Код - C# [Выбрать]
  1.    public class SpaceUpdater_AAA_Heat_loss : IUpdater
  2.         {
  3.             public void Execute(UpdaterData data)
  4.             {
  5.                 Document doc = data.GetDocument();
  6.                 Autodesk.Revit.ApplicationServices.Application app = doc.Application;
...
         

Добавив в конце это:

     
Код - C# [Выбрать]
  1.       public Autodesk.Revit.UI.Result OnStartup(
  2.         Autodesk.Revit.UI.UIControlledApplication application)
  3.             {
  4.                 return Result.Succeeded;
  5.             }
  6.  
  7.             public Autodesk.Revit.UI.Result OnShutdown(Autodesk.Revit.UI.UIControlledApplication application)
  8.             {
  9.                 UpdaterRegistry.UnregisterUpdater(_updaterId);
  10.                 return Result.Succeeded;
  11.             }
  12.         }

Что вероятно не корректно?

Зачем отключать - при повтором запуске документа вылазит скатерть из надписей зареганых апдейтеров , которые не запущены, и если не запустить будет нечто плохое

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: удалить все Updater-ы
« Ответ #3 : 19-09-2018, 14:12:57 »
И при чем тут анрегистрация?

Тут в другом дело. При регистрации можно указать, что регистрировать апдейтер как опциональный. Если же isOptional = false, то Revit проверяет наличие зарегистрированного апдейтера с тем же гуидом.

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

  • ADN OPEN
  • *****
  • Сообщений: 525
  • Карма: 2
Re: удалить все Updater-ы
« Ответ #4 : 19-09-2018, 14:15:50 »
Тут в другом дело. При регистрации можно указать, что регистрировать апдейтер как опциональный. Если же isOptional = false, то Revit проверяет наличие зарегистрированного апдейтера с тем же гуидом.

Можно пример этой записи?

Отмечено как Решение enot 20-09-2018, 23:31:46

Оффлайн Александр Игнатович

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: удалить все Updater-ы
« Ответ #5 : 19-09-2018, 14:18:59 »
Методы UpdaterRegistry:

Код - C# [Выбрать]
  1. public static void RegisterUpdater(
  2.         IUpdater updater,
  3.         bool isOptional
  4. )
  5.  

Код - C# [Выбрать]
  1. public static void RegisterUpdater(
  2.         IUpdater updater,
  3.         Document document,
  4.         bool isOptional
  5. )
  6.