Integración de Agentes de IA con la API de Renga para Automatización de Procesos BIM
La API de Renga utiliza una arquitectura COM, lo que permite a los agentes de IA controlar la aplicación externamente sin necesidad de compilar complementos. A diferencia de la API de Revit, que carga código en un AppDomain, Renga admite llamadas externas a través del ProgID "Renga.Application.1". Esto simplifica la integración con scripts de Python y agentes, proporcionando acceso a modelos, objetos y geometría.
La biblioteca py_renga proporciona módulos principales para la interacción COM y habilidades para agentes. Su estructura incluye documentación local de RengaCOMAPI.tlb, reflexión de objetos y funciones listas para usar para abrir proyectos y crear elementos.
Comparación entre la API de Renga y la API de Revit
| Aspecto | API de Renga | API de Revit |
|--------|-----------|-----------|
| Tecnología Principal | COM (interfaz externa) | .NET (AppDomain) |
| Implementación | DLL o scripts de Python | Solo DLL |
| Lenguajes | C++, C#, Python | C#, Python (a través de envoltorios) |
El enfoque COM de Renga permite lanzar la aplicación y gestionarla como un proceso externo. Python es compatible de forma nativa a través de la biblioteca de tipos, sin herramientas adicionales. El SDK v2.46 incluye encabezados de C++, ensamblados .NET, ejemplos en tres lenguajes y un archivo tlb para interoperabilidad.
Para agentes de IA, los escenarios clave implican automatización externa a través de ROT y reflexión de interfaz. El agente analiza volcados de objetos, los compara con la documentación y genera scripts.
Conexión a Renga mediante Python
Código mínimo para lanzar y trabajar con un modelo:
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 falló con código {result}")
project = app.Project
model = project.Model
objects = model.GetObjects()
print(f"Número de objetos: {objects.Count}")
for index in range(objects.Count):
obj = objects.GetByIndex(index)
print(getattr(obj, "Name", None))
Este script crea un proyecto, extrae una colección de objetos y sus propiedades. Para agentes, se implementa dump_object(com_object: Any) -> Dict[str, Any], que devuelve interfaces, propiedades, métodos con tipos y valores.
Flujo de Trabajo del Agente de IA
El agente sigue un ciclo:
- Recupera un catálogo de habilidades mediante
get_skills_catalog(). - Aplica una habilidad predefinida o vuelca un objeto.
- Analiza el volcado, buscando interfaces en RengaAPI_Docs.
- Genera y prueba un script.
- Corrige errores iterativamente hasta el éxito.
Las habilidades implementadas incluyen:
- Conectar/desconectar la aplicación;
- Abrir/guardar proyectos;
- Leer/escribir parámetros de objetos;
- Crear/eliminar elementos;
- Volcar geometría y reflexión.
Ejemplos: el agente genera muros a partir de texto, calcula volúmenes/áreas y crea objetos paramétricos.
RengaSTDL: Generación de Familias Basada en Código
RengaSTDL es un SDK que utiliza Lua + JSON para plantillas paramétricas (.rst). El agente genera un script Lua con geometría, una especificación JSON y lo compila a través de RstBuilder.exe.
Proceso:
- Solicitud con requisitos (dimensiones, parámetros).
- La IA escribe código Lua y JSON.
- Compilación en .rst.
- Importación en Renga.
Ejemplo: una silla con altura/ancho parametrizados, generada a partir de una descripción. Lua permite geometría calculada sin un editor gráfico, reduciendo la barrera para prototipos.
La documentación y ejemplos en RengaSTDL_Docs/ están integrados en la biblioteca para reflexión.
Conclusiones Clave
- Las interfaces COM permiten control externo sin compilación, ideal para agentes de IA.
- Las habilidades de Python con volcado y reflexión aceleran el aprendizaje de la API.
- STDL con Lua permite generar familias a partir de requisitos sin codificación manual.
- Flujo del agente: análisis → generación → prueba → iteración reduce el tiempo de desarrollo de complementos.
- Repositorio de código abierto py_renga con AGENTS.md para inicio rápido.
— Editorial Team
Aún no hay comentarios.