Удаление неиспользуемого

Автор Тема: Удаление неиспользуемого  (Прочитано 6854 раз)

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

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

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Добрый день.

Столкнулся с необходимостью запуска очистки файла, с последующим продолжением программы.
Первое, что пришло в голову - это использовать UIApplication.PostCommand.
Однако здесь https://thebuildingcoder.typepad.com/blog/2017/11/purge-and-detecting-an-empty-view.html#2 Джереми Таммик говорит о том, что такие команды запускаются лишь после завершения кода плагина. Он предлагает использовать еще одну PostCommand для запуска второго плагина, который продолжит выполнение оставшейся части, однако я не совсем понимаю, как мне завершить очистку в автоматическом режиме до запуска "второй части".
Также Джереми предлагает использовать например внешние события для управления Revit извне, как это можно реализовать для решения изложенной задачи?

В API Revit с версии 2021, если не ошибаюсь, появилось свойство UnusedTypesInTheProject, в описании которого значится "Проект содержит неиспользуемые семейства и/или типы. Рассмотрите возможность их очистки.", казалось бы, что скомбинировав его с удалением неиспользуемых видов, из той же ссылки на блог Таммика, можно получить собственную версию "чистильщика". Но как получить элементы для их удаления, используя UnusedTypesInTheProject?

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

  • Administrator
  • *****
  • Сообщений: 13898
  • Карма: 1790
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Удаление неиспользуемого
« Ответ #1 : 21-02-2022, 17:17:54 »
Он предлагает использовать еще одну PostCommand для запуска второго плагина, который продолжит выполнение оставшейся части, однако я не совсем понимаю, как мне завершить очистку в автоматическом режиме до запуска "второй части".
В первом PostCommand - очистка, во втором PostCommand - твоя обработка, которая должна быть после очистки. Как написал Джереми Таммик, запущенные таким образом команды будут выполняться последовательно одна за другой, т.е. вторая часть не запустится до того, как не будет выполнена очистка.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Re: Удаление неиспользуемого
« Ответ #2 : 21-02-2022, 17:24:42 »
Я имел ввиду: как "ОК" нажать программно для этой очистки? В данном случае принципиально, чтобы решение отрабатывало само, без привлечения внимания человека.

З.Ы. Есть ли какие-то мысли по реализации остальных вариантов? В частности больше всего интересует UnusedTypesInTheProject.

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

  • Administrator
  • *****
  • Сообщений: 1152
  • Карма: 338
  • Skype: alexandr.ignatovich.itc
Re: Удаление неиспользуемого
« Ответ #3 : 21-02-2022, 17:26:23 »
Воспользуйся PerformanceAdviser-ом.

На вскидку в качестве Proof of concept:


Думаю, можно подкрутить применяемые правила и запускать не все, а только нужное.

Отмечено как Решение Gainward777 11-03-2022, 12:35:09

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

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

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

  • ADN OPEN
  • Сообщений: 4
  • Карма: 0
Re: Удаление неиспользуемого
« Ответ #5 : 21-02-2022, 17:46:32 »
Возможно кому-то тоже пригодится.
В ссылке, которую предоставил Александр, в комментариях к посту есть версия для C#  https://github.com/OliverEGreen/CodeSamples/blob/master/PurgeRevitViaAPI.cs
Также ее автор отмечает, что у него на гите есть версия и для Python.