Найти в Дзене

pyRevit. Делаем кнопки в Revit красивыми

Возможно, вам интересно, что такое файл bundle.yaml и зачем он нам нужен? bundle.yaml Это необязательный файл, который может содержать дополнительную информацию о папке, в которой он находится, например, о порядке расположения элементов. Они не обязательные, но могут помочь в оформление и структурирование данных, а также в описание кнопок. Разберем их поподробнее. Для настройки сортировки используются Bundle Layout Для описания кнопок Bundle Metadata Контексты Bundle Context Если вы хотите управлять расположением кнопок или панелей, у вас есть два варианта: Например: Таким образом, эти кнопки будут отображаться в том же порядке, что и их названия в Revit. Это простой и быстрый способ упорядочить файлы. Однако, если вы хотите упорядочить кнопки независимо от того, как вы называете папки, и управлять тем, что отображается или скрывается, вам следует использовать файл bundle.yaml. Внутри вам нужно использовать ключевое слово layout и затем указать имена папок без суффиксов. Вот пример ест
Оглавление
или как оформить и отсоритровать наши кнопки
или как оформить и отсоритровать наши кнопки

Введение

Возможно, вам интересно, что такое файл bundle.yaml и зачем он нам нужен?

bundle.yaml Это необязательный файл, который может содержать дополнительную информацию о папке, в которой он находится, например, о порядке расположения элементов. Они не обязательные, но могут помочь в оформление и структурирование данных, а также в описание кнопок. Разберем их поподробнее.

Ресурсы

Для настройки сортировки используются Bundle Layout

Для описания кнопок Bundle Metadata

Контексты Bundle Context

Бандлы слоев

Если вы хотите управлять расположением кнопок или панелей, у вас есть два варианта:

  • Используйте именование для упорядочивания

Например:

  • 📁Имя_кнопки1.кнопка
  • 📁Имя_кнопки2.кнопка

Таким образом, эти кнопки будут отображаться в том же порядке, что и их названия в Revit.

Это простой и быстрый способ упорядочить файлы.

layout

Однако, если вы хотите упорядочить кнопки независимо от того, как вы называете папки, и управлять тем, что отображается или скрывается, вам следует использовать файл bundle.yaml.

Внутри вам нужно использовать ключевое слово layout и затем указать имена папок без суффиксов.

Вот пример есть такая структура внутри папки .panel

-2

А вот что внутри файла bundle.yaml

layout:

- Кнопка1

- Выпадающий список1

- URLКнопка

- Стак

💡Перезапустите pyRevit после применения изменений. Иногда может потребоваться даже перезапустить Revit.

И теперь на панели кнопки отобразятся в порядке указанном в бандле

Банды контекста

Если поместить bundle.yaml в конечную папку, например .pushbutton мы сможем задать имя, которое отобразится на панели.

title

💡Для этого используем такой указатель title

title: ИМЯ КНОПКИ

При этом имя папки, или _title_ внутри скрипта будет проигнорирован.

💡Если мы хотим перенести текст имени, например когда длинное название используем спец символ \n и оборачиваем текст в ковычки, т.е. так:

title: ”ИМЯ\nКНОПКИ”

tooltip

💡Для добавления описания кнопки, которая указывается при наведение курсора используем tooltip

tooltip: Описание

перенос на новую строку работает аналогично

tooltip: ”Строка 1\nСтрока 2\nСтрока 3”

author

Хорошей практикой будет указание автора кода, для этого используем author

author: NistratovIlia

чтобы все знали, кому жаловаться что кнопка сломала модель

а так указать несколько авторов

authors:

- John Doe

- Ehsan Iran-Nejad

highlight

если хотите выделить кнопку на панели можно добавить highlight

highlight: new

-3

или с значние updated если обновили код

highlight: updated

-4

context

Еще один интересный указатель context.

С помошью него можно настроить условие когда кнопка будет доступна.

Хотим что бы кнопка была доступна без открытой модели?

Делаем так:

context: zero-doc

Или указать конкретный тип документа

context: doc-project #Если открыт проект

context: doc-workshared #Если у открытого документа включена совместная работа

context: doc-cloud #Если документ с bim360

context: doc-family # Если документ является семейством

Хотим что бы кнопка была доступна только если что-то выделили?

Делаем так:

context: selection

А что если мы хотим отфильтровать категории элементов с которыми работает кнопка?

Делаем так:

context: category

Например

context: PipeCurve

А если несколько:

context:

- Walls

- Windows

при таком вводе, кнопку можно будет нажать только в том случае, если мы выделили стены или окна

А кстати их можно комбинировать:

context:

- selection

- active-section-view

context:

- walls

- columns

- active-plan-view

min_revit_version

А что если нам нужно отрегулировать в какой версии Revit будет видна кнопка а в какой нет? Используем следующие указатели

# Минимальная поддерживаемая версия

min_revit_version: 2015

max_revit_version

# Максимальная поддерживаемая версия

max_revit_version: 2018

При комбинирование версий можно ограничить минимальную и максимальную версию

Заключение

Бандлы это мощный и гибкий инструмент, который позволит вам настроить панель и кнопки под ваши нужды.

Обязательно посмотрите ссылки представленные в ресурсах данной статьи, вы найдете много интересных примеров.