Исследуем внутреннее устройство Renga — отечественного BIM-решения. Разбираем его API, сравниваем с Revit и показываем, как подключить ИИ-агента для автоматизации разработки.
- Обзор архитектуры Renga API и сравнение с Revit API.
- Преимущества COM-интерфейса для интеграции с ИИ.
- Работа с API через Python и внешние скрипты.
- Создание ИИ-агента, который изучает API, генерирует и тестирует код.
- Генерация параметрических семейств через Renga STDL и Lua.
Все материалы доступны в открытом репозитории.
Почему это важно?
Разработка плагинов для BIM-систем, таких как Revit, традиционно требует:
- глубокого знания API;
- компиляции сборок;
- сложной отладки.
Что если автоматизировать сам процесс разработки? ИИ-агент может изучать API, писать скрипты, тестировать их и исправлять ошибки. Такой рабочий пайплайн уже реализован для Renga.
В этой статье — как архитектура Renga API делает такую интеграцию возможной и как вы можете её повторить.
Renga API: обзор и сравнение с Revit API
Renga — это российская альтернатива Revit, предназначенная для автоматизации проектирования и создания 3D-моделей зданий.
Сравнение с Revit помогает понять ключевые отличия и преимущества.
Архитектура: почему COM — это преимущество
Renga API построен на COM (Component Object Model) — стандарте Microsoft для взаимодействия программных компонентов в Windows.
COM-интерфейс позволяет одной программе вызывать функции другой, даже если они написаны на разных языках.
Revit API работает иначе: плагины загружаются в изолированную среду .NET (AppDomain) внутри процесса Revit. Код выполняется в том же процессе, что и приложение, и имеет ограниченный доступ извне.
COM даёт важные преимущества для ИИ:
- ИИ-агент управляет Renga как внешним процессом: может запускать, закрывать, отправлять команды.
- Не нужно встраиваться в процесс — достаточно знать COM-интерфейсы.
- Полный доступ к модели через внешние вызовы.
SDK Renga API
SDK (Software Development Kit) — набор инструментов для разработки ПО под конкретную платформу.
Структура SDK (актуально для Renga API v2.46):
Главный файл — RengaCOMAPI.tlb. Это типизированная библиотека COM-интерфейсов, которая позволяет генерировать interop-сборки для .NET.
Даже при разработке на C# вы работаете с COM-объектами через .NET-обёртку, а не с нативным .NET API, как в Revit.
Поддерживаемые языки
- C++ — для нативных COM-плагинов;
- C#/.NET — через interop-слой;
- Python — для внешних скриптов через COM.
Это важное отличие от Revit: Python в Renga — штатный, документированный способ автоматизации, а не сторонняя оболочка.
Два сценария работы с API
- Внутрипроцессный плагин — DLL (C++ или .NET), загружаемая в процесс Renga через XML-дескриптор .rndesc.
- Внешняя автоматизация — отдельный процесс управляет Renga через COM Local Server или ROT.
Для ИИ-агентов предпочтителен второй сценарий: агент работает как независимый процесс и не требует компиляции.
Сравнение Renga и Revit API:
Базовая технология
Renga: COM — внешний интерфейс
Revit: .NET (RevitAPI.dll) — плагин встраивается в AppDomain
Развертывание
Renga: DLL или Python-скрипты
Revit: только DLL
Поддержка языков
Renga: C++, C#, Python (официально)
Revit: C#, Python (через неофициальные обходные пути)
Ключевые возможности для ИИ
Взаимодействие через COM
COM-природа Renga API делает его доступным для ИИ-агентов:
- Глубокая интеграция — агент может управлять запуском, проектами, сессиями.
- Полный доступ к модели — через внешние команды, без встраивания в процесс.
Библиотека renga_ai: Python-скиллы для агента
Фокус — на внешней автоматизации через Python. Создана библиотека инструкций и скриптов, где каждый скрипт — это «скилл» для ИИ-агента.
Реализовано:
- подключение к приложению;
- открытие и сохранение проекта;
- доступ к модели и объектам;
- создание и удаление объектов;
- чтение параметров и свойств;
- дамп объектов и геометрии;
- рефлексия по RengaCOMAPI.tlb.
Минимальный пример: начало работы с Renga
Простая схема взаимодействия ИИ с Renga:
Ключевой скилл и общий пайплайн
Используется reflection-driven подход: агент изучает API, анализирует объекты и генерирует код.
Основной скилл — dump_object(com_object: Any) -> Dict[str, Any].
Дамп нужен, чтобы:
- увидеть, какие интерфейсы поддерживает COM-объект;
- не гадать по названиям;
- получить реальные значения свойств;
- определить безопасные методы для чтения;
- найти геометрические интерфейсы;
- сопоставить объект с документацией из RengaAPI_Docs/.
Порядок работы агента:
- Получает список скиллов через get_skills_catalog().
- Ищет подходящий скилл. Если не находит — продолжает.
- Выполняет dump_object() или dump_selected_object().
- Анализирует дамп.
- Ищет нужные интерфейсы в документации и .tlb.
- Генерирует и запускает скрипт.
- Повторяет до достижения результата.
Примеры работы
Агент может, например, создавать текст из стен с помощью бесплатной модели Qwen Code.
Более практичный пример — подсчёт объёма и площади стен.
Такой агент подходит для изучения API, написания плагинов и тестирования. Он сам открывает модель, запускает скрипты, ловит ошибки и вносит правки.
Есть потенциал использовать его как ассистента в повседневной работе.
Renga STDL API: создание семейств через ИИ
В Renga нет графического редактора параметрических семейств, как в Revit. Вместо этого используются «шаблоны стилей», создаваемые через код на Lua и JSON.
Раньше это считалось слишком сложным. Но с ИИ подход меняется.
Что такое STDL?
Renga STDL — отдельный SDK для создания параметрических объектов. Основан на Lua + JSON.
Цель — создание объектов с вычисляемой геометрией.
Агент для генерации семейств
В библиотеке renga_ai реализована основа для работы с STDL.
Документация, примеры и вспомогательные файлы доступны в папке RengaSTDL_Docs/.
Идея проста: агент генерирует код на Lua, описывающий геометрию, создаёт JSON-файл и запускает RstBuilder.exe из SDK.
На выходе — файл .rst, который загружается в Renga.
Например, стул был сгенерирован по простому промпту. Агент добавил параметризацию.
Как начать использовать?
Скачайте репозиторий renga_ai и дайте ИИ-агенту прочитать README.md и AGENTS.md. После этого он готов к работе.
Можно использовать qwen code — бесплатную модель без ограничений. Дневных лимитов хватит при умеренном использовании.
Заключение
Преимущества Renga API и STDL:
- Гибкость API — COM позволяет управлять приложением из любого процесса.
- Официальная поддержка Python — без костылей.
- ИИ-агент как разработчик — сам изучает API, пишет и тестирует код.
- Lua для семейств — мощный инструмент в руках ИИ.
Потенциал применения:
- Автоматизация рутинных задач в BIM.
- Быстрое прототипирование плагинов.
- Обучение разработчиков через ИИ-ассистента.
- Генерация библиотек компонентов по ТЗ.
Renga предоставляет удобный опыт взаимодействия с API. Это направление может изменить подход к работе с CAD-системами.
Библиотека renga_ai упрощает интеграцию с ИИ и даёт полезные инструменты для изучения и автоматизации.