每日文摘
深挖 · text-to-cad:15k star 的 CAD 技能库,让 agent 写参数化代码直通 3D 打印机

如果你试过用 Fusion MCP 让 AI 客户端驱动 Fusion 360 建模,大概率体会过那种「连上了但很脆」的感觉:一次一个操作、依赖 Fusion 常驻、会话一断重放不回来。今天深挖的 text-to-cad 是另一条范式——它不让 agent 去操作 CAD 软件,而是让 agent 直接写参数化 Python 代码,本地几何内核确定性出 STEP,再用伴生 skill 一路串到切片和 3D 打印机。2026 年 4 月建仓,约 4.5 个月拿到 15,033 stars,值得认真看一眼它到底改变了什么。
是什么
text-to-cad 不是独立服务,也不是模型——它是装进 Claude Code、Codex、Grok Build 等编程 agent 的 11 个 skill 库(MIT 许可):cad(文/图生 CAD)、cad-viewer(本地浏览器预览)、step-parts(标准件 STEP 索引)、dxf(2D 图)、urdf/srdf/sdf(机器人描述文件)、sendcutsend(钣金下单预检)、dfam-check(可打印性检查)、gcode(切片)、bambu-labs(打印机对接)。智能全部来自宿主 agent 的 LLM,本地只有确定性工具链,官网的原话是 “100% open source + free, runs locally”。
作者 softservo 在 HN 自述:做了十年机器人、转软件十年后又回来,为了给 7 自由度机械臂生成 CAD 造了这个工具——机器人背景解释了为什么 skill 库里有一整套 URDF/SRDF/SDF。GitHub 官方 YouTube 频道 5 月底还把它选为 “Open source project of the week”。
核心机制:使用方式与「可控、可固定复现」从哪来
使用方式的根本变化:agent 产出的是一个纯 Python 参数化模型脚本(基于 build123d API,几何内核是 OpenCascade),直接 python model.py 就在旁边写出 STEP——这是默认主输出,STL/3MF/GLB 是可选导出。不需要任何 CAD 软件在运行。
对这个「模型脚本」,SKILL.md 定了一套强制 10 步工作流:执行 → cadgen step inspect 做几何校验(测量/对齐/拓扑)→ 渲染 PNG 快照让 agent 自己看图检查 → 有问题就改最小的一段源码重跑。注意两个设计:快照视检是强制的,确定性检查通过也不许跳(因为 validate 的 ok 只覆盖引用解析,开口壳体和反向实体都能骗过它);铁律是 “Edit source, not generated artifacts”——产物永远从源码重建,不手工修 STEP。
可控与可固定复现是机制保证,不是巧合。这是它和你现有 Fusion MCP 路线最大的分野:
- 代码即模型:真源是可 diff、可 code review、可进 git 的
.py文件。改尺寸 = 改代码重跑,改了什么一目了然。 - 版本钉链完整:仓库 VERSION → 每个 skill 的 requirements.txt 钉死
cadgen==0.5.1(发布 PR 用脚本盖章并校验)→cadgen doctor装后验证版本一致。 - 字节级确定性写进了设计律:cadgen 在 PyPI 发布了 17 条 “design laws”,第 5 条就是 Byte determinism——同输入同字节(STEP 规范化 ID、确定性网格化),配了专门回归测试防 hash 随机化破坏复现;模型代码被禁止读环境变量、时间、随机数。
- 失败不留半成品:封闭词表 + 教学式报错,渲染失败时目标路径不会有文件——宁可大声失败,不出「看起来对」的结果。
诚实起见也说边界:cadgen 自己没给 build123d/cadquery-ocp 这些传递依赖钉版本,跨机器、跨内核小版本的 STEP 字节级复现没有官方承诺,要自己实测。
打印链是它最独特的部分——目前唯一把「建模 → 检查 → 切片 → 上机」做成 agent skill 链的开源方案:$cad 出 STEP/STL → $dfam-check 用 trimesh 测壁厚、悬垂角、支撑体积、水密性(只测不判,发现问题生成带目标数值的返修指令,回 $cad 改源码复测)→ $gcode 调用真实切片器 CLI(OrcaSlicer > PrusaSlicer > CuraEngine,强制先 dry-run 审命令再执行,切片后还校验 G-code 内容)→ $bambu-labs 走纯局域网 FTPS 上传 + MQTT 起印,默认 dry-run,真要开打必须 --execute --confirm-start-print 双重确认。
怎么跑起来
安装面很轻:npx skills add earthtojake/text-to-cad 把 skill symlink 进各 agent 的 skills 目录(Claude Code 在 ~/.claude/skills/,Codex 家族在 ~/.agents/skills/),然后 pip install -r requirements.txt + playwright install chromium + cadgen doctor 验证。Python ≥3.11,cadgen wheel 只有 2MB,重的是几何内核 cadquery-ocp(约 68-70MB)。无 GPU、无本地大模型需求,全链路唯一付费点是宿主 LLM 的用量——3090 机器在这里派不上用场。
对 Fusion 360 用户要建立一个新的心智模型:STEP 拖进 Fusion 得到的是哑实体——无特征树、无草图、时间轴只有一个 Import 条目(Autodesk 社区多方确认)。Fusion 侧可以用 press/pull 这类直接建模工具微调,但参数化真源在 .py 脚本里:要改尺寸,回 agent 改代码重出 STEP,而不是在 Fusion 里改。把它当「AI 参数化建模 → STEP 交接 → Fusion 微调/装配」的流水线,而不是 Fusion 的替代品。
Mac 上跑完整打印链:brew install --cask orcaslicer,在 OrcaSlicer GUI 里为你的机器导出参数,按 schema 建 wrapper profile JSON(skill 明确禁止编造打印机参数);有 Bambu 打印机的话开 LAN Only + Developer Mode,配好 IP 和 access code 即可——但注意 A1 Mini 是唯一完整验证过「局域网直接起印」的机型,P1S 走打包模式,其他机型有 profile 未启用验证。
数据说话
热度是真的:Wayback 快照逐点核实的曲线是 4/28=1,012 → 6/6=5,686 → 9/1=14,109 → 9/10=15,032,上线 6 天破千,7-8 月净增 6.7k 是最大增量;HN 主帖 186 分由作者本人提交。工程质量也实在:最近 4 周约 100 commits(约半数来自外部贡献者和机器人)、169 个测试 Python 文件、Linux+Windows CI 必过;issue 抽样关闭时间从 31 分钟到 2 天——单人维护但响应极快。
正面实测的上限是「法兰盘级多特征板类件」。知乎实测用 Codex 做了三组零件:100×60×20 校准块带 4 孔 2mm 倒角约 2 分钟完成、孔位倒角厚度全对;改倒角 2mm→3mm,agent 直接改 Python 源码参数重建,不用重画;80mm 法兰 6 孔均布于分布圆,结果正确。HN 用户用渲染反馈回路迭代出了医疗雾化器转接头,评价「incredibly powerful」但「仍需重度人工检查」。
负面也要如实说:
- 没有任何官方基准与成功率数字。作者 5 月初在 HN 说「正在做 benchmarks」,但当时就有用户当场指出他的早期样例有孔位缺失、「通孔」实际没打通的问题;现在仓库和官网都找不到基准目录。
- LLM 空间推理是品类级硬伤。学术基准 Text2CAD-Bench 测裸 LLM 写 CadQuery:复杂度从基础几何到扫掠放样抽壳,失效率从约 15% 恶化到 70-90%。Ask HN 一个自建过 text-to-CAD 工具的楼主付费请真实 CAD 用户测试,结论是「几乎所有人在 SolidWorks 里更快」。skill 的快照视检回路能把这个数字压低多少,没有公开数据。
- 具体翻车案例:瓶架被旋转 90 度生成、AI 坚持认为开口朝上(作者说已修);0.5.0 还开着两个内核级 bug(#371 圆柱孔导出网格产生退化三角形、#373 B 样条偏移出尖刺);Windows 历史坑多(7 个已修 issue)。
- 社区最狠的一句批评适用于所有 AI CAD 路线:「Connecting CAD is not the same as doing CAD」。
值不值得跟:对 Fusion 用户的工作流判断
把它放回你的工具箱里看,两条路线其实是互补而非替代:
| Fusion MCP(你在用的) | text-to-cad | |
|---|---|---|
| agent 做什么 | 远程操作运行中的 Fusion 会话(一次一操作) | 写自包含参数化 Python 脚本 |
| 模型真源 | Fusion 时间线 + .f3d | 可 git 的 .py + 钉版本的 cadgen |
| 可复现性 | 无承诺,重放依赖会话状态 | 字节级确定性(design law + 测试) |
| 事后编辑 | Fusion GUI 拖参数改特征,最强项 | 回代码改;STEP 进 Fusion 是哑实体 |
| 打印链 | 需另接切片/发送环节 | DfAM→切片→Bambu 起印全 skill 化 |
我的判断:3D 打印件、需要可固定复现的参数化零件,值得把这条路线用起来——模型进 git、版本钉死、任何时候 python model.py 就能重建,这正是「可控可复现」的机制性答案;改参重建比手工改 Fusion 模型快。而必须留在 Fusion 时间线里的正式设计(装配、工程图、钣金),继续走 Fusion MCP 或手工——Autodesk 官方也已把 Fusion MCP 列为官方方向,同时在押注未上市的 Neural CAD,你的 Fusion 资产不会作废。
上手建议:先在 Mac 装 skill,拿一个实际的打印小件(支架、外壳、法兰类)走通 $cad → $dfam-check → $gcode,把「多角度渲染视检」养成习惯——它是必要环节不是可选项;STEP 需要精修时再拖进 Fusion。配合公差、曲面、大装配的件,现在仍然手工建模更快。
参考阅读
- earthtojake/text-to-cad README — 11 个 skill 总览与安装方式
- skills/cad/SKILL.md — 核心 skill 的 10 步闭环契约与「Edit source, not generated artifacts」铁律
- PyPI cadgen — 17 条 design laws,字节确定性在律法层
- HN: Text-to-CAD (186 points) — 作者本人提交的主帖,正反实测与批评都在评论里
- Ask HN: Is text-to-CAD BS? — 品类级最狠质疑:连上 CAD ≠ 做了 CAD
- 知乎实测文 — 唯一中文动手实测(校准块/改参/法兰,尺寸全对)
- Text2CAD-Bench (arXiv) — 学术基准:复杂件失效率 70-90% 的品类上限数据
- texttocad.dev — 官方文档站