Плагин Revit или Dynamo: что выбрать команде
Сравнение по восьми критериям, стоимость владения на три года, промежуточный путь через pyRevit и три условия, при которых скрипт пора превращать в кнопку.
Скрипт нумеровал помещения по часовой стрелке и работал безупречно. У автора. У второго инженера он падал на середине, у третьего расставил номера в обратном порядке, четвёртый открыл файл и увидел красные узлы вместо графа.
Знакомая история для любого, кто пробовал раздать Dynamo команде. Логика была правильная, инструмент выбран не тот.
Разберу, где проходит граница между «хватит скрипта» и «нужна кнопка», сколько это стоит на дистанции и что делать, если бюджета на разработку нет.
Разница не в мощности
Оба инструмента дотягиваются до одного и того же Revit API. Мощность примерно одинаковая, различается упаковка.
Dynamo это граф из узлов. Открывается внутри Revit, правится мышью, результат виден сразу. Прототип собирается за час, ошибку видно на глаз, поделиться можно файлом.
Плагин это скомпилированное приложение на C#, которое живёт на панели инструментов. Пользователь нажимает кнопку и получает результат. Внутренности ему не видны, сломать их случайно нельзя.
Отсюда всё остальное. Граф гибкий и хрупкий, кнопка жёсткая и надёжная. Выбор идёт не по сложности задачи, а по тому, сколько людей и как часто этим будут пользоваться.
Сравнение по восьми критериям
| Критерий | Dynamo | Плагин на C# |
|---|---|---|
| Срок первой рабочей версии | часы или дни | от двух недель |
| Порог входа для автора | средний, без программирования | нужен разработчик |
| Надёжность у постороннего | низкая, ломается от перестановки узлов | высокая |
| Скорость на больших моделях | заметно медленнее | в 5-20 раз быстрее |
| Обработка ошибок | падает и оставляет модель в полусостоянии | транзакции с откатом |
| Интерфейс | окно графа, поля ввода | форма с полями, подсказки, проверка ввода |
| Обновление под новую версию Revit | часто ломается, правится вручную | пересборка, обычно без изменений логики |
| Раздача команде | файл плюс инструкция | установщик, обновление централизованно |
Строку про скорость поясню. На модели с 40 тысячами элементов массовая запись параметра в Dynamo шла у нас 6-7 минут, тот же алгоритм в плагине укладывался в 20 секунд. Причина в том, что граф гоняет данные через промежуточные списки узлов, а компилированный код работает напрямую с транзакцией.
Когда хватает Dynamo
- Задачу делает один-два человека, которые её и написали.
- Операция разовая или повторяется несколько раз за проект.
- Логика ещё не устоялась, правила меняются на ходу.
- Нужен прототип, чтобы понять, стоит ли задача разработки.
- Модель среднего размера, время работы не критично.
Сюда попадает большинство задач: массовое заполнение параметров, разовая выгрузка ведомости, проверка модели по своему списку правил, пакетное переименование видов. Конкретные сценарии с разбором собраны в статье про связку Dynamo и Python.
Когда нужен плагин
- Инструментом пользуются больше пяти человек, в том числе новички.
- Операция выполняется еженедельно или чаще.
- Ошибка дорого стоит: скрипт пишет в модель, а не только читает.
- Нужна работа с внешними системами: база данных, обмен с 1С, отчёты по расписанию.
- Логика стабильна и не менялась последние месяцы.
- Требуется единый инструмент во всех версиях Revit, которые стоят в компании.
Отдельный случай: инструмент, который вы даёте наружу, подрядчикам или заказчику. Граф отдавать нельзя, там ваша логика и ваши риски.
Средний путь, про который забывают
Между графом и полноценной разработкой лежит слой, который закрывает большую часть потребностей и стоит в разы дешевле.
Dynamo Player. Скрипт кладут в папку проекта, пользователь запускает его одной кнопкой и заполняет входные поля. Графа он не видит и сломать не может. Настройка занимает полчаса, требует только правильно оформить входы и выходы.
pyRevit. Бесплатная надстройка, в которой своя кнопка на ленте это папка с файлом скрипта на Python. Выглядит как настоящий плагин, пишется как обычный скрипт.
MyTools.extension/
MyTools.tab/
Проверки.panel/
Пустые марки.pushbutton/
script.py # обычный python, доступ к doc и Revit API
icon.png
Наш обычный маршрут такой. Прототип в Dynamo, обкатка на двух людях, перенос логики в pyRevit-кнопку для отдела, и только устоявшиеся тяжёлые инструменты уходят в компилируемый плагин. До третьего шага доходит примерно каждая пятая задача, и это нормально.
Сколько стоит владение
Разработка это первый чек, а не полный. Считать надо на три года.
| Статья | Dynamo | pyRevit | Плагин |
|---|---|---|---|
| Первая версия | 1-3 дня | 3-7 дней | от 2 недель |
| Поддержка в год | часы автора | несколько часов | 10-15% от разработки |
| Переход на новую версию Revit | переделка узлов, до дня | обычно без правок | пересборка, 1-2 дня |
| Обучение пользователя | 1-2 часа на человека | 10 минут | 10 минут |
| Потери от ошибок пользователя | высокие | низкие | почти нулевые |
Строка про обучение обманчиво мелкая. Умножьте два часа на пятнадцать человек и на текучку, и выйдет, что раздача графа команде стоит дороже, чем упаковка его в кнопку.
Вторая недооценённая строка это переход на новую версию Revit. Графы ломаются на обновлениях регулярно: меняются узлы, версия питона внутри, поведение библиотек. Компания с двадцатью скриптами тратит на такой переезд ощутимую неделю раз в год.
Симптомы, что инструмент выбран не тот
Скрипт запускает только автор. Симптом: у человека очередь из просьб «прогони мне». Задача переросла граф, пора в Player или в кнопку.
Перед запуском надо помнить пять правил. Симптом: инструкция начинается словами «сначала выдели все элементы, потом обязательно...». Пользователь однажды забудет, и модель придётся откатывать.
Скрипт стал огромным. Симптом: граф не помещается на экран, внутри пятьдесят узлов и три вложенных блока. Читать его не может никто, включая автора через месяц.
Каждое обновление Revit ломает половину библиотеки. Симптом: январь уходит на починку скриптов вместо работы.
Один и тот же скрипт живёт в семи копиях. Симптом: у каждого своя версия с мелкими правками. Кто-то работает по устаревшей логике и не знает об этом.
После запуска пришлось откатывать модель. Симптом: инженер запустил заполнение марок, а параметры перезаписались по всему этажу, включая уже согласованные позиции. Причина не в коде: граф берёт ровно то, что ему дали на вход, и проверять выбор пользователя некому. Чинили формой с обязательными полями и предупреждением перед записью: «будет изменено 312 элементов, продолжить». За полгода после этого ни одного отката.
Скрипт молча пропустил половину элементов. Симптом: ведомость собралась, выглядит нормально, а в ней недостаёт 40 позиций. Заметили на выдаче. Причина в том, что у части семейств параметр назывался иначе, скрипт их не нашёл и спокойно поехал дальше. Чинили правилом: любой инструмент возвращает два списка, обработанное и пропущенное с указанием причины. Пустой второй список стал условием приёмки работы.
Инструмент работает только на машине автора. Симптом: у остальных при запуске ошибка про отсутствующую библиотеку либо про недоступный путь. Причина обычно скучная: внутри прописана папка на диске автора и внешний пакет, который у коллег не установлен. Чинили переносом в расширение pyRevit, которое раздаётся одной папкой из общего хранилища и обновляется у всех разом.
Чего ждать не надо
Плагин не сделает данные чище. Инструмент, написанный поверх модели с тремя вариантами написания марки, будет так же спотыкаться, только быстрее. Порядок в параметрах наводят до автоматизации, про это подробно в чек-листе аудита.
Автоматизация не окупается на разовой задаче. Правило простое: считаем, сколько минут операция занимает вручную, умножаем на частоту за год. Меньше 20-30 часов в год, автоматизировать смысла нет, разве что ради снижения ошибок.
Ни один из вариантов не работает без хозяина. Библиотека скриптов без ответственного превращается в свалку за полгода. Нужен человек, который ведёт список, версии и отвечает на вопросы.
И плагин не отменяет обучения. Кнопка снижает порог, но пользователь всё равно должен понимать, что она делает с моделью. Инструмент, работу которого никто не понимает, отключают при первой странности.
Частые вопросы
Можно ли начать сразу с плагина? Можно, но дороже. Половина требований проясняется только после того, как люди попробовали прототип.
Нужна ли лицензия для распространения плагина? Внутри компании нет. Для продажи наружу нужны своя подпись и правила Autodesk по публикации.
pyRevit это надёжно? Он живёт много лет и используется широко. Риск один: зависимость от стороннего проекта. Для критичных инструментов мы всё же собираем плагин.
На чём писать: C# или Python? Внутри Dynamo и pyRevit Python. Компилируемый плагин на C#, там лучше производительность и предсказуемость.
Сколько стоит перенос скриптов в кнопки? Зависит от того, сколько логики придётся переписывать. Типовой набор из пяти-семи рабочих скриптов упаковывается за 2-3 недели.
Что делать со скриптами уволившегося сотрудника? Разбирать сразу, пока помнят, что они делали. Мы обычно оставляем два-три действительно нужных, переписываем их начисто и остальное честно выбрасываем. Хранить полсотни чужих графов без описания смысла нет: пользоваться ими всё равно никто не станет, а искать среди них рабочий дольше, чем написать заново.
Можно ли запускать инструменты по расписанию, без человека? Граф нет, ему нужен открытый Revit и живой пользователь. Пакетная обработка моделей ночью это либо облачный сервис Autodesk, либо своя служба, которая открывает файлы и гоняет по ним плагин. Второй вариант дороже на старте и дешевле в работе.
Как понять, что инструмент безопасен для модели? Смотрите одно: пишет он в документ или только читает. Проверки, выгрузки и отчёты не портят ничего, их можно раздавать смело. Всё, что пишет параметры или создаёт элементы, сначала обкатывают на копии файла, и первые две недели за такими запусками присматривает автор.
Как решить у себя
Выпишите свои скрипты в таблицу: кто пользуется, сколько раз в месяц, что будет при ошибке. Три колонки, полчаса работы.
Всё, чем пользуется больше пяти человек чаще раза в неделю, переводите в кнопку. Остальное спокойно живёт графом.
Мы делаем и то, и другое: прототипы, кнопки pyRevit и полноценные плагины с установщиком. Примеры на страницах автоматизации Revit и Dynamo-скриптов. Опишите задачу через контакты, скажем, что дешевле в вашем случае.
Нужен похожий BIM/AI процесс?
Напишите в Telegram или на email — разберём задачу и предложим архитектуру решения.
Telegram Оставить заявку