Powrót do strony głównej

Renga API i agenci AI dla BIM

Artykuł opisuje integrację agentów AI z Renga API za pomocą COM w celu automatyzacji zadań BIM. Omówiono porównanie z Revit, bibliotekę Python py_renga, pipeline agenta i generowanie rodzin STDL. Podano przykłady kodu i kluczowe zalety.

Agenci AI opanowują Renga API: COM i Python
Advertisement 728x90

Integracja agentów AI z API Renga do automatyzacji procesów BIM

API Renga wykorzystuje architekturę COM, co umożliwia agentom AI zarządzanie aplikacją z zewnątrz bez konieczności kompilowania wtyczek. W przeciwieństwie do API Revit, które ładuje kod w AppDomain, Renga obsługuje wywołania zewnętrzne poprzez ProgID "Renga.Application.1". Upraszcza to integrację ze skryptami Python i agentami, zapewniając dostęp do modeli, obiektów i geometrii.

Biblioteka py_renga dostarcza moduły core do interakcji COM oraz umiejętności (skills) dla agentów. Struktura obejmuje lokalną dokumentację RengaCOMAPI.tlb, refleksję obiektów oraz gotowe funkcje do otwierania projektów i tworzenia elementów.

Porównanie API Renga i API Revit

| Aspekt | API Renga | API Revit |

Google AdInline article slot

|--------|-----------|-----------|

| Podstawowa technologia | COM (interfejs zewnętrzny) | .NET (AppDomain) |

| Wdrożenie | DLL lub skrypty Python | Tylko DLL |

Google AdInline article slot

| Języki | C++, C#, Python | C#, Python (poprzez nakładki) |

Podejście COM w Renga pozwala uruchomić aplikację i zarządzać nią jako zewnętrznym procesem. Python jest obsługiwany natywnie poprzez bibliotekę typów, bez dodatkowych narzędzi. SDK w wersji 2.46 zawiera nagłówki C++, zestawy .NET, przykłady w trzech językach oraz plik tlb do interoperacyjności.

Dla agentów AI kluczowymi scenariuszami są zewnętrzna automatyzacja via ROT oraz refleksja interfejsów. Agent analizuje zrzuty obiektów, porównuje z dokumentacją i generuje skrypty.

Google AdInline article slot

Łączenie się z Renga poprzez Python

Minimalny kod do uruchomienia i pracy z modelem:

import comtypes.client

PROG_ID = "Renga.Application.1"
app = comtypes.client.CreateObject(PROG_ID)
app.Visible = True

result = app.CreateProject()
if result != 0:
    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))

Ten skrypt tworzy projekt, pobiera kolekcję obiektów i ich właściwości. Dla agentów zaimplementowano dump_object(com_object: Any) -> Dict[str, Any], który zwraca interfejsy, właściwości, metody z typami i wartościami.

Pipeline pracy agenta AI

Agent postępuje według cyklu:

  • Pobiera katalog umiejętności poprzez get_skills_catalog().
  • Stosuje gotową umiejętność lub tworzy zrzut obiektu.
  • Analizuje zrzut, wyszukuje interfejsy w RengaAPI_Docs.
  • Generuje i testuje skrypt.
  • Iteracyjnie poprawia błędy do osiągnięcia sukcesu.

Zaimplementowane umiejętności:

  • Podłączanie/odłączanie aplikacji;
  • Otwieranie/zapisywanie projektów;
  • Odczyt/zapis parametrów obiektów;
  • Tworzenie/usuwanie elementów;
  • Zrzut geometrii i refleksja.

Przykłady: agent generuje ściany na podstawie tekstu, oblicza objętości/powierzchnie, tworzy obiekty parametryczne.

RengaSTDL: generowanie rodzin kodem

RengaSTDL to SDK w Lua + JSON dla szablonów parametrycznych (.rst). Agent generuje skrypt Lua z geometrią, specyfikację JSON, kompiluje poprzez RstBuilder.exe.

Proces:

  • Prompt z wymaganiami (wymiary, parametry).
  • AI pisze kod Lua i JSON.
  • Kompilacja do .rst.
  • Import do Renga.

Przykład – krzesło z parametryzacją wysokości/szerokości, wygenerowane na podstawie opisu. Lua umożliwia obliczeniową geometrię bez edytora graficznego, obniżając próg dla prototypów.

Dokumentacja i przykłady w RengaSTDL_Docs/ są zintegrowane z biblioteką do refleksji.

Co jest ważne

  • Interfejsy COM zapewniają zewnętrzną kontrolę bez kompilacji, idealnie dla agentów AI.
  • Umiejętności Python z zrzutami i refleksją przyspieszają naukę API.
  • STDL w Lua pozwala generować rodziny na podstawie wymagań bez ręcznego kodowania.
  • Pipeline agenta: analiza → generacja → test → iteracja skraca czas na wtyczki.
  • Otwarte repozytorium py_renga z AGENTS.md dla szybkiego startu.

— Editorial Team

Advertisement 728x90

Czytaj dalej