NR Logo
RG2BIM // BY @0RinRU
// Renga / SMP / Script / C#

Scripts для SMP C#

Набор C# скриптов, выполняющихся на базе ScriptManagerPlugin (SMP). Автоматизируют рутинные операции в Renga.
Функционал плагинов может быть реализован через серверную часть.

Scripts for SMP
// Renga / SMP / Script / C#

Основная панель

Скрипт 1.1. Присвоить Element ID

Извлекает системные Renga ID объектов и записывает их в виде текста в пользовательское свойство для последующего экспорта.

Детали: Скрипт перебирает ВСЕ объекты в модели и принудительно записывает их идентификатор Renga в свойство с именем "Element ID".
❗ Не путайте Renga ID с Уникальным идентификатором

Скрипт 1.2. Присвоить IfcGUID

Извлекает или генерирует IfcGUID каждого элемента Renga и записывает его в отдельное свойство.

Детали: Значение записывается в свойство с точным именем "IfcGUID".

Скрипт 1.3. Автонумерация

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

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

Скрипт 1.4. Именование осей

Гибкое автоматическое переименование и сортировка координационных осей в соответствии с требованиями ГОСТ.

Детали: Скрипт работает с осями на 3D Виде (в самой модели). Скрипт в фоновом режиме выгружает оси во временный IFC-файл в системную папку Temp для точного получения их геометрических координат (точек X, Y). Это позволяет математическому алгоритму безошибочно отличать горизонтальные оси от вертикальных (по дельте длины), а также сортировать их строго по порядку: слева-направо (для вертикальных) и снизу-вверх (для горизонтальных) независимо от порядка их создания или выделения. Новые имена записываются в системный параметр «Обозначение оси». Временный IFC-файл удаляется автоматически.
Из алфавита строго исключаются недопустимые ГОСТом буквы (Ё, З, Й, О, Ч, Ъ, Ы, Ь).

Скрипт 1.5. Площадь квартир

Автоматический расчет фактической площади квартир с учетом понижающих коэффициентов помещений (лоджии, балконы, террасы).

Детали: Скрипт собирает все помещения модели и группирует их по номерам квартир (со встроенной защитой от слияния одинаковых номеров на разных этажах). На основе свойства «Тип помещения» скрипт по встроенному словарю (сохраняемому в файле ratio.json) определяет категорию (Жилое, Летнее, Прочее) и применяет соответствующий коэффициент (например, 0.5 для лоджии, 0.3 для балкона).
• Для каждого помещения должны быть предусмотрены следующие свойства:
• RNP_Коэффициент площади [Тип: Действенное число]
• RNP_Площадь с коэффициентом [Тип: Действенное число]
• RNP_Площадь квартиры общая [Тип: Действенное число] (общая площадь с учетом понижающих коэффициентов летних помещений)
• RNP_Площадь квартиры жилая [Тип: Действенное число] (сумма только «Жилых комнат», спален и т.д.)
• RNP_Площадь квартиры с лоджией и балконом без коэфф. [Тип: Действенное число] (полная геометрическая сумма без коэффициентов)
• RNP_Площадь квартиры [Тип: Действенное число] (основная площадь без учета летних помещений)
• RNP_Число комнат [Тип: Целое]
• RNP_Индекс помещения [Тип: Строка] (заполняется автоматически в формате отметка уровня_номер квартиры_номер комнаты)
• RNP_Тип помещения [Тип: Целое]
• RNP_ Номер квартиры [Тип: Целое]
❗ Если данные свойства отсутствуют скрипт выдаст предупреждение.

Скрипт 1.6. Принадлежность к помещению

Анализ геометрии (BBox) для вычисления, в каком помещении физически находится элемент (дверь, окно, мебель и т.д.).

Детали: Скрипт в фоновом режиме выгружает 3D-габариты (Bounding Box) элементов и точные 2D-полигоны помещений. Для определения принадлежности доступно 4 математических алгоритма на выбор:
• Exact 2D (Точный 2D-контур) — самый точный и рекомендуемый по умолчанию метод. Скрипт строит точный многоугольник помещения по его реальным вершинам (с учетом всех ниш и изгибов стен) и проверяет пересечение алгоритмом Ray-casting (испускания лучей). Учитывается также координата Z (помещение должно перекрывать объект по высоте).
• Full (Полностью внутри) — жесткое правило: габаритный 3D-контейнер элемента должен на 100% находиться внутри габаритов помещения.
• Center (Центр внутри) — достаточно, чтобы центральная точка объекта попадала в помещение. Отлично подходит для окон и дверей, которые установлены на границе в наружных стенах.
• Intersect (Частичное касание) — фиксирует принадлежность при любом физическом пересечении габаритов, даже если элемент сильно выступает за пределы комнаты.

Скрипт 1.7. Экспорт в PDF

Пакетный экспорт листов чертежей в формат PDF.

Детали: Скрипт создает рядом с файлом проекта *.rnp новую папку с именем самого проекта [Имя проекта]. Каждый раздел чертежей экспортируется в эту папку в виде отдельного PDF-файла с именем формата [Имя проекта]_[Имя раздела].pdf.
Проект обязательно должен быть сохранен.

Скрипт 1.8. Ведомости чертежей

Автоматизирует сбор информации о чертежах проекта и формирует текстовую ведомость.

Детали: Скрипт работает только с сохраненными проектами. Он создает папку с именем вашего проекта (в той же директории, где лежит файл *.rnp и внутри нее формирует текстовый файл [Имя проекта].txt.
В файл записывается шифр проекта, наименование, стадия и полный перечень основных комплектов чертежей.

Скрипт 1.9. Замена шрифта текста

Массовая замена настроек шрифта (семейство, размер, стиль) у элемента Текст на выбранных чертежах (листах).

Детали: Скрипт работает только с элементом Текст на чертеже. Он перебирает выделенные пользователем листы, находит все тексты и заменяет им параметры. *Примечание: шрифты внутри Спецификаций, Таблиц, Рамок (штампов) и Меток не заменяются.

Скрипт 1.10. Свойства окон и дверей

Скрипт для детализированного анализа заполнений проемов. Извлекает параметры геометрии, форму (например, «Прямоугольный проём», «Арочный проём») и выводит эту информацию.

Детали: Вся вычисленная информация выводится в специальное текстовое Окно Консоли.
Скрипт не перезаписывает свойства модели самостоятельно, а служит мощным инструментом диагностики параметров окон и дверей.

Скрипт 1.11. Вывод стилей элементов

Выгружает в текстовый файл полный список всех стилей, профилей и материалов, используемых в проекте (стили окон, труб, систем, арматуры и т.д.).

Детали: Файл будет сохранен в ту же папку, где лежит файл проекта *.rnp, под именем [Имя проекта]_Стили.txt.

Скрипт 1.12. Подсчет объектов

Информационный скрипт, считающий точное количество элементов выбранной категории в модели или выборке.

Детали: Результат работы скрипта выводится в окно консоли.

Скрипт 1.13. Показать ID файла

Вывод уникальных идентификаторов текущего файла проекта и сессии.

Детали: ID проект – это уникальный идентификатор проекта.
ID сессии – это уникальным идентификатором рабочей сессии, используется для работы с Renga Collaboration Server и задает имя для в файлах Журнала действия проекта.

Скрипт 1.14. Выделение по IfcGUID

Быстрый поиск и подсветка элементов модели по их глобальному уникальному идентификатору (IfcGUID).

Детали: Скрипт позволяет найти в модели элемент по IfcGUID и произвести с ним следующие действия:
• Выделить элемент на 3D Виде.
• Скрыть элемент на 3D Виде.
• Изолировать элемент на 3D Виде.
❗ Не путайте IfcGUID, который имеется в IFC файлах модели с Renga ID и Уникальным идентификатором.

Скрипт 1.15. Выделение по RengaID

Поиск и выделение элементов по внутреннему системному идентификатору Renga (целое число).

Детали: Скрипт позволяет найти в модели элемент по Renga ID и произвести с ним следующие действия:
• Выделить элемент на 3D Виде.
• Скрыть элемент на 3D Виде.
• Изолировать элемент на 3D Виде.
❗ Не путайте Renga ID с IfcGUID и Уникальным идентификатором.

Скрипт 1.16. Управление уровнями

Управление уровнями проекта (скрыть, показать, изолировать, выбрать, закрепить).

Детали: Скрипт собирает все уровни модели в удобную таблицу. Позволяет массово или единично закреплять уровни от случайных изменений. Кнопки управления видимостью работают напрямую с активным 3D видом, скрывая или показывая физические объекты. Окно не блокирует работы программы Renga.
❗ Редактирование отметки уровня заблокировано.

Скрипт 1.17. Закреплённые 3D элементы

Скрипт для удобного поиска и массового открепления зафиксированных объектов в 3D Виде.

Детали: Скрипт сканирует модель Renga и собирает все элементы со статусом Pinned. Данные выводятся в адаптивную таблицу с указанием ID, имени, категории на русском языке и уникального GUID.

Скрипт 1.18. Диспетчер пользовательских свойств

Комплексное управление пользовательскими свойствами проекта. Позволяет создавать новые свойства, массово назначать свойства различным категориям объектов, управлять галочкой экспорта в CSV, задавать формулы (выражения), а также сохранять и загружать все настройки через внешний файл CSV.

Детали: В левом столбце («Свойства») отображаются все зарегистрированные в проекте свойства и их тип данных. Под списком расположены три кнопки:
• «Создать...» — добавить новое свойство нужного типа.
• «Переименовать» — изменить название уже существующего свойства.
• «Удалить» — полностью удалить свойство из проекта (ВНИМАНИЕ: это стирает все данные этого свойства у всех объектов).
В правом столбце («Категории Renga») производится управление привязкой выбранного свойства к категориям.
❗ Информационная галочка «Формула» (только для чтения) показывает истинное состояние из программы Renga и управлять ей нельзя. При вводе любого текста в столбец «Выражение» данная галочка автоматически ставится, но если удалить введенный текст, галочка не пропадет, так как Renga API сохранит пустое значение и физически не снимет настройку.
Доступны функции «Экспорт в CSV» и «Импорт из CSV» для переноса всех свойств с учетом Выражений.

Скрипт 1.19. Удалить все свойства проекта

Глобальная очистка модели от абсолютно всех пользовательских свойств.

Детали: Функция полностью стирает все созданные ранее свойства, оставляя только встроенные системные параметры Renga.
❗ Действие необратимо.

Скрипт 1.20. Групповое заполнение свойств

Массовое назначение одинаковых значений пользовательских свойств у объектов в проекте.

Детали: Скрипт собирает абсолютно все объекты проекта и классифицирует их по системным категориям (Стена, Колонна, Окно, Дверь, Помещение, Труба и т.д.). Внутри каждой категории он дополнительно разделяет элементы по типам (стилям).

Скрипт 1.21. Проверка на дубликаты

Поиск и удаление случайно скопированных друг в друга объектов (стен, перекрытий, колонн, окон, проемов и линий), которые завышают объемы материалов в сметах.

Детали: Скрипт работает в два этапа. Для физических 3D-объектов строятся точные 3D-габариты в памяти. Для элементов без своей экспортируемой геометрии (например, Проемов) скрипт анализирует и сравнивает все их параметры.

Скрипт 1.22. Log-журналы Renga

Быстрый просмотр, фильтрация и анализ журналов совместной работы проекта Renga (изменения объектов), логов работы приложения (AecApp.log) и логов сетевого сервера совместной работы (RengaServer.log) прямо внутри интерфейса Renga.

Детали: Скрипт считывает файлы логов в безопасном разделяемом режиме (FileShare.ReadWrite), что позволяет парсить логи в реальном времени параллельно с работой Renga и сервера, не блокируя запись в них.
Скрипт автоматически определяет SessionId текущего открытого проекта и сразу подгружает соответствующий лог-файл.
Форма открывается в немодальном floating-режиме с поддержкой растягивания на весь экран и масштабирования DPI, не блокируя работу в самой программе Renga.
Доступна возможность выделять элементы согласно записям в журнале.

Скрипт 1.23. Удаление Log-файлов

Очистка временных лог-файлов сессий Renga (*.log) и файлов индивидуальных пользовательских настроек проектов (*.json) для освобождения дискового пространства от устаревших данных.

Детали: Скрипт работает с локальной папкой пользователя AppData\Local\Renga Software\Renga Professional (а также стандартной Renga). При сканировании скрипт пропускает и защищает от удаления лог-файл текущей активной сессии ([SessionID].log) и файл настроек открытого в данный момент проекта ([ProjectGUID].json).
❗ Удаление выполняется безвозвратно (в обход Корзины), а файлы, занятые или заблокированные другими процессами в данный момент, автоматически и безопасно пропускаются.

Скрипт 1.24. Видовой куб

Обеспечивает удобное и наглядное переключение между стандартными видами (изометрии, виды сбоку, сверху, снизу), а также управление визуальными стилями в 3D-виде программы Renga.

Детали:Интерфейс поддерживает 26 ракурсов. При этом таймер каждые 100 мс считывает текущую позицию камеры и точку фокусировки для отображения текущего положения на кубе.
❗ Если пользователь случайно нажмет на кнопку плагина несколько раз, старый куб будет закрыт и открыт новый.
В интерфейсе реализованы 3 градации цветовой подсветки:
• Зеленый цвет (Активный вид): Камера точно зафиксирована в одном из 26 стандартных ракурсов.
• Желтый цвет (Ближайший вид): Показывает ближайший к текущему положению камеры ракурс.
• Синий цвет (Наведение): Реакция на наведение курсора мыши для удобства выбора зоны.
Доступно меню по правому клику мыши для закрытия штурвала, или выбора вида по текстовому описанию, или изменения Визуального стиля.

Контекстное меню

Скрипт 2.1. Показать GUID

Отобразить Renga ID, Уникальный идентификатор и IfcGUID для выбранного элемента.

Детали: Скрипт работает только на 3D Виде и доступен только при выбранном элементе.
❗При выборе нескольких элементов отобразит данные самого первого элемента по Renga ID.

Контекстное меню

Скрипт 3.1. Сопряжение

Сопряжение через объединение или скругление двух объектов.

Детали: Скрипт работает с любыми линейными объектами Renga, имеющими 2D или 3D базовую линию (стены, балки, ограждения, 3D-линии, линии чертежа).
Новый (соединительный) объект полностью наследует свойства — привязку к уровню, стиль, все материалы и пользовательские/системные параметры — от того из двух выделенных объектов, который был создан в модели раньше (имеет меньший Renga ID).

Скрипт 3.2. Копирование свойств

Копировать свойства с выбранного элемента на другие той же категории.

Детали: Скрипт запускается с Панели действий при одном выбранном элементе-источнике.
Копирование применяется строго к элементам той же категории (например, свойства Стены скопируются только на другие Стены).
В скрипте реализована функция выбора режима переноса:
• Все данные.
• Только системные параметры.
• Только пользовательские свойства.