Существует проблема — в Ревите нет возможности красиво сделать заголовки в спецификации. Как правило, нам нужно выводить заголовок во вторую строку спецификации, а Ревит умеет генерировать заголовки только над первой. Расскажу некоторые варианты решения проблемы.

Все они в той или иной мере трудны и требуют соблюдения определённой технологии работы. Но вроде как в этом и есть смысл работы в Ревите: долго всё переделывать, а потом смириться и забить. Или не в этом смысл? Напишите в комментарии, в чём смысл-то, зачем это всё?

Под позицией 1 — заголовок
Под позицией 1 — заголовок

Тупо вставить пробелы

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

Если вставить обычные пробелы, то Ревит их отрежет и выбросит, вернув текст без пробелов впереди. Решение — использовать символы Юникода. В блокноте вставляете нужное количество пробелов и перед ними — невидимый символ. Делается это правой кнопкой мыши.

Добавление управляющего символа Юникода перед пробелами, далее этот текст копирую и вставляю в параметр элемента
Добавление управляющего символа Юникода перед пробелами, далее этот текст копирую и вставляю в параметр элемента

Эти символы не видны человеку, но Ревит их видит и уже не считает, что перед текстом набор пробелов. В итоге получаем «перенос» текста на заданное количество пробелов. Может получиться даже весьма симпатично, как на иллюстрации ниже.

Отнёс текст примерно в середину второго столбца с помощью символа Юникода и пробелов
Отнёс текст примерно в середину второго столбца с помощью символа Юникода и пробелов
Настройки спецификации из примера
Настройки спецификации из примера
Заполнение параметра у элементов модели
Заполнение параметра у элементов модели

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

Семейство заголовка

Второе решение — использовать дополнительное семейство для генерации заголовка в нужном столбце спецификации. Процитирую Диму Чубрика:

Ба-дам-тц!
Ба-дам-тц!

Так что решайте сами, насколько оно вам подходит.

Тут можно использовать два варианта: отдельное семейство, которое размещается в модели (максимальный не бим) и вложенное общее семейство без геометрии, так называемая «пустышка», которую нужно добавлять во все семейства. Наименование пустышки и будет формировать заголовок.

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

Отдельное семейство

С отдельным семейством есть одна проблема — его нужно размещать в модели. Очень не хотелось бы, чтобы где-то в углу 3Д-вида лежали кубики, тем более не хочется создавать какой-то отдельный рабочий набор с такими элементами.

Но размещать всё же нужно. И тут есть компромиссный вариант: делать семейство в категории, например «Обобщенные модели», без геометрии. Чтобы мы глазами видели это семейство и могли выделять его в модели, внутрь вложить семейство в категории «Элементы узлов», которое состоит из чёрной заливки, например в форме кружка или квадратика.

Черные квадраты — семейства обобщённой модели с элементом узла в виде квадрата
Черные квадраты — семейства обобщённой модели с элементом узла в виде квадрата

Семейства в итоге не будут отображаться в 3Д-видах, их будет видно исключительно на том плоском виде, на котором вы их разместите. Поэтому создаём отдельный план этажа, называем его «В_Заголовки», и размещаем на нём столько семейств, сколько нужно.

На 3Д-виде квадратов нет, они не выделяются даже рамочкой
На 3Д-виде квадратов нет, они не выделяются даже рамочкой

Дальше заполняем параметры с названием заголовка и для сортировки в спецификациях — готово. Для Ревита это полноценный элемент модели, который идёт в спецификацию по нескольким категориям, но визуально их не видно ни на оформленных планах, ни на разрезах, ни на схемах.

Самое сложное тут, конечно же, заполнять все данные руками и правильно выбирать сортировку так, чтобы заголовки появлялись в нужных местах. Я накидал параметры для примера, это не отлаженная схема, только для иллюстрации:

Пример спецификации с заголовками
Пример спецификации с заголовками

Нижнее подчёркивание средствами Ревита не сделать, поэтому приходится идти на костыльную хитрость — написание текста в две строки, во второй строке добавляю значки верхнего подчёркивания: ¯

Делаю это в блокноте, для заголовка вентиляции текст будет выглядеть так:

СИСТЕМА ВЕНТИЛЯЦИИ ЖИЛОЙ ЧАСТИ

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

У этого способа с двумя строками есть неприятный недостаток: для Ревита тут по-прежнему две полноценные строки, поэтому сделать выравнивание видимого текста по центру ячейки не выйдет. Можно сделать ещё красивее: добавить перед текстом абзац и вставить в него символ Юникода. Смотрите в начале статьи, показывал, как добавлять такие символы. Мама мия, посмотрите, как красиво выходит:

Получается вот так максимально красиво и визуально акцентированно
Получается вот так максимально красиво и визуально акцентированно

Всё сильно зависит от шрифта, который используете в Ревите, поэтому тут только ручная подгонка. Если проектируете примерно одно и то же, ну или заголовки повторяются из проекта в проект, можно сразу наделать либо типоразмеры семейства с нужными заголовками, либо сохранить файл блокнота с заголовками и вставлять по необходимости. Вариант с типами кажется более удобным.

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

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

Теперь задача усложняется из-за необходимости оставлять пустую ячейку в заголовке. Мне повезло, я работаю с крутыми ребятами в Бим2би, которые уже решали аналогичные задачи в шаблонах КР. Так что вот вам алгоритм.

Кстати, у Ковылина есть и другой способ размещать заголовки — через наложение спецификаций. Можете посмотреть его в видеопрезентации шаблонов для Ревита 2021. Ссылка с таймкодом сразу на нужную часть.

У заголовков нужно ввести некий параметр, который будем использовать в условии. Этот параметр укажет, что данное семейство — заголовок. Должен быть не текстовый параметр, текст в условиях не годится. Выбираю «ADSK_Количество» и приравниваю к -1.

Далее создаём условный параметр «Количество без заголовков» и прописываем формулу с условием. Название параметра может быть любым.

Формула обнуляет количество для заголовков
Формула обнуляет количество для заголовков

В данном случае сразу писать ноль в «ADSK_Количество» не стал, так как такое же значение может быть не только у заголовков, но и у семейств, которые пользователи загрузили в проекте и не адаптировали под шаблон. На всякий случай отвожу заголовкам отдельное значение для «ADSK_Количество».

Далее нужно получить процент для значений из количества без заголовков по общему количеству элементов. Простой расчётный параметр с процентом:

Процент для заголовков будет равен нулю, то есть не будет учитываться далее
Процент для заголовков будет равен нулю, то есть не будет учитываться далее

Создаю расчётный параметр, в котором получаю общее количество элементов в каждой строке. Для этого делю количество без заголовков на процентную долю. Для наглядности включил расчёт итогов для количества без заголовков.

Получил общее количество для «реальных» позиций в спецификации
Получил общее количество для «реальных» позиций в спецификации

Как видите, в местах неопределённости, где 0 делится на 0 % получаем пустые строки.

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

Две трубы в одной системе с разными значениями длин
Две трубы в одной системе с разными значениями длин

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

Получил длину каждой трубы и пустые ячейки для заголовков
Получил длину каждой трубы и пустые ячейки для заголовков

Теперь отключаю вывод каждого экземпляра в сортировке и указываю, что для «Количество каждой позиции» нужно вычислять итоги. Пустые ячейки пропадают, теперь тут нули.

Появились нули
Появились нули

Такой вид мне не подходит. Удаляю этот параметр и делаю иначе.

Создаю ещё один процентный параметр. В нём беру долю для количества без заголовков по наименованиям. Рассмотрим на примере двух труб. Они одинаковые по наименованию, но с разным количеством. Если брать процент их количества без заголовков по наименованию, то получим:

  • первая труба длиной 2,5 метра, вторая — 3,8 метра;
  • суммарная длина двух труб с одинаковым наименованием: 2,5 + 3,8 = 6,3 м;
  • таким образом доля первой трубы составляет 2,5/6,3 ≈ 40 %;
  • доля второй трубы: 3,8/6,3 ≈ 60 %.

То есть внутри одного наименование «Труба 150» есть две позиции с разным процентным соотношением по длинам. Если же взять длину каждой трубы и поделить на этот процент, то получим суммарную длину для всех труб с этим наименованием — то есть без вычисления итогов в спецификации получим суммарную длину в каждой строке.

Добавляю процент по наименованию
Добавляю процент по наименованию
Вычисляю суммарную длину в каждой ячейке
Вычисляю суммарную длину в каждой ячейке

Если скрыть все неважные сейчас ячейки, то получим прекрасную картинку, в которой у заголовков нет количества, а у элементов модели — есть.

Итоговая спецификация
Итоговая спецификация

Вложенное семейство

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

Так как заголовок должен всегда идти выше, то число для сортировки приравниваем к комплекту, родительское семейство будет +0.1, а другие вложенные, например начинка пожарного шкафа, будет идти +0.2, +0.3 и так далее. Подробнее об этом смотрите в презентации шаблонов ОВ и ВК версии 2.0.

Спецификация настраивается точно так же, как для отдельного семейства. В общем-то для Ревита это одно и то же: что отдельное семейство, что общее вложенное.

Вот такие способы возможны.

Все полезные ресурсы в одном месте

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

Видеокурс по семействам для вентиляции. Большой курс по созданию оборудования, арматуры, воздухораспределителей и фитингов.

Отблагодарить автора

Если хотите отблагодарить меня, то можете сделать небольшой подарок (именно подарок, такой перевод не облагается налогом). Или подписаться на меня на Бусти.ту и помогать небольшим ежемесячным переводом.

КлаудТипс — можете нажать тут по ссылке и откроется интерфейс для перевода денег или используйте QR-код ниже:

QR-код для перевода благодарности за материалы блога
QR-код для перевода благодарности за материалы блога

Уведомления о новых статьях

Обновления статей удобно получать в Телеграм-канале «Блог Муратова про Revit MEP». Подписывайтесь и приглашайте коллег. Можно обсудить статью и задать вопросы в специальном чате канала.

Методичка по работе в Ревите

Читайте методичку для проектировщиков: полезный материал, в котором последовательно рассказываю, как создавать модель.

Манифест по разработке семейств для ОВ, ВК, ТМ

Подробная инструкция, как следует разрабатывать семейства для инженерных разделов.

Мини-курс по моделированию ОВ и ВК

В специальный плейлист на Ютубе выкладываю свои ролики по работе в Ревите. Этот курс записывал для студентов, разбираю базовые моменты по моделированию.