Найти в Дзене

pyRevit. Красивая и информативная печать текста в Revit

Речь в данном посте пойдет об одной мощной функции в пайревит - print_md. (если вы попали на данную статью случайно и совершенно не понимаете кто такой пайревит - велком сюда) print_md – это функция, которая позволяет выводить текст в формате Markdown непосредственно в консоль pyRevit. Markdown – это лёгкий язык разметки, который позволяет задавать заголовки, списки, выделения и даже вставлять HTML-элементы. Благодаря этому вывод становится не просто текстом, а красиво оформленным и удобным для восприятия. Кстати, скорее всего, на дзене используется какой-то аналог маркдауна, но только кривой... маркдаун курильщика. Зачем это нужно?
Представь, что ты написал скрипт, который анализирует модель Revit, считает количество элементов, выводит предупреждения и даже показывает таблицы. Вместо того, чтобы просто печатать текст через стандартный print(), ты можешь с помощью print_md сделать вывод более структурированным и наглядным. Это особенно полезно при обучении, демонстрации результатов
Оглавление

Введение

Речь в данном посте пойдет об одной мощной функции в пайревит - print_md.

(если вы попали на данную статью случайно и совершенно не понимаете кто такой пайревит - велком сюда)

print_md – это функция, которая позволяет выводить текст в формате Markdown непосредственно в консоль pyRevit. Markdown – это лёгкий язык разметки, который позволяет задавать заголовки, списки, выделения и даже вставлять HTML-элементы. Благодаря этому вывод становится не просто текстом, а красиво оформленным и удобным для восприятия.

Кстати, скорее всего, на дзене используется какой-то аналог маркдауна, но только кривой... маркдаун курильщика.

Зачем это нужно?
Представь, что ты написал скрипт, который анализирует модель Revit, считает количество элементов, выводит предупреждения и даже показывает таблицы. Вместо того, чтобы просто печатать текст через стандартный print(), ты можешь с помощью print_md сделать вывод более структурированным и наглядным. Это особенно полезно при обучении, демонстрации результатов и создании отчетов.

-2

Как это модет выглядеть?

Пример принта с использованием print_md()
Пример принта с использованием print_md()

1. Заголовки
2. Отступы и списки
3. Сочетание оформлений
4. Разделитель
5. Эмодзи

Принцип работы print_md

print_md принимает строку с текстом, содержащим Markdown-разметку, и отображает её в окне вывода pyRevit. Благодаря этому можно использовать:

  • Заголовки: # Заголовок 1, ## Заголовок 2 и т.д.
  • Списки: - пункт или * пункт для маркированных списков.
  • Выделение текста: жирный, курсив и т.д.
  • Вставку HTML: <p style="color: red;">Красный текст</p> для дополнительного форматирования.

Вот собстенно и все, теперь берем читаем про маркдаун разметку, закидываемся знаниями о HTML и в путь. Разберетесь.
Ну ладно, немного примеров.

Примеры

1. Заголовки

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

Пример:

from pyrevit import script
output = script.get_output()
output.print_md("# Заголовок 1")
output.print_md("## Заголовок 2")
output.print_md("### Заголовок 3")

Что получится:

  • «Заголовок 1» будет самым крупным.
  • «Заголовок 2» — чуть поменьше.
  • «Заголовок 3» — используется для подзаголовков.
-4

2. Жирный и курсивный текст

Вы можете выделять важные слова и фразы, делая их жирными или курсивными.

Примеры:

output.print_md("**Это жирный текст**")
output.print_md("*Это курсивный текст*")
output.print_md("***Это жирный и курсивный текст***")

Совет: Используйте жирный текст для выделения ключевых моментов, а курсив — для уточнения или примечаний.

-5

3. Разделитель

output.print_md("___")

Поможет вам добавить горизонтальную линию что визуально отделит выводимую информацию

4. Ссылки

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

Пример:

output.print_md("Для подробностей смотрите [Revit API Docs](https://www.revitapidocs.com).")
-6

5. Списки

Markdown поддерживает как маркированные, так и нумерованные списки.

Маркированные списки:

output.print_md("- Пункт 1\n- Пункт 2\n- Пункт 3")

Нумерованные списки:

output.print_md("1. Первый пункт\n2. Второй пункт\n3. Третий пункт")

Подсказка: Разделяйте пункты переносами строки, чтобы список выглядел аккуратно.

-7

Отступы для цитат

Цитаты (Blockquotes):
Используйте символ > для создания цитат. Если нужно сделать вложенную цитату, добавьте дополнительные символы >.
Пример:

output.print_md("> Это основной блок цитаты.\n>> Это вложенная цитата.")

Чем больше > тем глубже отступ

-8

6. Расширенные возможности HTML в Markdown

Markdown сам по себе предоставляет базовые возможности форматирования, но иногда возникает необходимость в более тонком управлении стилем. Для этого можно использовать HTML-теги прямо внутри Markdown.

6.1 Базовые примеры использования HTML

Изменение цвета текста:
Вы можете использовать тег <span> с CSS-стилями, чтобы изменить цвет или шрифт.
Пример:

output.print_md("<p style='color: red;'>Это текст красного цвета</p>")
-9

Центрирование текста:
Хотя Markdown не поддерживает выравнивание напрямую, HTML может решить эту задачу.
Пример:



output.print_md("<div style='text-align: center;'>Этот текст по центру</div>")
-10

Создание таблиц:
Если стандартный синтаксис Markdown для таблиц вам не подходит, можно создать таблицу с помощью HTML-тегов.
Пример:

html_table = """
<table border='1' style='border-collapse: collapse;'>
<tr>
<th>Параметр</th>
<th>Описание</th>
</tr>
<tr>
<td><code>print_md</code></td>
<td>Вывод форматированного текста в pyRevit</td>
</tr>
<tr>
<td><code>get_output()</code></td>
<td>Получение объекта для вывода</td>
</tr>
</table>
"""

output.print_md(html_table)

-11

Кстати!!!
О стандартном интрументарии печати данных в табличном предсталение с помощью print_table() ТУТ

6.2 Продвинутые возможности HTML

Стилизация через CSS:
Вы можете задавать не только цвет, но и шрифты, размеры, отступы и многое другое, используя встроенные CSS-стили.
Пример:

html_styled = """
<p style='font-family: Arial; font-size: 16px; color: blue; text-align: justify;'>
Этот текст оформлен с использованием встроенного CSS. Вы можете изменять шрифт, размер, цвет и даже отступы.
</p>
"""
output.print_md(html_styled)
-12

Использование списков и других элементов:
Если вам нужно комбинировать HTML и Markdown, вы можете использовать HTML для создания сложных структур, а Markdown — для более простых блоков.
Пример комбинирования:

combined = """
## Секция с HTML и Markdown
<div style='background-color: #f0f0f0; padding: 10px;'>
<p style='color: green;'>Это абзац, оформленный с помощью HTML внутри Markdown.</p>
<ul>
<li>Пункт 1</li>
<li>Пункт 2</li>
</ul>
</div>
"""
output.print_md(combined)
-13

7. Выделение элементов

Функция linkify в pyRevit позволяет превращать идентификаторы элементов в интерактивные ссылки. То есть, если вы передадите ей ElementId элемента, она сгенерирует ссылку, при клике на которую pyRevit выделит или «подсветит» этот элемент в модели. Это очень удобно для быстрого перехода к интересующему объекту прямо из отчёта или логов.

Как это работает:

  • При передаче ID: Вызывая linkify с идентификатором (или объектом элемента), pyRevit оборачивает его в специальный HTML‑код.
  • Интерактивность: Полученная ссылка отображается в окне вывода как кликабельный элемент.
  • Действие при клике: Когда пользователь нажимает на эту ссылку, pyRevit получает ID и автоматически активирует соответствующий элемент в модели (например, выделяет его в интерфейсе) или (при клике по лупе) откроет вид и сфокусируется на элементе
from pyrevit import script
from Autodesk.Revit.DB import FilteredElementCollector, Wall
output = script.get_output()
doc = __revit__.ActiveUIDocument.Document
# Получаем одну стену из модели (или любой другой элемент)
wall = FilteredElementCollector(doc).OfClass(Wall).FirstElement()
# Выводим сообщение с ссылкой, по которой можно перейти к элементу output.print_md("Выделить".format(output.linkify(wall.Id)))

Примечание:
В некоторых версиях pyRevit функция linkify может принимать как объект элемента, так и непосредственно его ElementId. При клике pyRevit автоматически откроет вид, где находится элемент, и выделит его.

Таким образом, функция linkify делает ваш вывод не просто информативным, а интерактивным – пользователю достаточно нажать на ссылку, чтобы мгновенно перейти к интересующему элементу в модели.

-14

Итог

Функция print_md в pyRevit — это не просто средство вывода текста. Она открывает возможности для создания:

  • Заголовков, списков и цитат для структурированного и понятного отчёта.
  • Кодовых блоков с сохранением отступов, что делает примеры кода легко читаемыми.
  • Эмодзи, добавляющих эмоциональный и визуальный акцент.
  • HTML-разметки для продвинутого форматирования, позволяющей контролировать цвета, выравнивание, отступы, таблицы и многое другое.

Используя все эти возможности, вы можете создавать не только функциональные, но и эстетически привлекательные отчёты и выводы, которые будут понятны как вам, так и вашим коллегам.

🚀 Начни использовать print_md уже сегодня, и твои скрипты заиграют новыми красками!

ТГ канал здесь

-15