27/01/2016
Работа с макросами. Пример макроса
Предыдущие статьи
- Работа с макросами в Revit – Введение
- Работа с макросами в Revit – Первый макрос
- Работа с макросами в Revit – Выбор языка программирования
- Работа с макросами - Изучение Revit API
- Работа с макросами - Отладка
- Работа с макросами - Пошаговая отладка кода
- Работа с макросами - Использование контрольных точек
- Работа с макросами – Комментирование кода
- Работа с макросами – Исключения
Наш первый макрос был создан, когда мы показывали процесс создания макроса. Сейчас давайте же соберем воедино все что мы изучили и создадим более полезный макрос. Следующий код удаляет все неиспользуемые виды в текущей модели. Если вид не является листом или не содержит слово «Рабочий», то он удаляется. Обратите внимание, макрос не работает с зависимыми видами.
Код - C#: [Выделить]
- // Здесь метод назван по-русски. Причина в том, что в диалоге запуска макросов единственное что видит пользователь
- // - это название метода. Английское название для рускоязычных пользователей может быть неприемлемым.
- // Однако, я не рекомендую этим злоуопотреблять и тем более никогда не использвать в реальных проектах.
- public void УдалитьНеиспользуемыеВиды()
- {
- // Определяем текущий документ
- var currentDoc = ActiveUIDocument.Document;
- // Получаем все виды
- var viewCollector = new FilteredElementCollector(currentDoc);
- viewCollector.OfCategory(BuiltInCategory.OST_Views);
- // Получаем все листы
- var sheetCollector = new FilteredElementCollector(currentDoc);
- sheetCollector.OfCategory(BuiltInCategory.OST_Sheets);
- // создаем список листов, которые нужно удалить
- List<ElementId> viewsToDelete = new List<ElementId>();
- // в цикле обрабатываем каждый вид и проеряем его
- foreach (View currentView in viewCollector)
- {
- // проверяем, является ли вид шаблоном
- if (!currentView.IsTemplate)
- {
- // проверяем, может ли вид добавлен на лист
- if (Viewport.CanAddViewToSheet(currentDoc, sheetCollector.FirstElementId(), currentView.Id))
- {
- if (!currentView.Name.Contains("Рабочий"))
- // добавляем вид в список для удаления
- viewsToDelete.Add(currentView.Id);
- }
- }
- }
- // создаем транзакцию
- using (var curTrans = new Transaction(currentDoc))
- {
- curTrans.Start("Удаление неиспользуемых видов");
- // удаляем виды
- currentDoc.Delete(viewsToDelete);
- // Подтверждаем транзакцию
- curTrans.Commit();
- }
- // выводим сообщение с количеством удаленных видов
- TaskDialog.Show("Удаленные виды", "Удалено " + viewsToDelete.Count + " видов.");
- }
Автор перевода: Виктор Чекалин
Отредактировано 18.09.2017 в 08:35:01
Обсуждение: http://adn-cis.org/forum/index.php?topic=3375
Опубликовано 27.01.2016Отредактировано 18.09.2017 в 08:35:01