
Щупаем внутренности Renga. В этой статье залезу под капот к отечественному ПО и разберу его API. Сравню с западным конкурентом и заставлю подружиться с ИИ.
В этой статье:
-
посмотрим на суть API – тут будет не пересказ примеров из SDK, а общий взгляд на технологию
-
сравним с Revit API
-
подключим ии-агента к ренге и заставим работать
Все материалы из этой статьи я выложил в репозиторий.
Почему это важно?
Разработка плагинов для BIM-систем (на примере Revit) традиционно требует:
-
глубокого знания API;
-
компиляции сборок;
-
использование отдельных костылей при отладке
Что если автоматизировать сам процесс разработки? ИИ-агент, который изучает API, пишет скрипты, тестирует их и исправляет ошибки – это рабочий пайплайн, который я реализовал для Renga.
В этой статье покажу, как архитектура Renga API делает такую интеграцию возможной, и как вы можете повторить этот опыт.
Renga API: краткий обзор и сравнение Revit API
Renga – это наш ответ Revit. Представляет из себя систему для автоматизации проектирования и разработки трехмерных строительных моделей.
Сложно рассматривать ренгу в отрыве от ее западного аналога. Поэтому периодически тут будут отсылки и сравнения.
Архитектура: почему COM – это преимущество
Renga API построен на COM – это фундаментальное решение влияет на всю архитектуру интеграции.
COM-интерфейс (Component Object Model Interface) – это стандартный способ описания взаимодействия между программными компонентами в операционных системах Windows (и не только), разработанный компанией Microsoft. COM-интерфейс позволяет одной программе вызывать функции другой, даже если они написаны на разных языках
Что с Revit API? Он работает иначе: плагины загружаются в AppDomain – изолированную доменную среду выполнения .NET внутри процесса Revit. Код плагина выполняется в том же процессе, что и само приложение, с ограниченным доступом извне.
Почему COM – это плюс для ИИ?
-
Агент может управлять Renga как внешним процессом: запускать, закрывать, отправлять команды.
-
Не нужно встраиваться в процесс приложения — достаточно знать COM-интерфейсы.
-
Полный доступ к модели через внешние вызовы.
Немного посмотрим на SKD
SDK (Software Development Kit) — это набор инструментов для разработки программного обеспечения под конкретную платформу, устройство или сервис.
Структура SDK (актуально для Renga API v2.46):
RengaSDK/
├── C++/Include/Renga/ # Заголовочные файлы для C++ плагинов
├── Net/ # .NET сборки для C# плагинов
├── Samples/
│ ├── C++/ # Примеры на C++ (18 проектов)
│ ├── C#/ # Примеры на C# (22 проекта)
│ └── Python/ # Python скрипты (2 примера)
├── tlb/RengaCOMAPI.tlb # COM type library
└── Docs/ # HTML документация
Главный файл – RengaCOMAPI.tlb. Это типизированная библиотека COM-интерфейсов, которая генерирует interop-сборки для удобной работы из .NET.
Даже при создании плагина на C# вы взаимодействуете с COM-объектами через .NET-обёртку (interop-слой), а не с нативным .NET API, как в Revit.
Какие языки поддерживаются?
-
C++ – для нативных COM-плагинов;
-
C#/.NET – для .NET-плагинов через interop-слой ;
-
Python – для внешних скриптов автоматизации через COM.
Это важное отличие от Revit: Python в Renga – штатный документированный сценарий, а не сторонняя оболочка над .NET API.
Два сценария работы с API
-
Внутрипроцессный плагин – DLL (C++ или .NET) загружается в процесс Renga через XML-дескриптор
.rndesc. -
Внешняя автоматизация – отдельный процесс управляет Renga через COM Local Server или ROT (Running Object Table).
Для ИИ-агентов второй сценарий предпочтительнее: агент работает как отдельный процесс и не требует компиляции.
Короткая таблица сравнения Renga и Revit API
|
Аспект |
Renga API |
Revit API |
|---|---|---|
|
Базовая технология |
COM – внешний интерфейс |
.NET (RevitAPI.dll, RevitAPIUI.dll). Плагин загружается в appdomain |
|
Развертывание |
– сборка DLL- внешний скрипт на python |
только сборка dll |
|
Языки |
С++ |
только C# |
Ключевые возможности для ИИ
Взаимодействие через COM
COM-природа Renga API делает его доступным для ИИ-агентов:
-
Глубокая интеграция – агент может открывать/закрывать программу, управлять проектами
-
Полный доступ к модели – через внешние команды без необходимости встраивания в процесс
Библиотека renga_ai: Python-скиллы для агента
В этой статье раскрою именно внешнюю автоматизацию с помощью python.
Для интеграции ИИ-агентов с Ренгой я начал создавать библиотеку инструкций и python скриптов. Python скрипты становятся скиллами, которые может применить ИИ-агент.
Вот структура проекта
py_renga/
├── AGENTS.md # правила для агентов
├── AGENT_EXAMPLE.md # минимальный пример прямого использования `renga_api`
├── README.md
├── TODO.md # единый журнал задач, статусов и важных итогов
├── pyproject.toml
├── tlb/RengaCOMAPI.tlb # библиотека из SDK для рефлексии и генерации типов
├── tests/ # тесты
├── RengaAPI_Docs/ # локальная документация по Renga COM API
├── RengaSTDL_Docs/ # локальная документация по Renga STDL и материалы SDK
└── renga_api/ # основной Python-пакет проекта
├── core/ # COM-core, не зависящие от агентного сценария
└── skills/ # agent-facing wrappers поверх core-функций
Реализовано следующее:
-
подключение к приложению;
-
открытие и сохранение проекта;
-
доступ к модели и объектам;
-
создание и удаление объектов;
-
чтение параметров и свойств;
-
dump объектов и геометрии;
-
reflection по
RengaCOMAPI.tlb.
Минимальный пример: как начать работать с Renga
import comtypes.client # Импортируем клиент COM для создания и вызова объектов Renga.
PROG_ID = "Renga.Application.1" # Указываем COM ProgID приложения Renga.
app = comtypes.client.CreateObject(PROG_ID) # Запускаем новый экземпляр Renga.
app.Visible = True # Делаем окно Renga видимым.
result = app.CreateProject() # Просим Renga создать новый пустой проект.
if result != 0: # Проверяем код возврата COM-метода.
raise RuntimeError(f"CreateProject failed with code {result}") # Падаем, если проект не создался.
project = app.Project # Берём текущий открытый проект из приложения.
model = project.Model # Получаем модель проекта.
objects = model.GetObjects() # Получаем коллекцию объектов модели.
print(f"Objects count: {objects.Count}") # Печатаем количество объектов в модели.
for index in range(objects.Count):
obj = objects.GetByIndex(index) # Получаем очередной объект модели.
print(getattr(obj, "Name", None)) # Получаем имя элемента
Для наглядности – простая схема взаимодействия ИИ с Renga
Ключевой скилл и общий pipeline работы
Для добавления нового функционала реализован reflection-driven подход при котором агент получает все данные об элементе, изучает документацию и сам пытается создавать скрипты.
Основной скилл – dump_object(com_object: Any) -> Dict[str, Any]
Дамп нужен, чтобы:
-
увидеть, какие интерфейсы реально поддерживает конкретный COM-объект;
-
не гадать по названиям интерфейсов и свойств;
-
получить реальные параметры, свойства и их значения;
-
понять, какие методы безопасно вызываются на чтение;
-
увидеть geometry-related интерфейсы;
-
сопоставить живой объект из модели с тем, что описано в
RengaAPI_Docs/.
Вот порядок действий, которые выполняет агент при работе с библиотекой.
-
Получает список готовых скиллов через
get_skills_catalog() -
Находит подходящий скилл при применяет его. Если не находит, продолжает далее по списку.
-
Выполняет
dump_object(...)илиdump_selected_object()для элемента -
Анализирует полученный дамп.
-
Находит интересующие интерфейсы и члены в
RengaAPI_DocsиRengaCOMAPI.tlb. -
Создает новый скрипт и запускает его.
-
Далее по кругу до достижения результата.
Пара примеров
Посмотрим, как агент пишет слова с помощью стен. Работает бесплатный qwen code.
Более практичный пример – подсчет объема и площади стен

Вывод
Такой агент отлично подходит для изучения Renga API и написания плагинов. Он сам пишет логику, сам открывает модель и запускает скрипт ловит ошибки и вносит изменения.
Также есть потенциал для использования такого агента как ассистента при ежедневной работе в программе.
RengaSTDL API – делаем семейства с помощью ИИ
В Renga нет редактора для создания параметрических семейств как в Revit. Разработчики предлагают создавать “семейства “или “шаблоны стилей” с помощью кода на Lua и спецификаций json.
Раньше люди насмехались и негодовали – мало кто готов учить язык программирования, чтобы создать светильник или насос. Был слишком большой порог входа.
Но с искусственным интеллектом на это можно взглянуть по новому.
Что такое STDL
RengaSTDL – отдельный SDK для создания параметрических шаблонов стилей. Основан на Lua + JSON.
Назначение STDL – создавать параметрические объекты с вычисляемой геометрией
Агент для генерации семейств
В моей библиотеке предусмотрена основа для изучения и создания семейств с помощью ИИ.
Я поместил документацию, примеры и вспомогательные файлы в RengaSTDL_Docs/
Идея проста – агент генерирует нам код на lua, где описывает геометрию, создает рядом json и запускает специальный скрипт RstBuilder.exe из sdk.
На выходе получаем файл .rst, который грузим в Ренгу и наслаждаемся.
Вот такой стул был сгенерирован по простому промпту. Агент даже добавил параметризацию.
Как всем этим пользоваться?
Просто скачайте репозиторий renga_ai и дайте прочитать своему агенту README.md и AGENTS.md. После этого он будет готов к боевым задачам.
В качестве агента можно попробовать qwen code – сейчас он бесплатный и доступен без ограничений. Дневных лимитов должно хватать, если работать умеренно.
Заключение
Тут опишу только явные преимущества и плюсы Renga API и STDL:
-
Гибкость Renga API – COM-интерфейс позволяет управлять приложением из любого процесса.
-
Штатная поддержка Python – не нужно «костылей» для скриптов.
-
ИИ-агент как разработчик – сам изучает API, пишет код, тестирует, исправляет.
-
Lua для семейств – неожиданно мощный инструмент в руках ИИ.
Потенциал:
-
Автоматизация рутинных задач в BIM;
-
Быстрое прототипирование плагинов;
-
Обучение новых разработчиков через ИИ-ассистента;
-
Генерация библиотек компонентов по ТЗ.
Renga дает приятный опыт взаимодействия с API. Надеюсь, это направление будет развиваться и мы сможем получить иной подход к взаимодействию с CAD софтом.
Моя библиотека renga_ai – позволяет удобно связать ИИ-агента и дает полезные инструменты для работы и изучения
Материалы и ссылки
-
Renga SDK – набор разработчика Renga API
-
Renga STDL SDK – комплект разработчика шаблона стилей (семейств)
Автор: i-savelev


