Найти в Дзене

Dynamo или плагины на C# — что выбрать

Оглавление

Данный текст посвящен обзору преимуществ и недостатков скриптов Dynamo и написания полноценных плагинов для Revit.

Dynamo for Revit

Autodesk Revit содержит в своём составе мощное дополнение — Dynamo, позволяющее серьёзно автоматизировать многие процессы, и по мнению экспертов, увеличить производительность на 15-200%. Dynamo действительно может серьёзно ускорить работу, особенно при конвейерном проектировании, но главный его плюс — возможность серьёзно снизить трудозатраты на типовые мелкие операции, не требующие высокой квалификации, но серьёзно пожирающие время.

Преимущества

1. Быстрый старт.

Можно написать свой первый скрипт по гайду за полчаса-час, и он будет работать. Например, так выглядит скрипт, который скопирует длину труб в общий параметр Количества, и позволит свести трубы и учитываемые поштучно семейству в одну спецификацию. Не нужно быть супер-программистом и проходить длинные курсы. Можно пройти курс на 3-4 часа видео и серьёзно ускорить свою работу

Всего 5 нодов. Красиво!
Всего 5 нодов. Красиво!

2. Возможность легко настроить интерфейс взаимодействия с пользователем.

Назначаем для нода параметр "Является вводом", "Является выводом" и вот мы уже, имея определённый опыт в Dynamo, делаем скрипт с простеньким интерфейсом, не погружаясь в тонкости WPF и Windows Forms.

Вот вам и поле для текстового ввода, и переключатель (галочка)
Вот вам и поле для текстового ввода, и переключатель (галочка)

3. Лёгкая отладка на первых порах.

На нодах легко можно раскрыть содержимое списков и увидеть промежуточные результаты; понять, в каком месте код выполняется неправильно и исправить. Конечно, как и для любой отладки, нужно набить руку, но потом процесс идёт быстро. Да и для замены скрипта не нужно перезапускать Revit, как для замены плагина.

Недостатки

1. Ограниченность нодов и сложность с установкой полльзовательских пакетов нодов.

Опытные пользователи быстро понимают ограниченность встроенного функционала нодов. Создатели Dynamo придумали механизм, позволяющий обойти это: любой желающий может написать свой нод, а затем поделиться в интернете. Вы можете скачать пакет нодов и использовать у себя. Но вот чтобы ваш коллега смог сделать тоже самое, ему нужно будет открыть Dynamo, установить пакет и запустить скрипт. И тут всегда возникают проблемы с интернетом, с версией Dynamo, или просто человек не может разобраться. А в большой распределённой команде не подойдёшь к каждому и не поставишь нужный пакет.

2. Неудобная отладка на сложных скриптах

Рано или поздно разработчики скриптов начинают писать свой код на питоне в специальном ноде PythonScript. И тут удобная отладка становится неудобной. Ведь уже нет нода, который покажет результат на каждой строчке кода. А если строк 100? Как понять, где что пошло не так? В Dynamo нет встроенной отладки, как в Visual Studio, код на питоне нельзя выполнить построчно. Да и вывод ошибок там не самый очевидный. Да и нет всплывающих подсказок, как в профильных IDE. Вот так преимущество плавно перетекает в недостаток с усложнением скриптов.

3. Ограниченность

В какой-то момент разработчики скриптов начинают понимать, что функционала Dynamo не хватает. А хочется сделать сложное окно, интересный интерфейс. А не получается. Сделать сложное окно можно, но неудобно. А в Visual Studio всё быстрее и проще. Если вы это чувствуете в своих скриптах, то вам пора переходить в C#.

Интерфейс плагина "Пол по помещению" из ModPlus. Попробуйте написать такой же интерфейс в Dynamo (не пробуйте, долго и неудобно).
Интерфейс плагина "Пол по помещению" из ModPlus. Попробуйте написать такой же интерфейс в Dynamo (не пробуйте, долго и неудобно).

Разработка плагинов для 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. До новых встреч!

-4