
让 Codex / Claude Code 生成 CAD 和 3D 图:MCP 与 Skill 路线图
过去说“让 AI 画 3D 图”,大多数时候指的是一张概念图:它能表达氛围,适合做提案封面、产品预览或空间灵感板,但它不是工程文件。它不能保证孔距、壁厚、装配间隙,也不能直接导出 STEP 交给机械工程师复核。
真正值得关注的是另一条路线:
让 Codex 或 Claude Code 通过 MCP / Skill 调用真实建模工具,把自然语言需求变成可检查、可复现、可回滚的 CAD / 3D 资产。
这件事的关键不是“模型有没有三维想象力”,而是它能不能进入工程软件的事实层:尺寸来自哪里,约束如何表达,文件能不能重新打开,导出物是否可验证,人类能不能在加工前审查。
先把输出分成三类
很多 AI CAD 项目失败,不是模型不会写几何,而是把“渲染图”“草模”“工程件”混在一起。三类输出的目标完全不同,工具也应该不同。
| 输出类型 | 典型文件 | 推荐工具 | 适合场景 | 最大风险 |
|---|---|---|---|---|
| 视觉 3D | .blend、渲染图、动画 | Blender MCP | 产品概念、展陈空间、宣传视频、交互演示 | 好看但不可制造 |
| 工程 CAD | .FCStd、.step、.stl | FreeCAD MCP、CadQuery、build123d | 外壳、支架、夹具、3D 打印件、装配件 | 尺寸、约束、公差需要复核 |
| 代码化建模 | .scad、.py | OpenSCAD、CadQuery | 参数化零件、批量变体、CI 自动导出 | 脚本抽象不当会难维护 |
如果目标是做一张能吸引人点击的产品图,Blender MCP 合理;如果目标是做一个能装到设备上的支架,FreeCAD / CadQuery 更稳;如果目标是长期生成一系列尺寸变体,优先考虑 OpenSCAD 或 CadQuery 这类代码化建模。
MCP 和 Skill 分别解决什么
MCP 的价值,是让 Agent 能操作真实软件和外部状态。对 CAD/3D 来说,这意味着 Agent 可以创建对象、设置参数、读取当前工程、导出文件,甚至根据软件返回的状态继续修正。
Skill 的价值,是把流程和约束沉淀下来。它告诉 Agent 什么时候使用这套能力、输入是什么、输出什么、失败怎么检查、哪些动作必须等待人工确认。
| 层级 | 负责内容 | 典型例子 | 为什么不能省 |
|---|---|---|---|
| MCP | 连接运行中的软件和工具 | Blender、FreeCAD、Figma、EDA API | 没有它,Agent 只能写说明,不能操作真实工程 |
| Skill | 固化步骤、规范和验证 | CAD 建模清单、导出脚本、尺寸校验 | 没有它,Agent 容易乱用工具、漏掉复核 |
| Plugin | 团队分发和权限打包 | 同时携带 Skill、脚本、说明和 app 依赖 | 没有它,团队很难统一安装、升级和审计 |
我的建议很明确:MCP 负责接软件,Skill 负责规矩和验证。 只接 MCP,Agent 有手但缺少流程边界;只有 Skill,没有 MCP,又很难读取和修改真实 CAD 环境。
按场景选工具
| 任务 | 推荐入口 | Agent 应该做什么 | 人类必须检查什么 |
|---|---|---|---|
| 产品概念图 | Blender MCP | 创建场景、材质、灯光、相机、基础动画 | 比例、品牌风格、是否暗示不存在的结构 |
| 机械支架 | FreeCAD MCP | 创建草图、拉伸、倒角、孔位、导出 STEP/STL | 关键尺寸、公差、装配空间、受力方向 |
| 参数化外壳 | CadQuery / build123d | 用 Python 描述尺寸变量、扣位和开孔关系 | 壁厚、开模方向、打印方向、螺丝柱强度 |
| 简单打印件 | OpenSCAD | 输出可复现 .scad 脚本并导出 STL | 单位、孔径补偿、桥接、支撑、材料收缩 |
| PCB / EDA 自动化 | EDA Skill + 官方 API | 读取工程、导出元件/网络/规则检查快照 | 写回动作、封装映射、规则约束、版本备份 |
如果只是做演示,Blender MCP 的上限很高;如果要进入制造链,FreeCAD / CadQuery / OpenSCAD 更容易审查。专业 EDA/CAM/PLM 软件不要一开始就给 Agent 写权限,先从“读取快照、生成建议、人工确认”开始。
一个可落地的 CAD Skill 应该长什么样
一个合格的 CAD Skill 不应该只写“请生成一个模型”。它至少要包含输入、输出、验证、权限和复核边界。
| 模块 | 应写清楚的内容 | 例子 |
|---|---|---|
| 触发条件 | 什么时候使用这个 Skill | 用户要求生成可编辑 CAD、STEP、STL、OpenSCAD、夹具或外壳 |
| 输入格式 | 需求必须包含什么 | 单位、外形尺寸、孔位、安装空间、材料、参考图 |
| 工具顺序 | 先做什么再做什么 | 先生成参数表,再写脚本,再导出,再验证 |
| 验证规则 | 交付前必须检查什么 | 包围盒、孔径、孔距、壁厚、导出文件可重新打开 |
| 权限边界 | 哪些动作不能自动做 | 不覆盖原始工程,不自动提交加工文件,不自动下单 |
| 失败处理 | 出错时如何回退 | 保存中间文件,输出错误原因,要求补充尺寸或约束 |
可以把它理解成“给 Agent 的工程作业指导书”。模型负责推理和编写脚本,Skill 负责把不该省略的步骤固定下来。
最小可用工作流
如果今天就要搭一个能工作的方案,我会按这个顺序做:
- 先用 OpenSCAD 或 CadQuery 做文本到可复现模型。这一步最容易审查,也最适合 Codex / Claude Code 写脚本、跑检查、提交 diff。
- 再接 FreeCAD MCP,让 Agent 可以打开、修改、导出真实 CAD 文件,但默认只在副本上操作。
- 如果需要展示、动画或空间场景,再接 Blender MCP,把工程模型转换成渲染或演示资产。
- 专业 EDA / CAM / PLM 软件先通过 Skill 包住官方 API、COM、CLI 或宏脚本,形成稳定的读写边界。
最小目录可以这样设计:
cad-skill/
SKILL.md # 使用场景、输入输出、验证清单
scripts/
export_step.py # 导出 STEP
export_stl.py # 导出 STL
check_bbox.py # 检查包围盒
examples/
bracket.scad
enclosure.py
output/
previews/
交付前验证清单
- 所有尺寸明确为 mm / inch,没有混用单位。
- 包围盒长宽高符合需求,误差可解释。
- 孔径、孔距、边距、安装方向可查。
- 壁厚满足材料和打印/加工方式。
- STEP / STL / SCAD 能重新打开。
- 关键参数来源可追溯。
- Agent 没有覆盖原始工程文件。
- 交付给加工、采购或客户前有人类复核。
常见反模式
| 反模式 | 为什么危险 | 更好的做法 |
|---|---|---|
| 只让模型输出一张图 | 没有尺寸、约束和可编辑文件 | 要求输出参数化脚本或 CAD 文件 |
| 直接让 Agent 改原工程 | 一次误操作可能破坏历史文件 | 只在副本或临时目录修改 |
| 没有单位和公差 | 模型可能默认英寸或毫米 | 输入模板强制写单位和关键公差 |
| 没有导出验证 | 文件存在不代表能打开 | 自动重新打开或用脚本检查导出物 |
| 把所有软件都 MCP 化 | 权限面太大,调试复杂 | 稳定流程用 Skill + CLI,实时状态才用 MCP |
我的判断
AI 生成 CAD 的下一步不是更会“画”,而是更会“交付”。对个人开发者,最务实路线是 OpenSCAD / CadQuery + Skill;对团队,应该走 FreeCAD / Blender MCP + Skill + 权限审批;对专业 EDA/CAM,先读后写,先快照后修改,先验证再导出。
当 Agent 生成的不是一张漂亮图片,而是一个可检查、可复现、可导出的工程资产,CAD/3D 才真正进入 AI 工作流。
来源
- Blender MCP GitHub
https://github.com/ahujasid/blender-mcp - FreeCAD MCP GitHub
https://github.com/contextform/freecad-mcp - text-to-cad / OpenSCAD Skill
https://github.com/earthtojake/text-to-cad - OpenAI Help Center:Plugins in Codex
https://help.openai.com/en/articles/20001256-plugins-in-codex/ - OpenAI Academy:Plugins and skills
https://openai.com/academy/codex-plugins-and-skills/ - Claude Docs:Agent Skills
https://docs.claude.com/en/docs/claude-code/skills - Claude Code Docs:Connect Claude Code to tools via MCP
https://code.claude.com/docs/en/mcp