Как автоматизировать задачи Revit с помощью сценариев «Динамо»
Понять Динамо для Revit
Рабочие процессы в Revit часто включают повторяющиеся ручные задачи, которые замедляют доставку проекта и увеличивают риск человеческой ошибки. Архитекторы, инженеры и менеджеры BIM часто размещают бесчисленные элементы, обновляют параметры в сотнях семей или экспортируют данные для отчетности. Эти операции съедают время, которое можно потратить на исследование дизайна, решение проблем или общение с клиентами.
Введите Dynamo — среду визуального программирования, которая интегрируется непосредственно с Revit для автоматизации этих утомительных процессов. Dynamo позволяет пользователям создавать скрипты — называемые «графами» — с использованием интерфейса на основе узлов. Вместо написания кода с нуля вы перетаскиваете, перетаскиваете и подключаете узлы, которые представляют элементы Revit, геометрию операций, математическую логику или потоки данных. Этот подход делает автоматизацию доступной для профессионалов, которые могут не иметь фона программирования, в то же время предлагая глубину для продвинутых пользователей через скриптинг Python.
Что такое Динамо?
Dynamo - это платформа визуального программирования с открытым исходным кодом, разработанная Autodesk. Она работает как дополнение для Revit (и других инструментов Autodesk) и обеспечивает собственную среду выполнения. Граф Dynamo - это, по сути, набор узлов, соединенных вместе для определения последовательности операций. Каждый узел принимает входные данные, обрабатывает их и выводит результаты. Граф выполняется слева направо, и результаты могут быть перенесены обратно в модель Revit - например, создание стен, изменение параметров семейства или извлечение данных элементов в электронную таблицу.
Платформа поддерживает большую экосистему пакетов, вносимых сообществом, которые расширяют ее возможности. Эти пакеты содержат готовые узлы для таких задач, как расширенные манипуляции со списком, алгоритмы оптимизации или интеграция с Excel и другими внешними инструментами. Dynamo также включает в себя узел сценариев Python, предоставляя вам полный доступ к API Revit, когда вам нужна логика за пределами визуальных строительных блоков.
Как «Динамо» интегрируется с Revit
Динамо работает внутри того же процесса, что и Revit, то есть может непосредственно читать и изменять активный документ Revit. При открытии Dynamo со вкладки «Управление» или «Добавление» над интерфейсом Revit появляется отдельное окно. Граф, который вы создаете, может ссылаться на любой элемент в текущей модели по категориям, семейству, типу или параметрам. Вы также можете использовать узлы выбора для ручного выбора элементов из вида Revit.
Эта тесная интеграция означает, что любое изменение, сделанное Dynamo, немедленно отражается в модели Revit — так же, как если бы вы внесли это изменение вручную. Вы можете создавать, удалять или изменять элементы, устанавливать значения параметров и восстанавливать представления. Та же координация и предупреждения, которые применяются к ручным изменениям, также применяются к изменениям, генерируемым Dynamo, поэтому целостность вашей модели остается нетронутой.
Парадигма визуального программирования
Визуальное программирование с Dynamo отличается от традиционного скриптинга. Вместо написания строк кода вы строите блок-схему операций. Каждый узел имеет имя (например, «Wall.ByLocationAndHeight») и четко обозначенные порты ввода и выходные порты. Вы подключаете провода между портами для передачи данных. Например, вы можете подавать список кривых местоположения в узел, который создает стены, а затем подключать вывод к другому узлу, который присваивает тип стены.
Этот визуальный подход позволяет легко понять логику с первого взгляда. Он также поощряет эксперименты: вы можете быстро изменить вход узла или поменять один узел на другой без переписывания кода. Для совместной работы в команде графики могут быть разделены как файлы .dyn и повторно использованы в проектах.
Основные преимущества автоматизации Динамо
Принятие «Динамо» для автоматизации Revit дает измеримые улучшения по нескольким измерениям. Ниже приведены основные преимущества с конкретными примерами.
- Драматическая экономия времени: Задания, требующие часов при выполнении вручную, могут быть выполнены за считанные секунды с хорошо написанным графом. Например, размещение 500 уникальных напольных плит с различными смещениями и параметрами может занять день вручную; график «Динамо» может закончиться менее чем за минуту.
- Непоколебимая согласованность: Ручные процессы подвержены надзору — элемент здесь с неправильным параметром, стена там не выровнена с сеткой. Динамо применяет одни и те же правила каждый раз, устраняя изменчивость. Это имеет решающее значение для контроля качества в крупных проектах, где несколько членов команды вносят свой вклад в одну и ту же модель.
- Сложная геометрия упростилась: Некоторые исследования дизайна, такие как параметрические фасады, органические формы крыши или управляемые данными напольные узоры, непрактичны для моделирования вручную. Узлы геометрии Динамо в сочетании с надежными инструментами Revit позволяют алгоритмически генерировать сложные формы.
- Управление данными в режиме реального времени: Извлечение информации из модели Revit для отчетности, оценки затрат или координации часто утомительно. С Dynamo вы можете экспортировать расписания, свойства элементов и значения параметров непосредственно в файлы Excel или CSV. И наоборот, вы можете читать данные из внешних источников (например, таблицу требований к программе комнаты) и использовать ее для автоматического обновления модели.
- Повторяемость и многоразовое использование:] После создания графа вы можете повторно использовать его в любом проекте с минимальной модификацией. Многие фирмы создают библиотеки стандартных графов для общих задач — например, настраивают шаблоны просмотра, создают листы или очищают импортированные файлы САПР.
Начало работы с вашим первым сценарием
Чтобы начать автоматизацию задач в Revit с помощью Dynamo, выполните следующие действия. Процесс тот же, используете ли вы Revit 2021 или последний релиз.
Установка и настройка
Последние версии Revit (2019 и более поздние) включают Dynamo for Revit в качестве встроенного дополнения. Вы можете запустить его непосредственно из вкладки «Управление» в разделе «Визуальное программирование»; «Динамо». Если вы используете более старую версию или вам нужен последний выпуск Dynamo, загрузите установщик с официального сайта Динамо . Установщик также поставляется с проигрывателем Динамо, который позволяет запускать графики без открытия редактора — отлично подходит для конечных пользователей, которым просто нужно выполнить сценарий.
Навигация по интерфейсу Динамо
При открытии «Динамо» вы видите холст рабочего пространства, библиотечную панель слева и панель инструментов вверху. Панель библиотеки классифицирует все доступные узлы по библиотеке (например, «Геометрия», «Возвращение», «Данные», «Передача»). Вы можете искать узлы по имени. Панель инструментов включает кнопки для запуска графа (автоматический или ручной), сохранения и доступа к менеджеру пакетов.
Полотно — это место, где вы строите свой граф. Нажмите правой кнопкой мыши на холсте, чтобы быстро добавить узлы, создать кодовые блоки (для коротких выражений Python или DesignScript) или управлять группами. Эффективная практика — группировать связанные части вашего графа с текстовым наложением (узел «Группа») для документирования его цели.
Создание простого графа
Классический первый сценарий: разместите выбранные уровни с напольными плитами. Давайте очертим шаги:
- Добавьте узел «Категории» и выберите «Полы» и «Уровни» из выпадающего списка.
- Используйте «Все элементы категории», чтобы получить все элементы уровня в модели.
- Вычитаем высоту каждого уровня с помощью «Level.GetElevation».
- Создайте прямоугольную кривую на каждом уровне, используя «Rectangle.ByWidthLength». Подключите высоту, чтобы установить высоту плоскости.
- Используйте «Floor.ByOutlineTypeAndLevel» для создания плиты пола для каждого уровня. Предоставьте тип пола (например, «Generic 12»), выбрав его из узла «Типы пола».
- Динамо разместит пол на каждом уровне в модели.
Этот простой график вводит основной поток данных: получить элементы → извлечь свойства → создать геометрию → отодвинуть результаты обратно в Revit.
Тестирование и отладка
Перед применением графа к живому проекту, протестируйте его на копии модели или небольшом образце. Динамо предоставляет несколько средств отладки: узлы наблюдения показывают данные, проходящие через провод; узлы замораживания временно приостанавливают выполнение; и узлы «Is» проверяют условия. Используйте окна предварительного просмотра «Watch 3D» для проверки геометрии перед тем, как она будет создана в Revit. Всегда сохраняйте модель Revit перед запуском любого графа, который его модифицирует.
Передовые технологии автоматизации
Как только вы будете довольны базовыми графиками, вы сможете разблокировать более мощную автоматизацию, включив скриптинг, сторонние пакеты и прямые вызовы API.
Использование Python Script Nodes
Динамо включает в себя узел «Python Script», который позволяет писать код Python с полным доступом к API Revit. Это полезно для логики, которая была бы громоздкой или невозможной только с визуальными узлами — такими как сложное условное ветвление, циклы над списками элементов с пользовательскими операциями или расчетами с интенсивной памятью. Среда Python в Динамо включает стандартные библиотеки (например, математику, Json) и импортирует RevitAPI и RevitAPIUI. Вы также можете импортировать пользовательские модули из пакетов Python, если вы настраиваете среду.
Например, для пакетного обновления параметра «Комментарии» на всех дверях с определенным условием несколько строк Python внутри узла сценариев могут быть более удобными для обслуживания, чем клубок узлов List.Filter и Code Block.
Использование менеджера пакетов Dynamo
Диспетчер пакетов «Динамо» содержит сотни пакетов, разработанных сообществом, которые расширяют возможности «Динамо».
- Завод: Предоставляет дополнительные узлы для операций списка, управления элементами Revit и создания геометрии.
- Формы данных: Включает расширенные формы и пользовательский интерфейс, управляемые данными.
- Оптимо: Для эволюционной оптимизации и поиска форм.
- Ритм: Автоматизирует просмотр и управление листами.
Для установки пакета перейдите на панель инструментов Динамо и выберите «Пакеты» > «Поиск пакета». Введите имя (например, «Заводной механизм»), нажмите «Установка» и перезагрузите Динамо. Узлы пакета появятся в библиотеке под своей категорией.
Работа с Revit API через Dynamo
Dynamo раскрывает большую часть API Revit, но не каждый метод доступен в качестве визуального узла. Узлы скриптов Python дают вам полный доступ к API. Вы можете использовать транзакции для создания, удаления или изменения элементов; подписываться на события пользовательского интерфейса; или даже запускать внешние процессы. Например, вы можете использовать API Revit для дублирования просмотров с конкретными настройками, экспортировать файлы DWG с использованием пользовательских вариантов экспорта или анализировать пересечения элементов.
Типичный скрипт Python в Dynamo начинается с ссылки на документ Revit:
Затем вы можете использовать стандартные методы API внутри структуры транзакций Dynamo (завертывание кода в транзакцию). Выход узла Python отправляется обратно в качестве объекта Dynamo.
Случаи использования общей автоматизации
Следующие примеры из реального мира показывают, что «Динамо» может делать в повседневной работе «Возрождение».
Автоматическое размещение пола и стены
Используйте чехлы для создания комнат и этажей: из таблицы Excel, в которой перечислены названия комнат, области и уровни, Динамо может считывать данные, создавать комнаты в модели и назначать отделку пола для каждой комнаты на основе типа использования. Аналогично, вы можете генерировать стены вдоль эталонных линий при заданных смещениях, автоматически назначая правильный тип стены для зоны.
Обновление параметров пакета
Общий сценарий: Производитель выпускает новую линейку продуктов, а соответствующим семействам Revit требуется обновление параметров «Модельный номер», «Стоимость» и «URL». Вместо открытия каждой семьи и ручного редактирования параметров можно написать график «Динамо», который итерирует все экземпляры этого типа семейства в проекте и устанавливает новые значения. Это обеспечивает согласованность и экономит часы работы.
Извлечение данных в Excel
Для отчетности и оценки затрат, извлекать данные элементов - расписания дверей с размерами, материалами, рейтингами пожаров и аппаратными наборами - в Excel. Dynamo "Data.ExportCSV" или узлы пакета Excel могут записывать в отформатированную электронную таблицу. Вы также можете извлекать данные из Excel в Dynamo для управления геометрией, создавая элементы визуализации данных, такие как диаграммы пузырьков или цветные планы этажей на основе комнатных показателей.
Модель очистки и аудита
Большие модели Revit часто накапливают неиспользуемые слои, группы или дублированные элементы. Динамо может сканировать модель на наличие таких условий, как перекрывающиеся стены, элементы без классификации или неочищенные группы. Затем оно может либо удалить их, либо пометить их общим параметром. Это особенно полезно для соответствия BIM перед отправкой модели клиенту или федеративной модели.
Лучшие практики для сценариев производства
Чтобы убедиться, что ваши графики динамо надежны, обслуживаемы и работоспособны, следуйте этим рекомендациям.
Контроль версий и документация
Относитесь к файлам .dyn как к коду: храните их в системе управления версиями (например, Git) для отслеживания изменений и совместной работы. Используйте описательные имена групп и аннотации на холсте, чтобы объяснить цель и ввод графа. Внутри узлов Python добавьте докстринги и комментарии. Библиотеки графов должны включать файл README с инструкциями по использованию и ожидаемыми версиями Revit.
Обработка ошибок
Жестко закодированные предположения (например, ожидание существования определенного элемента) могут привести к отказу графа. Используйте узлы, такие как «Object.IsNull» и «List.FilterByBoolMask», чтобы изящно обрабатывать недостающие данные. Для сценариев Python оберните критические разделы в пробных блоках и верните сообщения об ошибках в качестве выходов. Кроме того, используйте узлы «ScopeIf» Динамо, чтобы пропустить выполнение, когда условия не выполняются.
Оптимизация производительности
Модели Revit могут быть большими, поэтому неэффективные графы могут резко замедляться. Например, избегайте использования «Всех элементов категории» внутри цикла, если вам нужно только подмножество. Вместо этого собирайте все элементы один раз, а затем фильтруйте. Используйте «Список.Карта» и «Список.Комбинат» вместо вложенных циклов. Для списков тысяч элементов рассмотрите возможность использования Python для объединения операций в одну транзакцию, а не множество небольших транзакций.
Заключение
Автоматизация задач Revit с помощью Dynamo — это не просто взлом производительности — это фундаментальный сдвиг в подходе профессионалов BIM к своей работе. Заменяя ручные, подверженные ошибкам процессы повторяемыми, написанными рабочими процессами, вы освобождаете умственную энергию для инноваций в дизайне и координации проектов. Начальная кривая обучения быстро выплачивает дивиденды: даже простой график, который экономит 30 минут в день, составляет более 120 часов в год.
Начните с малого. Выберите одну повторяющуюся задачу, которую вы часто выполняете — возможно, размещаете сетки или экспортируете графики — и создайте график, который автоматизирует его. По мере роста вашей уверенности исследуйте менеджер пакетов, погружайтесь в Python и делитесь своими графиками со своей командой. Сообщество вокруг Динамо яркое и полезное; ресурсы, такие как Динамо Праймер и Динамо Форум , являются отличными местами для обучения и получения поддержки.
Автоматизация BIM больше не является опцией в конкурентной отрасли. С Dynamo у вас есть инструменты для работы умнее, а не сложнее, и предоставления более качественных моделей за меньшее время. Сделайте скачок - ваше будущее само будет вам благодарно.