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

ADN Club => Revit API => Тема начата: Gainward777 от 21-02-2022, 17:14:42

Название: Удаление неиспользуемого
Отправлено: Gainward777 от 21-02-2022, 17:14:42
Добрый день.

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

В API Revit с версии 2021, если не ошибаюсь, появилось свойство UnusedTypesInTheProject, в описании которого значится "Проект содержит неиспользуемые семейства и/или типы. Рассмотрите возможность их очистки.", казалось бы, что скомбинировав его с удалением неиспользуемых видов, из той же ссылки на блог Таммика, можно получить собственную версию "чистильщика". Но как получить элементы для их удаления, используя UnusedTypesInTheProject?
Название: Re: Удаление неиспользуемого
Отправлено: Александр Ривилис от 21-02-2022, 17:17:54
Он предлагает использовать еще одну PostCommand для запуска второго плагина, который продолжит выполнение оставшейся части, однако я не совсем понимаю, как мне завершить очистку в автоматическом режиме до запуска "второй части".
В первом PostCommand - очистка, во втором PostCommand - твоя обработка, которая должна быть после очистки. Как написал Джереми Таммик, запущенные таким образом команды будут выполняться последовательно одна за другой, т.е. вторая часть не запустится до того, как не будет выполнена очистка.
Название: Re: Удаление неиспользуемого
Отправлено: Gainward777 от 21-02-2022, 17:24:42
Я имел ввиду: как "ОК" нажать программно для этой очистки? В данном случае принципиально, чтобы решение отрабатывало само, без привлечения внимания человека.

З.Ы. Есть ли какие-то мысли по реализации остальных вариантов? В частности больше всего интересует UnusedTypesInTheProject.
Название: Re: Удаление неиспользуемого
Отправлено: Александр Игнатович от 21-02-2022, 17:26:23
Воспользуйся PerformanceAdviser-ом.

На вскидку в качестве Proof of concept:
(https://i.postimg.cc/RNqQxWnm/Screenshot-2022-02-21-172456.png) (https://postimg.cc/RNqQxWnm)

Думаю, можно подкрутить применяемые правила и запускать не все, а только нужное.
Название: Re: Удаление неиспользуемого
Отправлено: Александр Ривилис от 21-02-2022, 17:28:35
Gainward777,
https://thebuildingcoder.typepad.com/blog/2018/08/purge-unused-using-performance-adviser.html
Название: Re: Удаление неиспользуемого
Отправлено: Gainward777 от 21-02-2022, 17:46:32
Возможно кому-то тоже пригодится.
В ссылке, которую предоставил Александр, в комментариях к посту есть версия для C#  https://github.com/OliverEGreen/CodeSamples/blob/master/PurgeRevitViaAPI.cs
Также ее автор отмечает, что у него на гите есть версия и для Python.