PyScript: Dynamo

#python #pyscript #revit #api #dynamo


Использование dynamo player'a как менеджера python скриптов.


Как работает

Нода Script.Execute находит в директории питоновский файл с таким же именем как у основного файла (.dyn) и запускает его.

  • Принты и ошибки выводятся в output и доступны для просмотра из dynamo player'a.

  • Текущая и родительская директория добавляется в пути для импорта

  • Для создания нового скрипта не нужно открывать dynamo: достаточно просто скопировать любую пару <script name>.dyn / <script name>.py

Начало работы


Создание "точки входа" в Dynamo:

  1. В менеджере расширений найти и установить PyScript

  2. Разместить в пространстве ноду Script.Execute

  3. Подключить ее к ноде Watch

  4. ПКМ на Watch → выбрать "is Output"

  5. Переименовать ноду Watch: не важно как, главное изменить имя

  6. Сохранить файл, закрыть Dynamo. (нода не будет работать пока файл не сохранен)

  7. Создать рядом .py файл с таким же именем


Организация проекта


Вынесение всех Revit API импортов в отдельный модуль.


Шаблон скрипта

  • Импорт основных сущностей: транзакции, Document, UIApplication, пространств имен DB и UI.

  • Транзакция реализована декоратором @transaction

  • Логгер

  • try/except на случай фиаско


Пример №1. Ошибки

Изолирование элементов с ошибками на текущем виде.


Метод документа GetWarning() возвращает список FailureMessage

Список элементов послуживших причиной появления данной ошибки получается методом FailureMessage.GetFailingElements().

Чтобы избежать дублирования элементов можно вместо списка использовать set()(множество)

Ошибки необходимо конвертировать из питоновского set в List<ElementId> для передачи методу активного вида IsolateElementsTemporary()


Скрипт целиком:


Просмотров: 0
  • YouTube - Белый круг
  • Facebook - Белый круг
  • Instagram - Белый круг

+7 (495) 766-89-13

Россия, город Москва, проспект Мира д.3 стр.3, эт. 4 

м. Сухаревская (выход 3)