夜雨聆风学习资料网

ARTICLE · 1158669

AI 写 Revit 插件和二次开发代码,到底能到哪

AI 写 Revit 插件和二次开发代码,到底能到哪

AI 写 Revit 插件和二次开发代码,到底能到哪

AI 能不能写 Revit 插件?能,但得把"能到哪"说清楚。

这大半年我在这件事上花的时间最多——不是因为它最酷,是因为它离交付最近。今天单把这一块拎出来讲透:AI 在 Revit 二次开发里到底干什么、我们怎么用、边界又卡在哪。

AI-Revit

01 为什么是 Revit 二次开发先吃到 AI 红利

不是所有开发都适合交给 AI,Revit 二次开发合适:

  • 套路固定。核心就是 C# + Revit API,命令模式(IExternalCommand)、事务(Transaction)、过滤器(FilteredElementCollector)那一套,结构高度可预测。AI 最怕"每一行都要临场发挥",而这里大部分是填空题。
  • 样本多。官方文档、论坛帖子、开源插件样本量足够大,大模型训练语料充足,调用 API 的正确率比冷门框架高得多。
  • 可即时验证。代码编译过没过、命令跑不跑得起来,几秒钟就有反馈。这种"写→跑→报错→改"的短闭环,是 AI 提效的最佳土壤——它不怕试错,怕的是没有反馈。

这三点叠起来,让 Revit 二次开发成了 AI 辅助编程里性价比最高的一档。


02 AI 具体在干哪几件事

落到日常,AI 在我们这边主要承担四类活:

  • 搭命令骨架。给个需求,它能直接吐出 IExternalCommand 的模板、注册清单、特性标注,省掉每次从头抄样板的时间。
  • 补样板代码。过滤器怎么写、事务怎么包、参数怎么读怎么写,这些重复度高的片段它很拿手,而且不容易漏 try-catch。
  • 查 API 用法。哪个类在哪个命名空间、Revit 2020 和 2024 的接口差异、某个方法被哪个版本弃用——这类"记忆型"问题它比人翻文档快。
  • 改 bug 和生成最小复现。把报错信息和相关代码贴给它,它能定位大概率原因,有时候还能给出最小复现片段,方便你确认是不是真因。

注意,这四件事的共同特征是:它们都在"已知模式"范围内。AI 干的是模式内的活,不是凭空发明新架构。


03 我们的玩法升级:MCP 把 Revit 变成"可被驱动"的工具

如果只是让 AI 写代码、人去编译运行,那它还是个高级代码补全。我们走的更远一步,是用 MCP(模型上下文协议)把 Revit 本身接进来——AI 不再只是"写代码的人",而是能"调用 Revit 干活"的代理。

具体说:通过 MCP 暴露的工具,AI 可以驱动 Revit 去建族、改参数、跑批处理命令。你下个"把当前文档里所有 DN200 风管的长度汇总成表",它能拆成若干 Revit API 调用,直接执行,不用你再去手动点界面。

这是从"副驾写代码"到"准司机跑流程"的跨度。

我们进度:MCP 集成已经跑通测试,正在往生产路径接。 测试阶段验证过建族、参数读写、批量处理这几条主干路径,下一步是把它做成日常开发的默认工作流,而不是演示玩具。


04 知识底座:为什么我们自建了 RevitKBAgent

这里有个绕不开的坑:通用大模型对 Revit API 的版本差异、你团队内部的约定,经常"想当然"。它给你一段看起来对的代码,编译一跑才发现某个方法在你要的 Revit 版本里早已改名或弃用。

我们的解法不是换更强的通用模型,而是给它喂对的知识。自建了 RevitKBAgent——一个面向 Revit 开发领域的知识库:用 BAAI/bge-m3 做向量嵌入,配合混合检索(稠密向量 + BM25 关键词),把官方文档、内部踩坑、历史问答攒成可检索的底座;再通过 MCP 把检索能力暴露成工具,让 AI 在写代码前先查库。

线上知识库 ai.uebim.cn 和本机共用同一套配置,保证两边答案一致。

效果很直接:AI 少编 API、多给能用的代码。它从"凭记忆写"变成了"先查再写",幻觉率明显下降。这也是我们其他 AI 场景(族库检索、编码校验)共用的知识地基。


05 边界:副驾不是司机

必须把话说在前面,免得有人拿去吹"AI 全自动写插件"。

  • 复杂业务逻辑它搞不定。涉及多专业协调、和历史代码库深度耦合的部分,AI 目前出的是初稿,人得改定稿。它擅长的是"模式内补全",不擅长"理解你三年前埋的那个坑为什么这么写"。
  • 责任边界要划清。凡是涉及直接改模型的命令,生成的代码必须人审。我们内部约定:AI 可以做 80% 的样板代码,但 100% 的关键逻辑和模型写操作,要人拍板。
  • 它不是替代工程师,是放大工程师。同样一个人,有了 AI 补全骨架和查 API,能把精力压在真正需要判断的地方。产出上限提高了,但下限仍由人守住。

把期望管理好,比画"全自动"的大饼有用得多。

副驾不是司机:AI 能干 vs 人必须守

06 给同行的实操建议

如果你想开始用 AI 写 Revit 二次开发,几条我们验证过的做法:

  1. 别指望一句话生成完整插件。把任务拆到"单个命令 / 单个函数"的粒度再交给它,成功率最高。
  2. 给它看你的既有代码和编码规范。让它基于你的风格和既有封装写,比从零猜强太多,也少返工。
  3. 自建一个小知识库,ROI 很高。哪怕只是把你们常用的 API 片段、内部约定丢进去检索增强,也能明显压住幻觉。
  4. 把编译器和 Revit 当裁判。写完立刻编译、立刻在测试文档里跑,让机器反馈代替人工猜测。

这四条不玄学,都是把 AI 放在"短闭环、可验证"的位置上,让它发挥长处、避开短处。


07 一个任务看全链路:批量提取风管长度

说虚的容易,拿一个真实任务串一遍。需求是:把当前文档里所有风管按系统类型汇总长度,导出成表。

链路是这样走的:

  1. 人拆任务。我不让 AI 直接"写个插件",而是拆成:① 过滤所有风管元素;② 按系统类型分组;③ 累加长度参数;④ 输出到表格。粒度到函数级。
  2. AI 搭骨架。它吐出 IExternalCommand 模板、FilteredElementCollector 的过滤写法、事务包裹,样板一次成型。
  3. 知识库兜底。写过滤器时,RevitKBAgent 先把"风管对应的 Category 和 ElementType 在哪个版本叫什么"查准,避免它凭记忆写错类名。
  4. MCP 跑批。骨架确认后,通过 MCP 让 Revit 直接执行,几秒出结果,不用我手动点界面复核每一根。
  5. 人审关键逻辑。分组规则和长度参数的取法由我拍板——这是模型读操作的边界,必须人守。

整个过程里,AI 干的是模式内的补全和机械执行,人守的是拆解、查证和关键判断。这才是稳的用法。

一个任务看全链路:批量提取风管长度

写在最后

AI 写 Revit 插件这件事,已经过了"能不能"的阶段,到了"怎么用得稳"的阶段。我们已经在用它跑生产,下一步是把 MCP 驱动做成默认工作流,让"下指令→Revit 自己干活"变成日常而不是演示。

如果你也在用 AI 写 Revit 二次开发,欢迎在评论区聊聊你的拆法和踩过的选择——同行之间的真实经验,比看我啰嗦有用。

欢迎转发。

★

优易科技 | 优易BIM助手

相关学习资料