利用Renga API集成AI智能体实现BIM流程自动化
Renga API采用COM架构,允许AI智能体无需编译插件即可从外部控制应用程序。与Revit API将代码加载到AppDomain不同,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失败,错误代码 {result}")
project = app.Project
model = project.Model
objects = model.GetObjects()
print(f"对象数量: {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是一个使用Lua + JSON进行参数化模板(.rst)的SDK。智能体生成带有几何体的Lua脚本、JSON规范,并通过RstBuilder.exe编译。
流程:
- 输入需求(尺寸、参数)。
- AI编写Lua代码和JSON。
- 编译为.rst文件。
- 导入Renga。
示例:一把高度和宽度可参数化的椅子,根据描述生成。Lua允许无需图形编辑器计算几何体,降低了原型设计的门槛。
RengaSTDL_Docs/中的文档和示例已集成到库中以供反射使用。
关键要点
- COM接口无需编译即可实现外部控制,非常适合AI智能体。
- 带有转储和反射功能的Python技能加速了API学习。
- 使用Lua的STDL允许根据需求生成族,无需手动编码。
- 智能体管道:分析 → 生成 → 测试 → 迭代,减少了插件开发时间。
- 开源py_renga仓库,附AGENTS.md快速入门指南。
— Editorial Team
暂无评论。