Integration von KI-Agenten mit der Renga API zur Automatisierung von BIM-Prozessen
Die Renga API nutzt eine COM-Architektur, die es KI-Agenten ermöglicht, die Anwendung extern zu steuern, ohne Plugins kompilieren zu müssen. Im Gegensatz zur Revit API, die Code in eine AppDomain lädt, unterstützt Renga externe Aufrufe über die ProgID "Renga.Application.1". Dies vereinfacht die Integration mit Python-Skripten und Agenten und bietet Zugriff auf Modelle, Objekte und Geometrie.
Die py_renga-Bibliothek stellt Kernmodule für COM-Interaktion und Fähigkeiten für Agenten bereit. Ihre Struktur umfasst lokale Dokumentation aus RengaCOMAPI.tlb, Objektreflexion und vorgefertigte Funktionen zum Öffnen von Projekten und Erstellen von Elementen.
Vergleich von Renga API und Revit API
| Aspekt | Renga API | Revit API |
|--------|-----------|-----------|
| Kerntechnologie | COM (externe Schnittstelle) | .NET (AppDomain) |
| Bereitstellung | DLL oder Python-Skripte | Nur DLL |
| Sprachen | C++, C#, Python | C#, Python (über Wrapper) |
Der COM-Ansatz von Renga ermöglicht das Starten der Anwendung und ihre Verwaltung als externen Prozess. Python wird nativ über die Typbibliothek unterstützt, ohne zusätzliche Tools. Das SDK v2.46 enthält C++-Header, .NET-Assemblys, Beispiele in drei Sprachen und eine tlb-Datei für Interop.
Für KI-Agenten sind Schlüsselszenarien externe Automatisierung über ROT und Schnittstellenreflexion. Der Agent analysiert Objektdumps, gleicht sie mit der Dokumentation ab und generiert Skripte.
Verbindung zu Renga über Python
Minimaler Code zum Starten und Arbeiten mit einem Modell:
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))
Dieses Skript erstellt ein Projekt, extrahiert eine Sammlung von Objekten und deren Eigenschaften. Für Agenten ist dump_object(com_object: Any) -> Dict[str, Any] implementiert, das Schnittstellen, Eigenschaften und Methoden mit Typen und Werten zurückgibt.
Arbeitsablauf-Pipeline für KI-Agenten
Der Agent folgt einem Zyklus:
- Ruft einen Fähigkeitenkatalog über
get_skills_catalog()ab. - Wendet eine vorgefertigte Fähigkeit an oder erstellt einen Objektdump.
- Analysiert den Dump und sucht nach Schnittstellen in RengaAPI_Docs.
- Generiert und testet ein Skript.
- Korrigiert Fehler iterativ bis zum Erfolg.
Implementierte Fähigkeiten umfassen:
- Verbinden/Trennen der Anwendung;
- Öffnen/Speichern von Projekten;
- Lesen/Schreiben von Objektparametern;
- Erstellen/Löschen von Elementen;
- Dumping von Geometrie und Reflexion.
Beispiele: Der Agent generiert Wände aus Text, berechnet Volumen/Flächen und erstellt parametrische Objekte.
RengaSTDL: Codebasierte Familien-Generierung
RengaSTDL ist ein SDK, das Lua + JSON für parametrische Vorlagen (.rst) verwendet. Der Agent generiert ein Lua-Skript mit Geometrie, eine JSON-Spezifikation und kompiliert es über RstBuilder.exe.
Prozess:
- Eingabe von Anforderungen (Abmessungen, Parameter).
- KI schreibt Lua-Code und JSON.
- Kompilierung in .rst.
- Import in Renga.
Beispiel: Ein Stuhl mit parametrisierter Höhe/Breite, generiert aus einer Beschreibung. Lua ermöglicht berechnete Geometrie ohne grafischen Editor und senkt die Hürde für Prototypen.
Dokumentation und Beispiele in RengaSTDL_Docs/ sind in die Bibliothek für Reflexion integriert.
Wichtige Erkenntnisse
- COM-Schnittstellen ermöglichen externe Steuerung ohne Kompilierung, ideal für KI-Agenten.
- Python-Fähigkeiten mit Dumping und Reflexion beschleunigen das API-Lernen.
- STDL mit Lua ermöglicht die Generierung von Familien aus Anforderungen ohne manuelle Codierung.
- Agenten-Pipeline: Analyse → Generierung → Test → Iteration reduziert die Plugin-Entwicklungszeit.
- Open-Source-py_renga-Repository mit AGENTS.md für den schnellen Einstieg.
— Editorial Team
Noch keine Kommentare.