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).
❗ Удаление выполняется безвозвратно (в обход Корзины), а файлы, занятые или заблокированные другими процессами в данный момент, автоматически и безопасно пропускаются.

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

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

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

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

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

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

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

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

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

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

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