Renga API와 AI 에이전트 통합으로 BIM 프로세스 자동화하기
Renga API는 COM 아키텍처를 사용하여 AI 에이전트가 플러그인을 컴파일하지 않고도 외부에서 애플리케이션을 제어할 수 있도록 합니다. 코드를 AppDomain에 로드하는 Revit API와 달리, Renga는 ProgID "Renga.Application.1"을 통해 외부 호출을 지원합니다. 이는 Python 스크립트 및 에이전트와의 통합을 단순화하며, 모델, 객체 및 기하학에 대한 접근을 제공합니다.
py_renga 라이브러리는 COM 상호작용을 위한 핵심 모듈과 에이전트용 스킬을 제공합니다. 그 구조에는 RengaCOMAPI.tlb의 로컬 문서화, 객체 리플렉션, 프로젝트 열기 및 요소 생성용 준비된 함수가 포함됩니다.
Renga API와 Revit API 비교
| 측면 | Renga API | Revit API |
|--------|-----------|-----------|
| 핵심 기술 | COM (외부 인터페이스) | .NET (AppDomain) |
| 배포 | DLL 또는 Python 스크립트 | DLL만 가능 |
| 언어 | C++, C#, Python | C#, Python (래퍼를 통해) |
Renga의 COM 접근 방식은 애플리케이션을 실행하고 외부 프로세스로 관리할 수 있게 합니다. Python은 추가 도구 없이 타입 라이브러리를 통해 기본적으로 지원됩니다. SDK v2.46에는 C++ 헤더, .NET 어셈블리, 세 가지 언어의 예제, 및 상호 운용성을 위한 tlb 파일이 포함됩니다.
AI 에이전트의 경우, 주요 시나리오는 ROT 및 인터페이스 리플렉션을 통한 외부 자동화를 포함합니다. 에이전트는 객체 덤프를 분석하고, 문서화와 일치시키며, 스크립트를 생성합니다.
Python을 통해 Renga에 연결하기
모델을 실행하고 작업하기 위한 최소한의 코드:
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))
이 스크립트는 프로젝트를 생성하고, 객체 컬렉션과 그 속성을 추출합니다. 에이전트의 경우, dump_object(com_object: Any) -> Dict[str, Any]가 구현되어 인터페이스, 속성, 타입 및 값이 있는 메서드를 반환합니다.
AI 에이전트 워크플로우 파이프라인
에이전트는 다음 사이클을 따릅니다:
get_skills_catalog()를 통해 스킬 카탈로그를 검색합니다.- 준비된 스킬을 적용하거나 객체를 덤프합니다.
- 덤프를 분석하여 RengaAPI_Docs에서 인터페이스를 검색합니다.
- 스크립트를 생성하고 테스트합니다.
- 성공할 때까지 반복적으로 오류를 수정합니다.
구현된 스킬에는 다음이 포함됩니다:
- 애플리케이션 연결/해제;
- 프로젝트 열기/저장;
- 객체 매개변수 읽기/쓰기;
- 요소 생성/삭제;
- 기하학 및 리플렉션 덤프.
예시: 에이전트는 텍스트에서 벽을 생성하고, 부피/면적을 계산하며, 파라메트릭 객체를 생성합니다.
RengaSTDL: 코드 기반 패밀리 생성
RengaSTDL은 파라메트릭 템플릿(.rst)을 위한 Lua + JSON을 사용하는 SDK입니다. 에이전트는 기하학이 포함된 Lua 스크립트와 JSON 사양을 생성하고, RstBuilder.exe를 통해 컴파일합니다.
프로세스:
- 요구사항(치수, 매개변수)으로 프롬프트합니다.
- AI가 Lua 코드와 JSON을 작성합니다.
- .rst로 컴파일합니다.
- Renga로 가져옵니다.
예시: 높이/너비가 파라메트릭화된 의자로, 설명에서 생성됩니다. Lua는 그래픽 편집기 없이 계산된 기하학을 허용하여 프로토타입의 진입 장벽을 낮춥니다.
RengaSTDL_Docs/의 문서화 및 예제는 리플렉션을 위해 라이브러리에 통합됩니다.
핵심 요약
- COM 인터페이스는 컴파일 없이 외부 제어를 가능하게 하여 AI 에이전트에 이상적입니다.
- 덤핑과 리플렉션이 포함된 Python 스킬은 API 학습을 가속화합니다.
- Lua를 사용한 STDL은 수동 코딩 없이 요구사항에서 패밀리를 생성할 수 있게 합니다.
- 에이전트 파이프라인: 분석 → 생성 → 테스트 → 반복으로 플러그인 개발 시간을 단축합니다.
- 빠른 시작을 위한 AGENTS.md가 포함된 오픈소스 py_renga 저장소.
— Editorial Team
아직 댓글이 없습니다.