Dynamo Player: как отдать скрипт команде и не пожалеть
Готовим граф к передаче: входные параметры, папки на сервере, описание и иконка. Плюс список причин, по которым скрипты в командах не приживаются, и что делать.
Скрипт работает у автора. У остальных пяти человек в отделе не работает: у одного не открывается, у второго открывается и падает, третий вообще не знает, что скрипт существует. Знакомая история?
Dynamo Player решает техническую часть проблемы. Пользователь жмёт треугольник, вводит два значения, получает результат. Ни холста, ни нод, ни возможности что-нибудь случайно оторвать. Организационную часть Player не решает, и об этом во второй половине.
Что такое Player и чего он не умеет
Кнопка на вкладке «Управление», рядом с самим Dynamo. Открывается панель со списком графов из указанной папки. Каждый граф - строка с названием, описанием и кнопкой запуска.
Player запускает .dyn без открытия среды Dynamo, поэтому стартует за пару секунд вместо двадцати. Показывает поля ввода, которые вы разрешили. Отдаёт результат в модель.
Чего он не делает:
- не показывает предупреждения нод (жёлтые узлы в Player невидимы);
- не даёт откатить частично выполненный граф;
- не умеет диалоговых сценариев «сначала выбери одно, потом покажу второе»;
- при ошибке пишет что-то невнятное вроде «Graph has issues», без указания места.
Последнее означает: отлаживать всё равно придётся в Dynamo. Player - витрина, а не среда разработки.
Подготовка графа: пять шагов
1. Режим запуска Manual. Открываете граф, переключаете Run на Manual, сохраняете. Граф, сохранённый в Automatic, в Player ведёт себя непредсказуемо.
2. Помечаем входы. Правый клик по ноде → Is Input. Только помеченные ноды попадут в панель Player. Поддерживаются не все типы: Number Slider, Integer Slider, String, Boolean, File Path, Directory Path, Select Model Element и Select Model Elements. Code Block входом быть не может, выпадающий список Categories - тоже, и это первое разочарование при подготовке.
Обходной путь для выбора категории: строковый вход с точным именем плюс Category.ByName внутри графа. Пользователь пишет «Двери», граф разбирается сам. Работает, но требует от человека точного написания, поэтому в описании обязательно перечислите допустимые варианты.
3. Переименовываем входные ноды. Имя ноды становится подписью поля. String в панели выглядит как String, и человек не понимает, что туда писать. Двойной клик по заголовку ноды, пишем по-человечески: Имя параметра (например, Обозначение), Префикс номера, Куда сохранить отчёт.
4. Заполняем свойства графа. В Dynamo: «Файл» → «Свойства графа». Там имя, описание, автор и картинка-превью. Описание видно прямо в панели Player, и это единственная документация, которую пользователь реально прочитает. Пишите в нём не «скрипт для нумерации», а что произойдёт с моделью: «Перенумерует все помещения на активном виде. Старые номера будут перезаписаны. Отмена через Ctrl+Z».
5. Выход тоже помечаем. Правый клик → Is Output на ноде Watch со сводкой. Пользователь увидит «обработано 307 элементов» и поймёт, что скрипт отработал. Без этого он видит пустую панель и не понимает, случилось ли что-нибудь.
Папки, версии, пакеты
В панели Player есть шестерёнка: там задаётся путь к папке с графами. Кладите её на сетевой диск, к которому у всех есть доступ на чтение: \\server\BIM\dynamo\. Запись оставьте себе.
Внутри разложите по подпапкам. Player показывает их вкладками, и это единственная навигация, которая у вас есть:
| Папка | Что внутри | Кто пользуется |
|---|---|---|
01_Проверки | графы, которые ничего не пишут, только считают и показывают | все |
02_Заполнение | параметры, обозначения, нумерация | АР, КР |
03_Выгрузки | Excel, отчёты, ведомости | ГИП, сметчик |
_archive | старые версии | никто, но лежат |
Версию пишите в имени файла: Нумерация_помещений_v4.dyn. Не «финал», не «новый», не «финал2». Когда у половины команды Revit 2022, а у половины 2024, добавляйте версию Revit в имя папки, потому что граф с нодами из свежего ядра в старом Dynamo просто не откроется.
Пакеты - главная техническая причина «у меня не запускается». Если граф использует Clockwork, archi-lab или Rhythm, а у пользователя их нет, Player покажет ошибку. Два решения. Первое: собирать графы для команды только на нодах ядра, даже если это на 20% дольше. Второе: положить папку packages на тот же сетевой диск и прописать всем путь в настройках Dynamo («Параметры» → «Управление путями к узлам и пакетам»). Второй вариант надёжнее, но требует один раз пройтись по машинам.
Инструкция на одну страницу
Пять пунктов, не больше. Люди не читают документацию длиннее экрана, и это не их недостаток.
- Что делает скрипт, одной фразой.
- Что должно быть открыто до запуска: какой вид, какая модель, синхронизирована ли.
- Что вводить в поля, с примером реального значения.
- Что появится в результате и как это проверить.
- К кому идти, когда сломалось. С именем, а не «в отдел BIM».
Держите инструкцию рядом с графом, в той же папке, в PDF. Ссылку на неё вставьте в описание графа.
Почему внедрение проваливается
Технически всё готово, а пользуются двое из шести. Причины из практики, по частоте.
Скрипт решает не ту задачу. Автор автоматизировал то, что раздражало лично его. У остальных болит другое. Лечится наблюдением: сядьте рядом с проектировщиком на полчаса и посмотрите, что он делает руками чаще всего.
О скрипте никто не знает. Разослали письмо, все прочитали и забыли через день. Работает только показ: 15 минут на планёрке, на боевой модели, с реальным результатом на экране.
Один раз испортил модель. Самая тяжёлая причина. Скрипт что-то перезаписал, человек потерял час на восстановление, и больше он к Player не подойдёт никогда. Доверие возвращается месяцами. Профилактика: первые версии графов делайте в режиме «только отчёт», пусть они показывают, что собираются изменить, и ничего не пишут.
Автор ушёл в отпуск. Скрипт сломался после обновления Revit, чинить некому, команда вернулась к ручной работе. Назначьте владельца библиотеки скриптов и держите вторым человеком того, кто хотя бы умеет открыть граф и посмотреть на красную ноду.
Слишком много скриптов сразу. Выкатили двенадцать штук, люди растерялись и не стали разбираться ни в одном. Давайте по одному, раз в две недели, начиная с самого болезненного.
Где это не работает
Player не годится для операций, требующих выбора по ходу дела. Диалоги, подтверждения, разветвления сценария - для этого нужен либо forms из pyRevit, либо полноценный плагин. Разница между подходами разобрана в статье про плагин и Dynamo.
Тяжёлые графы в Player запускать неудобно. Пять минут молчащего интерфейса без прогресс-бара человек воспринимает как зависание и жмёт Escape посреди транзакции. Всё, что дольше минуты, лучше оформлять отдельной процедурой с явным предупреждением.
И не ждите, что Player заменит обучение. Он снижает порог, но не отменяет понимания того, что скрипт делает с моделью. Человек, который не знает разницы между параметром типа и экземпляра, нажмёт кнопку и получит сорок изменённых дверей вместо одной.
Три звонка, которые вам поступят
«Пишет Graph has issues, и всё».
Player не показывает, что именно сломалось. Открывайте этот же граф в Dynamo и смотрите на красные ноды. Три частые причины: не установлен пакет, граф сохранён в другой версии Dynamo, входная нода помечена как Is Input, но её тип Player не поддерживает. Последнее коварно тем, что у автора всё работает: он-то запускает из среды.
«Кнопка нажалась, а ничего не произошло».
Скрипт отработал на активном виде, а человек стоял на 3D-виде или на листе. Либо выборка пуста, потому что нужные элементы лежат на другом уровне. Лечится двумя способами: ставить в граф проверку контекста с внятным сообщением («откройте план этажа») и обязательно выводить в Is Output количество обработанных элементов. Пустой результат должен выглядеть как «обработано 0», а не как тишина.
«Он мне всё перезаписал».
Самый неприятный. Пользователь запустил граф, не прочитав описание, и скрипт перебил заполненные вручную значения. Виноват не пользователь. В описании графа первой строкой должно стоять, что будет перезаписано, а сам граф по возможности должен трогать только пустые поля. Как отфильтровать заполненные, разобрано в статье про автозаполнение параметров.
Чек-лист перед раздачей
- Граф отработал на трёх разных моделях, а не только на той, где писался.
- Имена входных полей понятны человеку, который граф не писал. Проверяется просто: покажите панель коллеге и спросите, что он туда впишет.
- В описании сказано, что меняется в модели и что делать при ошибке.
- Скрипт не падает на пустой выборке и на модели без нужной категории.
- Пакетов нет. Если есть, путь к общей папке пакетов прописан у всех, и это проверено на чужой машине, а не на вашей.
- Есть версия в имени файла и предыдущая копия в
_archive. - Кто-то из команды, кроме вас, знает, где лежат исходники и как их открыть.
Короткие ответы на частые вопросы
Player входит в Revit или его надо покупать? Входит, начиная с Revit 2017, отдельная лицензия не нужна. Это часть Dynamo for Revit.
Можно ли запускать графы по расписанию, ночью? Через Player нет, он требует открытого Revit и живого человека у кнопки. Пакетная обработка моделей делается другими средствами: Design Automation или обвязка на pyRevit с журналами Revit. Тема отдельная и заметно дороже в настройке.
Как запретить части команды пользоваться скриптами? Правами на папку. Player видит только то, что доступно пользователю на чтение. Разложите графы по подпапкам под разные отделы и раздайте доступ по группам.
Работает ли Player в Revit LT? Нет. В LT нет Dynamo и API для надстроек, и обойти это нечем.
Сколько графов нормально держать в библиотеке? У команд, которые я видел вблизи, живут 8-15 штук. Всё, что сверху, обычно лежит мёртвым грузом: люди помнят десяток инструментов, дальше начинают искать, а поиска в Player нет.
Следующий шаг
Возьмите один готовый граф. Пометьте входы, переименуйте ноды, напишите описание в свойствах, положите в папку на сервере. Покажите одному коллеге, не всей команде. Посмотрите, где он споткнётся: это и будет ваш список правок.
Графа пока нет? Соберите первый по пошаговому разбору. Хорошие кандидаты на раздачу команде: автозаполнение параметров и выгрузки в Excel. Когда библиотека перерастёт два десятка графов, пора смотреть в сторону собственных кнопок на pyRevit.
Хотите собрать библиотеку скриптов для отдела и не тратить на это полгода? Напишите в Telegram или через форму на странице контактов. Что мы делаем на таких внедрениях, есть в услугах, частые вопросы собраны в FAQ.
Нужен похожий BIM/AI процесс?
Напишите в Telegram или на email — разберём задачу и предложим архитектуру решения.
Telegram Оставить заявку