Данный текст посвящен обзору преимуществ и недостатков скриптов Dynamo и написания полноценных плагинов для Revit.
Dynamo for Revit
Autodesk Revit содержит в своём составе мощное дополнение — Dynamo, позволяющее серьёзно автоматизировать многие процессы, и по мнению экспертов, увеличить производительность на 15-200%. Dynamo действительно может серьёзно ускорить работу, особенно при конвейерном проектировании, но главный его плюс — возможность серьёзно снизить трудозатраты на типовые мелкие операции, не требующие высокой квалификации, но серьёзно пожирающие время.
Преимущества
1. Быстрый старт.
Можно написать свой первый скрипт по гайду за полчаса-час, и он будет работать. Например, так выглядит скрипт, который скопирует длину труб в общий параметр Количества, и позволит свести трубы и учитываемые поштучно семейству в одну спецификацию. Не нужно быть супер-программистом и проходить длинные курсы. Можно пройти курс на 3-4 часа видео и серьёзно ускорить свою работу
2. Возможность легко настроить интерфейс взаимодействия с пользователем.
Назначаем для нода параметр "Является вводом", "Является выводом" и вот мы уже, имея определённый опыт в Dynamo, делаем скрипт с простеньким интерфейсом, не погружаясь в тонкости WPF и Windows Forms.
3. Лёгкая отладка на первых порах.
На нодах легко можно раскрыть содержимое списков и увидеть промежуточные результаты; понять, в каком месте код выполняется неправильно и исправить. Конечно, как и для любой отладки, нужно набить руку, но потом процесс идёт быстро. Да и для замены скрипта не нужно перезапускать Revit, как для замены плагина.
Недостатки
1. Ограниченность нодов и сложность с установкой полльзовательских пакетов нодов.
Опытные пользователи быстро понимают ограниченность встроенного функционала нодов. Создатели Dynamo придумали механизм, позволяющий обойти это: любой желающий может написать свой нод, а затем поделиться в интернете. Вы можете скачать пакет нодов и использовать у себя. Но вот чтобы ваш коллега смог сделать тоже самое, ему нужно будет открыть Dynamo, установить пакет и запустить скрипт. И тут всегда возникают проблемы с интернетом, с версией Dynamo, или просто человек не может разобраться. А в большой распределённой команде не подойдёшь к каждому и не поставишь нужный пакет.
2. Неудобная отладка на сложных скриптах
Рано или поздно разработчики скриптов начинают писать свой код на питоне в специальном ноде PythonScript. И тут удобная отладка становится неудобной. Ведь уже нет нода, который покажет результат на каждой строчке кода. А если строк 100? Как понять, где что пошло не так? В Dynamo нет встроенной отладки, как в Visual Studio, код на питоне нельзя выполнить построчно. Да и вывод ошибок там не самый очевидный. Да и нет всплывающих подсказок, как в профильных IDE. Вот так преимущество плавно перетекает в недостаток с усложнением скриптов.
3. Ограниченность
В какой-то момент разработчики скриптов начинают понимать, что функционала Dynamo не хватает. А хочется сделать сложное окно, интересный интерфейс. А не получается. Сделать сложное окно можно, но неудобно. А в Visual Studio всё быстрее и проще. Если вы это чувствуете в своих скриптах, то вам пора переходить в C#.
Разработка плагинов для Revit на C#
Однако, у Revit есть предназначенный для разработчиков API. Мы можем пользоваться им, чтобы создавать свои инструменты автоматизации.
Преимущества
1. Практически полное отсутствие ограничений на разработку
Навскидку, вы можете сделать следующее:
- Установку в пользовательскую папку, как обычную программу.
- Автоматическое обновление плагинов
- Любой пользовательский интерфейс с любым дизайном
- Любую кнопку в панелях Revit с любым дизайном
- Подключить библиотеку из интернета для работы с Excel, Word, обменом данными в сети. Библиотека подставится при установке плагина и не будет исчезать
Конечно, это уже довольно высокий уровень. Но потенциально ограничений практически нет. Единственные ограничения связаны с тем, что есть вещи, которые нельзя сделать с помощью Revit API (а также обычно нельзя сделать в плагине то, что вы не можете сделать в самом Revit вручную)
2. Удобная поддержка и эксплуатация
В Dynamo сложные скрипты "обрастают лапшой" — большим числом нодов и связей. Сложно организовать ссылки во избежание дублирования повторяющихся участков. Коды в PythonScript живут сами по себе и постепенно устаревают. В тоже время плагин можно писать и поддерживать как обычный IT-продукт.
К тому же, плагин не сломается от того, что у автора скрипта и человека, запускающего его, разная версия Dynamo или нет соответствующего пакета. Человеку не надо разбираться в интерфейсе Dynamo, чтобы настроить скрипт — он просто нажимает кнопку на панели, как для обычной команды Revit.
Недостатки
1. Стоимость и время разработки
На Dynamo может быстро выучиться обычный проектировщик и накидать простой скрипт за полчаса-час. Создание простого плагина потребует наличия программиста (в штате или на аутсорсе) и больший объём времени.
2. Сложность входа
Как уже было сказано выше, написать скрипт Dynamo гораздо проще, и можно начать после коротких курсов и статей. Написать плагин куда сложнее, проблемы начнутся уже на этапе подключения его к Revit. Куда класть DLL, почему не работает addin-файл? А информации на русском языке мало, надо её выискивать или разбираться в англоязычных гайдах. Обычному проектировщику не хватит на это времени и терпения (да и зачем, за это же время можно серьёзно прокачаться в Dynamo).
Итоги
Оба способа автоматизации имеют свои плюсы и минусы. Считаю важным правильно понимать границы их применимости. В небольших командах (до 100 человек) скрипты Dynamo могут серьёзно ускорить работу и стать быстрым, дешёвым и эффективным решениям. Но в то же время, в случае строгой регламентации процесса и большого числа повторяющихся операций, можно получить множество скриптов, и люди потеряются в том, как правильно их применять.
В больших же компаниях преимущества скриптов быстро станут недостатками. Затраченные на их написания усилия принесут меньше пользы, чем создание общего поддерживаемого приложения для автоматизации типовых процессов.
Мой телеграм-канал о Revit API. До новых встреч!