text-to-CAD 只有一条路真能出图:让模型写脚本,别让它想象形状
一句话结论:2026 年 text-to-CAD 能用的前提是"模型写指令、真 CAD 引擎去执行";一旦让模型自己去想象形状,就不可用了。
这篇编译自 CADCraft 2026-10-25 的实测文(他们的 v0.18.0 版本在 11-07 重跑过一遍),作者自己写明:CADCraft 是 ArtCraft 团队的开源 CAD 程序,这个站是独立指南而非官网。
一、今天能用的三条路
| 路线 | 模型输出什么 | 你得到什么 | 擅长 | 稳定翻车的地方 |
|---|---|---|---|---|
| 提示词 → 参数化脚本 | OpenSCAD / CadQuery / build123d 代码 | 可导出 STL / STEP(STEP 要 CadQuery 或 build123d) | 支架、外壳、垫块,凡是"方盒 + 圆柱 + 孔"拼出来的东西 | 圆角顺序、布尔失败、轴向搞错、需要草约束的特征 |
| 提示词 → 2D 图纸 | CAD 命令(线、圆、标注) | DXF/DWG + PDF 图纸 | 板、法兰、平面轮廓、面板、带标注的草图 | 不知道加工厂真正需要哪几个尺寸;半径写成直径;靠点选才能做的事 |
| 提示词 → 3D mesh | 三角网格(生成式模型) | GLB / OBJ,用于渲染与游戏 | 有机形状、概念视觉 | 所有精确尺寸。没有尺寸可言,不能拿去制造 |
三条路共有一个规律:模型擅长把明确的数字变成语法,不擅长决定那些数字。
"一块 120 × 80 mm 的板,四个 6 mm 的孔,距每个角 10 mm" —— 能跑通。 "给一个 2 kg 的电机做一个结实的安装支架" —— 你拿到的是一堆猜出来的数字,包装成了图纸。
二、一条真提示词与它的真实输出
作者把第二条路线(2D 图纸)端到端跑了一遍。
提示词原文:
Draw a 120 × 80 mm mounting plate in millimetres. A 30 mm diameter hole in the centre. Four 6 mm diameter holes, 10 mm in from each corner. Outline on layer OUTLINE, holes on layer HOLES in red, dimensions on layer DIMS. Dimension the overall width and height and the centre hole.
模型(Claude)产出的命令开头是这样:
-layer m OUTLINE c 7 OUTLINE
rectang 0,0 120,80
-layer m HOLES c 1 HOLES
circle 60,40 d 30
circle 10,10 d 6
circle 110,10 d 6
然后是这篇最有价值的一步:不看图,去查实体。 通过 MCP 查询实际图元,得到的结果是:
HOLES {'x': 60.0, 'y': 40.0, 'z': 0.0} dia 30.0
HOLES {'x': 10.0, 'y': 10.0, 'z': 0.0} dia 6.0
HOLES {'x': 110.0, 'y': 10.0, 'z': 0.0} dia 6.0
HOLES {'x': 110.0, 'y': 70.0, 'z': 0.0} dia 6.0
HOLES {'x': 10.0, 'y': 70.0, 'z': 0.0} dia 6.0
保存的 DXF 里有 5 个圆、3 个标注、1 条多段线,DXF 与 PDF 都保存成功。
注意作者的观察纪律:这次测试是直接把脚本通过 MCP 跑掉,并不声称"一个新的大模型会话重新生成了这段脚本"。
三、为什么"测量"比"看图"重要
图看起来对,是这类工作最大的陷阱:渲染出来的样子会掩盖半径写成直径、孔偏了 10 mm 这类错误。 作者的做法是把验证变成一次查询:让 agent 把"它以为自己画了什么"报出来,与提示词里的数字逐项比对。
这条纪律对程序化 3D 普遍成立——不管是 2D DXF 还是 3D 实体,能被查询的几何才是能被验收的几何。
四、我们的整理
4.1 三条路线,其实是一条"责任划分"问题
- 参数化脚本:责任在"数字 + 约束",脚本错了可以读代码改,可版本化、可 review——这是它唯一适合进生产的原因。
- 2D 图纸:责任在"标注是否够用",加工厂看的是 DXF,不是你的渲染图。
- 3D mesh:责任没人接。它没有尺寸、没有特征树、改一个孔要重生成。
所以我们给这三条路的定位是:脚本 = 设计源文件,图纸 = 交付物,mesh = 展示物。 三者不能互相顶替。
4.2 直接可抄的三条工程习惯
- 提示词里只写数字,形容词一律删。 "结实的"、"现代的"、"合理的"都是让模型替你拍数字的信号。
- 让 agent 回读几何再交付:查询圆心坐标、半径、孔数、标注数量,逐项对账。
- 把生成脚本存进仓库(.scad / .py),和代码一样 review;mesh 只放产出目录,不进设计源。
4.4 一条可直接用的提示词模板
把底下的括号换掉就能跑(数字必须全部是数字,不要留形容词):
画一块 (120) × (80) mm 的板,单位毫米。中心一个直径 (30) mm 的孔。
四个直径 (6) mm 的孔,距每个角 (10) mm。
轮廓放 OUTLINE 图层,孔放 HOLES 图层(红色),标注放 DIMS 图层。
标注总体长、宽和中心孔的直径。
四条经验:单位写明、行列关系用单句拆开(一句一个几何事实)、图层显式指定、要哪几个标注直接点名。
4.5 验收清单(每次生成后跑一遍)
| 步骤 | 查什么 | 不合格先怀疑 |
|---|---|---|
| 1 | 图元数量对不对(孔数、圆数、多段线数) | 模型漏写命令 |
| 2 | 圆心坐标与直径逐个对账 | 半径/直径写反 |
| 3 | 标注数是否覆盖你要的尺寸 | 模型不知道加工要素 |
| 4 | 导出后的 DXF 在 CAD 里能打开且图层对 | 图层名/单位写错 |
第 1、2 步能自动做,第 3 步必须人来定——因为“加工需要哪几个尺寸”不是几何信息。
4.6 边界
- 官方/原文都强调:圆角顺序、布尔失败、草约束这些仍是脚本路线的硬骨头,出错时要人来改。
- 2D 路线依赖"agent 能在 CAD 里敲命令"(这里是 MCP),换一个 CAD 就要重接。
- 3D mesh 路线在只有视觉要求时是合理的,别把它算进制造链条。
五、生成完,先开来看
CADCraft 那条路产出的是 DXF;如果你是脚本路线拿到 STL / STEP,可以直接在 CAD Viewer 里打开 STEP / IGES 检查实体,或者用 3D Viewer 看 STL / OBJ / GLB。想从文字直接试水,Text2STL 是最短的一条路。
同主题阅读
- 3D 生成 LoRA 微调:9.3M 参数,鞋底 F-score 从 0.276 到 0.803
- AI 工厂数字孪生:智能体拼 OpenUSD 校区,尺寸仍要人核
- LLM 只写 JSON 房间规格:程序化地牢的可玩性,交给代码判
Sources
- ben《Text to CAD: What Actually Works Today》,CADCraft,2026-10-25(v0.18.0 复跑记录:2026-11-07)https://cadcraft.org/blog/text-to-cad
- 原文同时提供可跑的 MCP 示例与 DXF 检查输出;本文数字与命令均照原文引用