- BrainTools - https://www.braintools.ru -

Renga API: автоматизируем автоматизацию с помощью ИИ-агентов

Renga API: автоматизируем автоматизацию с помощью ИИ-агентов - 1

Щупаем внутренности Renga. В этой статье залезу под капот к отечественному ПО и разберу его API. Сравню с западным конкурентом и заставлю подружиться с ИИ.

В этой статье:

  • посмотрим на суть API – тут будет не пересказ примеров из SDK, а общий взгляд на технологию

  • сравним с Revit API

  • подключим ии-агента к ренге и заставим работать

Все материалы из этой статьи я выложил в репозиторий [1].

Почему это важно?

Разработка плагинов для BIM-систем (на примере Revit) традиционно требует:

  • глубокого знания API;

  • компиляции сборок;

  • использование отдельных костылей при отладке

Что если автоматизировать сам процесс разработки? ИИ-агент, который изучает API, пишет скрипты, тестирует их и исправляет ошибки [2] – это рабочий пайплайн, который я реализовал для Renga.

В этой статье покажу, как архитектура Renga API делает такую интеграцию возможной, и как вы можете повторить этот опыт [3].

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

  1. Внутрипроцессный плагин – DLL (C++ или .NET) загружается в процесс Renga через XML-дескриптор .rndesc.

  2. Внешняя автоматизация – отдельный процесс управляет 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#python

только C#
python – через костыли

Ключевые возможности для ИИ

Взаимодействие через COM

COM-природа Renga API делает его доступным для ИИ-агентов:

  1. Глубокая интеграция – агент может открывать/закрывать программу, управлять проектами

  2. Полный доступ к модели – через внешние команды без необходимости встраивания в процесс

Библиотека renga_ai: Python-скиллы для агента

В этой статье раскрою именно внешнюю автоматизацию с помощью python.

Для интеграции ИИ-агентов с Ренгой я начал создавать библиотеку [1] инструкций и 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

простая схема взаимодействия ИИ с Renga

простая схема взаимодействия ИИ с Renga

Ключевой скилл и общий pipeline работы

Для добавления нового функционала реализован reflection-driven подход при котором агент получает все данные об элементе, изучает документацию и сам пытается создавать скрипты.

Основной скилл – dump_object(com_object: Any) -> Dict[str, Any]

Дамп нужен, чтобы:

  • увидеть, какие интерфейсы реально поддерживает конкретный COM-объект;

  • не гадать по названиям интерфейсов и свойств;

  • получить реальные параметры, свойства и их значения;

  • понять, какие методы безопасно вызываются на чтение;

  • увидеть geometry-related интерфейсы;

  • сопоставить живой объект из модели с тем, что описано в RengaAPI_Docs/.

Вот порядок действий, которые выполняет агент при работе с библиотекой.

  1. Получает список готовых скиллов через get_skills_catalog()

  2. Находит подходящий скилл при применяет его. Если не находит, продолжает далее по списку.

  3. Выполняет dump_object(...) или dump_selected_object() для элемента

  4. Анализирует полученный дамп.

  5. Находит интересующие интерфейсы и члены в RengaAPI_Docs и RengaCOMAPI.tlb.

  6. Создает новый скрипт и запускает его.

  7. Далее по кругу до достижения результата.

общая схема работы агентов с Renga

общая схема работы агентов с Renga

Пара примеров

Посмотрим, как агент пишет слова с помощью стен. Работает бесплатный qwen code.

демонстрационный пример - qwen пишет слова в Renga

демонстрационный пример – qwen пишет слова в Renga

Более практичный пример – подсчет объема и площади стен

../_files/Pasted image 20260404133638.png

Вывод

Такой агент отлично подходит для изучения Renga API и написания плагинов. Он сам пишет логику [4], сам открывает модель и запускает скрипт ловит ошибки и вносит изменения.

Также есть потенциал для использования такого агента как ассистента при ежедневной работе в программе.

RengaSTDL API – делаем семейства с помощью ИИ

Разработка семейств Revit vs Renga

Разработка семейств Revit vs Renga

В Renga нет редактора для создания параметрических семейств как в Revit. Разработчики предлагают создавать “семейства “или “шаблоны стилей” с помощью кода на Lua и спецификаций json.

Раньше люди насмехались и негодовали – мало кто готов учить язык программирования, чтобы создать светильник или насос. Был слишком большой порог входа.

Но с искусственным интеллектом [5] на это можно взглянуть по новому.

Что такое STDL

RengaSTDL – отдельный SDK для создания параметрических шаблонов стилей. Основан на Lua + JSON.

Назначение STDL – создавать параметрические объекты с вычисляемой геометрией

Агент для генерации семейств

В моей библиотеке [1] предусмотрена основа для изучения и создания семейств с помощью ИИ.

Я поместил документацию, примеры и вспомогательные файлы в RengaSTDL_Docs/

Идея проста – агент генерирует нам код на lua, где описывает геометрию, создает рядом json и запускает специальный скрипт RstBuilder.exe из sdk.

На выходе получаем файл .rst, который грузим в Ренгу и наслаждаемся.

Вот такой стул был сгенерирован по простому промпту. Агент даже добавил параметризацию.

не обращаем внимание, что это санитарно-техническое оборудование. Тут я тестил геометрию

не обращаем внимание [6], что это санитарно-техническое оборудование. Тут я тестил геометрию

Как всем этим пользоваться?

Просто скачайте репозиторий renga_ai [1] и дайте прочитать своему агенту README.md и AGENTS.md. После этого он будет готов к боевым задачам.

В качестве агента можно попробовать qwen code – сейчас он бесплатный и доступен без ограничений. Дневных лимитов должно хватать, если работать умеренно.

Заключение

Тут опишу только явные преимущества и плюсы Renga API и STDL:

  • Гибкость Renga API – COM-интерфейс позволяет управлять приложением из любого процесса.

  • Штатная поддержка Python – не нужно «костылей» для скриптов.

  • ИИ-агент как разработчик – сам изучает API, пишет код, тестирует, исправляет.

  • Lua для семейств – неожиданно мощный инструмент в руках ИИ.

Потенциал:

  • Автоматизация рутинных задач в BIM;

  • Быстрое прототипирование плагинов;

  • Обучение [7] новых разработчиков через ИИ-ассистента;

  • Генерация библиотек компонентов по ТЗ.

Renga дает приятный опыт взаимодействия с API. Надеюсь, это направление будет развиваться и мы сможем получить иной подход к взаимодействию с CAD софтом.

Моя библиотека renga_ai [1] – позволяет удобно связать ИИ-агента и дает полезные инструменты для работы и изучения

Материалы и ссылки

Автор: i-savelev

Источник [11]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/28283

URLs in this post:

[1] репозиторий: https://github.com/i-savelev/renga_ai

[2] ошибки: http://www.braintools.ru/article/4192

[3] опыт: http://www.braintools.ru/article/6952

[4] логику: http://www.braintools.ru/article/7640

[5] интеллектом: http://www.braintools.ru/article/7605

[6] внимание: http://www.braintools.ru/article/7595

[7] Обучение: http://www.braintools.ru/article/5125

[8] Мой аккаунт на GitHub: https://github.com/i-savelev

[9] Renga SDK: https://rengabim.com/sdk/

[10] Renga STDL SDK: https://rengabim.com/stdlsdk/

[11] Источник: https://habr.com/ru/articles/1019272/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1019272

www.BrainTools.ru

Rambler's Top100