Короткая обзорная статья для тех, кто только-только постигает мир других м... методик работы в Ревите, в частности — осваивает скрипты Динамо.

Что это такое

Dynamo — это среда для визуального программирования. «Визуальное» означает, что вам не нужно писать программный код. По крайней мере большую часть времени. Скрипты в Динамо создаются с помощью нодов — узлы, или блоки, которые вы соединяете между собой, чтобы получился алгоритм. То, чем соединяются ноды, обычно называют по-простому лапшой.

Вот пример элементарного алгоритма: суммирование двух чисел. Я взял два нода для ввода числе, нод, который суммирует, и нод, который показывает результат. Соединил всё и получил сумму. Алгоритм наглядный и понятный.

Вот так это будет выглядеть в Динамо
Вот так это будет выглядеть в Динамо

А вот алгоритм чуточку сложнее.

Вот так можно получить имена систем с трубопроводов
Вот так можно получить имена систем с трубопроводов

На картинке выше произошло следующее: в ноде «Categories» из выпадающего списка я выбрал категорию «Трубы». Дальше из выхода этого нода вытянул лапшу и подключил её ко входу нода «All Elements of Category». Этот нод получает список всех элементов указанной категории. То есть я получил список всех труб, которые есть в файле Ревита.

Далее воспользовался нодом Element.GetParameterValueByName — Элемент.ПолучитьЗначениеПараметраПоИмени. У этого нода два входа и один выход. На верхний вход подаю элементы — список труб, на нижний вход — имя параметра, данные которого хочу получить. На выходе получаю значения параметр «Имя системы». Каждая позиция в списке соответствует трубе в проекте.

Стиль написания без пробелов и с каждым словом с большой буквы — ВотТакойСтильНаписания — называется Camel Case, то есть верблюжий регистр. Строки получаются типа горбатые.

Нод «Code Block» — это нод, в который можно вписывать числа, текст и программный код на языке Design Script. В данном случае в кавычках вписал текст с названием параметра.

Вот это и есть визуальное программирование. Вы соединяете лапшой ноды, в итоге получается определённый алгоритм.

Что может Динамо

Примеры задач, которые можно решить в Динамо (взял в методичке Александра Попова):

  1. Импорт/Экспорт Excel, txt, csv, jpeg
  2. Создание криволинейной геометрии
  3. Копирование и перемещение элементов в Revit
  4. Создание элементов в Revit (Стены, Перекрытия, Колонны, Балки, Размещаемые элементы по точке/по нескольким точкам, Текст, Элементы 2D-узла)
  5. Создание видов, листов, добавление видов на листы
  6. Добавление общих параметров в проект, создание общих параметров
  7. Создание и редактирование cпецификаций
  8. Заполнение/Редактирование/Удаление параметров
  9. Открытие окон запроса для заполнения полей/внесения информации
  10. Создание папок на компьютере
  11. Копирование/удаление файлов на компьютере
  12. Связь с базой данных SQL
  13. Открытие файла Revit
  14. Пакетная печать листов
  15. Армирование элементов в Revit
  16. Преобразование элементов DWG в элементы Revit
  17. Редактирование файла журнала Revit
  18. Управление рабочими наборами
  19. Создание статических спецификаций и схем из 2D-линий, 2D-элементов и текста

Большинство сложных задач решается не одними нодами, а ещё и использованием программного кода в Python, для него есть свой отдельный нод. Но для новичков, которые только приступили к изучению, надо сначала разобраться с нодовыми алгоритмами, а уже потом браться за программирование.

Где взять Динамо

Если вы работаете в Ревите 2020, то Динамо уже включена в программу. Идите на вкладку «Управление» → справа на ленте будут две кнопки в блоке «Визуальное программирование»:

Кнопки запуска Динамо и Проигрывателя Динамо
Кнопки запуска Динамо и Проигрывателя Динамо

Если вы работаете в версиях младше 2020, то Динамо нужно скачать. Сделать это можно со специального сайта со сборками всех версий Динамо — Динамобилдс. Там будут две таблицы: Most stable и Daily. Вам нужны Most Stable — наиболее рабочие.

А теперь немного танцев с бубном. Если у вас установлена версия Ревит 2016, вы в ней работаете + собираетесь пользоваться Динамо, и к тому же установлен Ревит 2019, где вам тоже нужно Динамо, то надо устанавливать версии Динамо в определённом порядке:

  1. Сначала установить Динамо 1.3.2 — это последняя версия, которую поддерживает Ревит 2016
  2. Далее установить Динамо 2.0.0+ — это будет версия для Ревит 2019

В 2017 и 2018 версии при запуске программы будет выбор, какую версию Динамо использовать, 1.3.2 или 2.0.0+

Табличка соответствия версий Ревита и Динамо. Источник: https://primer.dynamobim.org/08_Dynamo-for-Revit/8-1_The-Revit-Connection.html
Табличка соответствия версий Ревита и Динамо. Источник: https://primer.dynamobim.org/08_Dynamo-for-Revit/8-1_The-Revit-Connection.html

Откуда такие сложности и чем отличаются версии 2.0 и 1.3? Всё просто, с 2019 Ревита Динамо 1.3.2 не поддерживается и если установить 1.3.3, то она удаляет предыдущие версии, в итоге 2016 Ревит остаётся без Динамо. Вот и приходится идти на такие ухищрения.

Если вы только начинаете работу в Динамо, то ставьте версию 2.0.0+. Всё равно это наиболее актуальная сборка да и вряд ли вы пользуетесь 2016 версией Ревита. В то же время некоторые скрипты версий до 2.0 не будут нормально работать в свежем Динамо, поэтому какую-нибудь версию 1.3 поставить тоже стоит.

В Ревите 2015 Динамо находится на вкладке Надстройки.

Где взять скрипты

В гугле, ребята. Есть русский сайт dynamobim.ru, есть зарубежный аналог dynamobim.com. Там выкладывают скрипты, советы к ним, ну и сидят всякие реально монстры, которые шарят в этой теме. Ну и на русском форуме Автодеска тоже хватает головастых динамщиков. В хорошем смысле. Знание английского при поиске и решении проблем со скриптами очень поможет.

Как запускать скрипты

Есть два способа: из самого Динамо и из Проигрывателя Динамо. Для новичка проще пользоваться Проигрывателем. Запускаете его, указываете папку, где лежат скрипты, а потом нажимаете на Play у нужного скрипта. Также в Проигрывателе можно указывать некоторые входные данные нажатием на кнопку «калькулятор». Я её так называю, я хз, что там изобразили авторы на самом деле.

Окно Проигрывателя Динамо
Окно Проигрывателя Динамо

Во входных данных можно изменить, например имя параметры, в которые будут записываться конечные данные или указать путь к файлу Эксель в который будет выгружаться информация.

Пример данных, которые можно ввести до запуска скрипта в Проигрывателе
Пример данных, которые можно ввести до запуска скрипта в Проигрывателе

Второй способ — запустить полноценный Динамо, открыть в нём скрипт и нажать внизу слева кнопку «Запустить».

Плюсы Проигрывателя — всё разом под рукой, можно удобно вводить данные. Минус — скрипты в нём обрабатываются дольше, а если выдаётся ошибка, не сразу можно понять, это что-то критичное или нормальное. Об этом следующий пункт.

Что может пойти не так

До хрена всего. Но пугаться не надо, всё решаемо. Или нет. Всегда можно нажать Ctrl+Z и вернуть, как было. Несмотря на длинный список того, что может пойти не так, не бойтесь, просто продолжайте ковыряться, потом будет легче. Проверено на себе. Поехали по возможным ошибкам:

1. Вы укажете путь Проигрывателю Динамо к папке со скриптами, а он покажет, что в папке ничего нет. Проверьте расширение файла скрипта. Для Ревита 2017 оно должно быть .DYN, а с 2018 версии — .dyn. В 2015 версии вроде бы с .dyn работает.

2. Скрипт может выдать ошибку. Такое бывает, но это не всегда означает, что скрипт выполнился неверно. Иногда это нормально, потому что где-то оказался пустой список, какой-нибудь оператор умножения из-за этого офигел, но раз список был пустой, то не было объектов для обработки. А значит, что либо объектов вообще не было и скрипт сработал вхолостую, либо объекты, которые подходили под условия обработались, и всё норм.

Новичку придётся проверять это в Ревите: всё ли заполнилось и посчиталось или нет. Более опытный динамщик уже полезет в сам скрипт и будет смотреть ошибки там.

Иногда Скрипт нужно запустить 2-3 раза, чтобы он сработал нормально и заполнил все параметры. Попробуйте несколько раз запустить, если ошибка не уходит, то всё, косяки в скрипте точно есть.

3. Вы скачали скрипт, а в нём были пакеты, которые у вас не установлены. Это прям самый большой косяк Динамо. С одной стороны, в Динамо можно подгружать сторонние пакеты от других разработчиков, и это неслабо расширяет функции, но в то же время, если у вас не просто нет этого пакета, а даже просто версия не та, то всё может пойти по гениталиям. По-хорошему, эти пакеты должны интегрироваться в ваш скрипт и не зависеть от того, что у вас там установлено дополнительно. Но вот как сделали, так и сделали. Более того, некоторые скрипты из версий 1.3 не работает нормально в 2.0+

Если зайти в скрипт, который не нашёл какой-то пакет, то этот блок скрипта будет помечен красным цветом (а иногда и надписью ошибки с восклицательным знаком). Проблема в том, что не всегда можно легко понять, из какого пакета этот узел. Поэтому если можно сделать без чужого блока, лучше делать без него стандартными методами. Либо всегда подписывать, что за нод, из какого пакета и его версию.

Вот такой узел-стопочка — это узел из стороннего пакета. Если он не загружен, то Динамо пометит его ошибкой
Вот такой узел-стопочка — это узел из стороннего пакета. Если он не загружен, то Динамо пометит его ошибкой

Пакеты загружаются из меню наверху. Откроется окно, надо подождать, пока подгрузиться сервер, а потом вводить название пакета. Самые популярные: Clockwork, Bakery, Archi-lab, Rhythm, Ampersand. Советую их скачать сразу, как только начнёте писать что-то своё, хотя всегда помните об их двуличности.

Переходим в загрузку пакетов
Переходим в загрузку пакетов
Ищем нужный, скачиваем
Ищем нужный, скачиваем
Если нажать по строке со скриптом, вылезет история версий, тут можно скачать подходящие
Если нажать по строке со скриптом, вылезет история версий, тут можно скачать подходящие

Чтобы всегда знать, какие пакеты я использую, я храню скриншотик с пакетами и их версиями.

Мой старый скриншот с прошлого места работы
Мой старый скриншот с прошлого места работы

На этом введение в Динамо закончено. Если какие-то вопросы интересны — пишите их в комменты или в Телеграм @Vadim_Rafi. На их основе напишу новую статью.

Видеокурс по семействам трубопроводных фитингов. Подробный 10-часовой курс, в котором научу создавать семейства и поделюсь лайфхаками.

Обновления статей удобно получать в Телеграм-канале «Блог Муратова про Revit MEP». Подписывайтесь и приглашайте коллег.

Отблагодарить автора

Я много времени уделяю блогу. Если хотите отблагодарить меня, то можете сделать небольшой подарок (именно подарок, такой перевод не облагается налогом). Лайк тоже не помешает, это должно помочь продвижению блога.