Automation16 августа 20261558 слов

Dynamo Player: как отдать скрипт команде и не пожалеть

Готовим граф к передаче: входные параметры, папки на сервере, описание и иконка. Плюс список причин, по которым скрипты в командах не приживаются, и что делать.

Dynamo Player: как отдать скрипт команде и не пожалеть

Скрипт работает у автора. У остальных пяти человек в отделе не работает: у одного не открывается, у второго открывается и падает, третий вообще не знает, что скрипт существует. Знакомая история?

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

Что такое Player и чего он не умеет

Кнопка на вкладке «Управление», рядом с самим Dynamo. Открывается панель со списком графов из указанной папки. Каждый граф - строка с названием, описанием и кнопкой запуска.

Player запускает .dyn без открытия среды Dynamo, поэтому стартует за пару секунд вместо двадцати. Показывает поля ввода, которые вы разрешили. Отдаёт результат в модель.

Чего он не делает:

Последнее означает: отлаживать всё равно придётся в 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 («Параметры» → «Управление путями к узлам и пакетам»). Второй вариант надёжнее, но требует один раз пройтись по машинам.

Инструкция на одну страницу

Пять пунктов, не больше. Люди не читают документацию длиннее экрана, и это не их недостаток.

  1. Что делает скрипт, одной фразой.
  2. Что должно быть открыто до запуска: какой вид, какая модель, синхронизирована ли.
  3. Что вводить в поля, с примером реального значения.
  4. Что появится в результате и как это проверить.
  5. К кому идти, когда сломалось. С именем, а не «в отдел 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», а не как тишина.

«Он мне всё перезаписал».

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

Чек-лист перед раздачей

Короткие ответы на частые вопросы

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 Оставить заявку