Найти в Дзене

pyRevit. Вывод таблицы в Revit

Заголовк кликбейт, так что если ты не знаешь что такое pyRevit
тыкай сюда: и заходи сюда: а для тех кто уже давно в теме в этой статье мы рассмотрим такой метод как print_table() - удобный способ вывода информации в табличном виде. print_table() — это метод библиотеки pyRevit, который используется для вывода данных в виде таблицы в окно вывода pyRevit. 💡 Вместо того, чтобы выводить данные списками или строками, вы получаете красивую табличную структуру, где всё четко разложено по столбцам. 💡Если уж на чистоту то данный метод скудный: нельзя поиграться с цветами ячеек (не считая последней), нельзя нормально задать выравнивание, но если задача структурировать вывод и вам больше ничего не надо - подойдет супер, а еще он отлично подойдет по причинам ниже ✅ Если список данных слишком длинный, и вы хотите видеть всё в структурированном виде.
✅ Когда нужно логически разделить информацию (например, все стены, двери, окна).
✅ Если данные имеют одинаковую структуру, удобнее выводить их в вид
Оглавление

Введение

Заголовк кликбейт, так что если ты не знаешь что такое pyRevit
тыкай сюда:

pyRevit | Первые шаги | pyRevit | BIM. Илья Нистратов | Дзен

и заходи сюда:

pyRevit | BIM. Илья Нистратов

а для тех кто уже давно в теме в этой статье мы рассмотрим такой метод как print_table() - удобный способ вывода информации в табличном виде.

Вот например скрипт который ищет все дублирования в модели и выводит в таблицу разбив на оригинал и дубликаты
Вот например скрипт который ищет все дублирования в модели и выводит в таблицу разбив на оригинал и дубликаты

📌 Что такое print_table()?

print_table() — это метод библиотеки pyRevit, который используется для вывода данных в виде таблицы в окно вывода pyRevit.

💡 Вместо того, чтобы выводить данные списками или строками, вы получаете красивую табличную структуру, где всё четко разложено по столбцам.

💡Если уж на чистоту то данный метод скудный: нельзя поиграться с цветами ячеек (не считая последней), нельзя нормально задать выравнивание, но если задача структурировать вывод и вам больше ничего не надо - подойдет супер, а еще он отлично подойдет по причинам ниже

Когда использовать print_table()? 📌

✅ Если список данных слишком длинный, и вы хотите видеть всё в структурированном виде.
✅ Когда нужно
логически разделить информацию (например, все стены, двери, окна).
✅ Если
данные имеют одинаковую структуру, удобнее выводить их в виде таблицы, а не обычным списком.
✅ Когда нужно
анализировать данные, их проще воспринимать в колонках.

📌 Основной синтаксис

Сама функция

💡print_table(table_data, columns=None, formats=None, title='', last_line_style='')

💡Из обязательных параметров только table_data и columns остальные по желанию

  • table_data — список списков, содержащий данные таблицы.
  • columns — заголовки столбцов таблицы.

Пример кода

from pyrevit import script

output = script.get_output()

output.print_table(
table_data=[
["Имя", "Категория", "ID"],
["Стена 1", "Walls", 12345],
["Окно 1", "Windows", 67890]
],
title="Список элементов",
columns=["Название", "Категория", "Element ID"]
)

Данный код выведет такую штуку

-3

📌Практическое применение

💡Разберем на одном простом примере как реально можно использовать данный вывод.

Понадобилось мне вдруг вывести все оси в модели и что бы быстро и спеки не открывать.

💡И появился такой код

-4
  • Стр. 73 – Объявление функции grids(doc), принимающей документ doc как аргумент.
  • Стр. 74 – Получение всех осей (OST_Grids) в проекте.
  • Стр. 75 – Проверка, есть ли оси в проекте.
  • Стр. 76-84 – Формирование списка grids_data, содержащего данные об осях:
  • Стр. 85 – Сортировка списка осей по имени.
  • Стр. 86 – Добавление порядкового номера к каждой строке.
  • Стр. 88-92 – Вывод таблицы с данными:
    Заголовок:
    "Оси (кол-во: N)"
    Колонки: №, Имя, ID, Закрепление, Рабочий набор, Мониторинг, Последний редактор, Автор, Владелец
  • Стр. 93-94 – Если осей нет, выводится сообщение "Оси в проекте отсутствуют".
  • Стр. 96 – Вызов функции grids(doc), передача документа в обработку.

💡Функции проверок да и весь код тут

get grids

📌ФИШКИ

Раз уж мы работаем тут с HTML то можно все таки разукрасить текст.

Например:

def pinned(el):
return '<span style="color:green;">Да</span>' if el.Pinned else '<span style="color:red;">Нет ⛔</span>'

Мы по сути просто вместе "Да" выводим "<span style="color:green;">Да</span>"
Обернули простой тект в HTML разметку и отдали таблице

-5


Понимаю... баловство, но нам надо было просто и быстро получить результат. А пайревит это про результат.

Еще важный момент, таблицы нормально дружат с линкифай, о них руссказывал тут глава 7

Ресурсы

Шикарный ТГ

pyRevit | BIM. Илья Нистратов

Офф документация

Effective Output | Notion

Код и статьи

get grids