Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: 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?
-
Он предлагает использовать еще одну PostCommand для запуска второго плагина, который продолжит выполнение оставшейся части, однако я не совсем понимаю, как мне завершить очистку в автоматическом режиме до запуска "второй части".
В первом PostCommand - очистка, во втором PostCommand - твоя обработка, которая должна быть после очистки. Как написал Джереми Таммик, запущенные таким образом команды будут выполняться последовательно одна за другой, т.е. вторая часть не запустится до того, как не будет выполнена очистка.
-
Я имел ввиду: как "ОК" нажать программно для этой очистки? В данном случае принципиально, чтобы решение отрабатывало само, без привлечения внимания человека.
З.Ы. Есть ли какие-то мысли по реализации остальных вариантов? В частности больше всего интересует UnusedTypesInTheProject.
-
Воспользуйся PerformanceAdviser-ом.
На вскидку в качестве Proof of concept:
(https://i.postimg.cc/RNqQxWnm/Screenshot-2022-02-21-172456.png) (https://postimg.cc/RNqQxWnm)
Думаю, можно подкрутить применяемые правила и запускать не все, а только нужное.
-
Gainward777,
https://thebuildingcoder.typepad.com/blog/2018/08/purge-unused-using-performance-adviser.html
-
Возможно кому-то тоже пригодится.
В ссылке, которую предоставил Александр, в комментариях к посту есть версия для C# https://github.com/OliverEGreen/CodeSamples/blob/master/PurgeRevitViaAPI.cs
Также ее автор отмечает, что у него на гите есть версия и для Python.