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

ADN Club => Revit API => Тема начата: enot от 18-09-2018, 19:33:35

Название: удалить все Updater-ы
Отправлено: enot от 18-09-2018, 19:33:35
как удалить все Updater-ы из текущего документа ?
Название: Re: удалить все Updater-ы
Отправлено: Александр Игнатович от 19-09-2018, 13:28:35
updater-ы не хранятся в документе, чтобы их можно было бы удалить )

Для всех манипуляций с апдейтерами предназначен класс UpdaterRegistry. Насколько знаю, Revit не позволит управлять updater-ами из других addin-ов, а только теми, которые зарегистрированы в Вашем приложении, соответственно, Вы знаете все UpdaterId ваших updater-ов, можете проверить, зарегистрирован ли он с помощью метода IsUpdaterRegistered(UpdaterId, Document) и при необходимости вызвать UnregisterUpdater(UpdaterId, Document)
Название: Re: удалить все Updater-ы
Отправлено: enot от 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.         }

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

Зачем отключать - при повтором запуске документа вылазит скатерть из надписей зареганых апдейтеров , которые не запущены, и если не запустить будет нечто плохое
Название: Re: удалить все Updater-ы
Отправлено: Александр Игнатович от 19-09-2018, 14:12:57
И при чем тут анрегистрация?

Тут в другом дело. При регистрации можно указать, что регистрировать апдейтер как опциональный. Если же isOptional = false, то Revit проверяет наличие зарегистрированного апдейтера с тем же гуидом.
Название: Re: удалить все Updater-ы
Отправлено: enot от 19-09-2018, 14:15:50
Тут в другом дело. При регистрации можно указать, что регистрировать апдейтер как опциональный. Если же isOptional = false, то Revit проверяет наличие зарегистрированного апдейтера с тем же гуидом.

Можно пример этой записи?
Название: Re: удалить все Updater-ы
Отправлено: Александр Игнатович от 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.