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 |
|--------|-----------|-----------|
| Podstawowa technologia | COM (interfejs zewnętrzny) | .NET (AppDomain) |
| Wdrożenie | DLL lub skrypty Python | Tylko DLL |
| 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.
Łą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
Brak komentarzy.