
Что делает кнопка
Это одна команда с тремя разными сценариями — какой из них сработает, зависит от того, что вы выделили в модели перед нажатием кнопки:
- Выделена типовая аннотация «…Обозначение – Высота этажа» → аннотация копируется на все уровни проекта.
- Выделена одна или несколько марок (
IndependentTag) → у каждой марки подбирается (или создаётся) типоразмер с нужной длиной полки. - Выделены трубы или изоляция труб (либо не выделено ничего подходящее из первых двух пунктов, но на активном виде есть изоляция труб) → на вертикальных/горизонтальных участках изоляции труб расставляются условные графические обозначения (УГО) в виде «ёлочки».
Если ничего не выделено — плагин покажет сообщение с просьбой выделить элементы.
Сценарий 1: копирование аннотации «Отметка/Этаж» по всем уровням
Сработает, если выделен ровно один элемент, и его семейство называется «…Обозначение – Высота этажа».
Что происходит:
- Собираются все уровни проекта, по возрастанию высоты.
- Для каждого уровня выделенная аннотация копируется на то же место и сдвигается по направлению «вверх» текущего вида на разницу высот между этим уровнем и самым нижним уровнем проекта (с поправкой на масштаб вида — аннотация ведь плоская, привязанная к экрану, а не к 3D‑модели).
- В копии заполняются параметры:
- «Отметка» — высота уровня в миллиметрах, отформатированная как принято на чертежах (со знаком и точкой-разделителем разрядов, например «+3.600»).
- «Этаж» — имя уровня (берётся с его собственного параметра «Этаж», если он есть, иначе — со стандартного имени уровня).
- Исходный (выделенный) экземпляр аннотации в конце удаляется — остаются только копии, расставленные по уровням.
Используйте это, когда нужно быстро проставить один и тот же условный значок «отметка/этаж» на каждом уровне здания, не расставляя его вручную N раз.
Тут есть одна сложность. Что типовую аннотацию нельзя разместить на 3д виде. Мы сначала размещаем ее на плоском виде

А потом копируем на 3д вид. Если скопировать не удается. Проверье настройки 3д вида

Сценарий 2: подбор длины полки у марки
Сработает, если среди выделенного есть марки (IndependentTag) — тогда обрабатывается каждая выделенная марка по очереди.
Что происходит для каждой марки:

- Если у марки есть выноска (полка с изломом) — она временно скрывается, чтобы не мешать замеру.
- Измеряется текущая горизонтальная ширина марки (bounding box по оси X) в миллиметрах. Если активный вид — 3D, длина дополнительно корректируется (на 3D‑виде у марки нет привязки к масштабу листа, как на 2D‑видах, поэтому нужна поправка).
- Плагин ищет среди всех типоразмеров того же семейства марки такой, у которого:
- параметр «Длина полки» (числовой, тип Double) равен измеренной длине;
- и все остальные целочисленные параметры типа совпадают с текущим типом марки (это нужно, чтобы не перепутать разные варианты оформления марки — например, с плечом слева/справа — если они закодированы целочисленными параметрами).
- Если подходящий типоразмер найден — марка переключается на него.
- Если не найден — создаётся новый типоразмер (дубликат текущего) с именем по образцу «‹базовое имя› – ‹длина› мм» (если в конце имени текущего типа уже было «- число», это число заменяется на новое; если нет — дописывается новый хвост), у нового типа проставляется «Длина полки» = измеренному значению, и марка переключается на этот новый тип.
- Выноска возвращается в исходное состояние (скрыта/показана — как было).

Требования к семейству марки:
- У семейства марки должен быть параметр типа «Длина полки» (числовой).
- В конце имени каждого типоразмера должно быть написано «- X мм», где X — длина полки в миллиметрах (это нужно, чтобы плагин мог корректно формировать имя нового типоразмера, дописывая/заменяя это число).
Сценарий 3: расстановка УГО изоляции труб «ёлочкой»

Сработает, если среди выделенного (или в контексте активного вида) есть трубы или их изоляция. Работает только с изоляцией труб (OST_PipeInsulations), изоляция воздуховодов этой командой не обрабатывается.
Порядок действий:
- Если в проекте нет семейств «…УГО_Изоляция_Вертикальная» / «…УГО_Изоляция_Горизонтальная» — плагин попробует автоматически загрузить их из папки
Familyрядом со сборкой плагина. - Собирается список изоляции, для которой будут расставлены значки:
- если вы выделили саму изоляцию труб — берётся выделенное (кроме элементов нулевой длины);
- если вы выделили трубы — берётся изоляция этих труб, но только та, что видна на активном виде (и тоже не нулевой длины).
- Открывается небольшое окно «УГО ИЗОЛЯЦИИ» с полем «Длина зубца» (по умолчанию 20 мм) — это размер одного «зубца» ёлочки. Нужно убедиться, что на активном виде видна нужная изоляция, и нажать «Выполнить» (или закрыть окно — тогда операция отменяется).
- После подтверждения:
- Сначала на активном виде удаляются ранее расставленные УГО, которые относятся к этим же изоляциям (плагин находит их по служебному значению в параметре «…Примечание», куда при расстановке пишется Id изоляции) — повторный запуск на тех же трубах не плодит дубликаты значков, а переставляет их заново.
- Для вертикальных участков изоляции: если длина трубы меньше 4 длин зубца — участок пропускается (слишком короткий для читаемой ёлочки). Иначе в начале/конце трубы (в зависимости от направления) создаётся вертикальный экземпляр УГО, ему задаются: длина (по длине трубы), «…Имя системы» (копируется с изоляции), «…Примечание» (Id изоляции, для последующей очистки) и вертикальное смещение по нижней отметке трубы.
- Для горизонтальных участков: та же проверка на минимальную длину, экземпляр УГО создаётся вдоль линии трубы на уровне трубы, смещение — по верхней отметке трубы, плюс те же «…Имя системы» и «…Примечание».