text-to-cad 这个词,最近在机械设计和创客圈子里出镜率非常高。我最早是抱着"又是 AI 画图那套"的心态去试的,结果第一次在浏览器里输入一行描述,拿到一个能直接导入 Fusion 360、还带着参数特征树的 STEP 文件时,确实有点被震到。这个思路跟我熟悉的"文生图"完全不是一回事——它不是在生成一张看起来像零件的图片,而是在生成一个真正能编辑、能出工程图、能进 CAM 加工的参数化实体模型。
这篇文章我会从底层原理、主流工具选型、实测过程、避坑清单这几个角度,把我最近折腾 text-to-cad 的经验完整拆一遍。适合正在做产品设计、结构设计、非标自动化,或者单纯喜欢折腾 3D 建模的朋友。看完你能搞清楚这东西到底行不行、怎么用、哪些坑别踩。
1. 先搞清楚:text-to-cad 生成的到底是个什么东西
1.1 它和文生图、AI 生成网格的三层差别
很多第一次听说 text-to-cad 的人,会下意识拿它和 Midjourney 那种文生图去对比。我在线下分享的时候,也经常被问到"是不是输入一行字就出一张效果图"。这个理解偏差是致命的,因为两者的产出物完全不在同一个维度上。
我列个对比表,大家一眼就能看明白:
| 方案 | 产出物 | 可编辑性 | 可制造性 | 典型工具 |
|---|---|---|---|---|
| 文生图 | 像素图片 | 基本不可编辑 | 不能直接用于制造 | Midjourney、Stable Diffusion |
| 文生网格 | STL/OBJ 网格 | 低,需逆向或重拓扑 | 可 3D 打印,难直接机加工 | 各类 3D 生成式模型 |
| text-to-cad | B-rep 实体、STEP、特征树 | 高,参数化可改 | 可直接进 CAM/CNC/出图 | Zoo、LLM+CadQuery |
文生图输出的是二维像素,本质上是一张"看起来像"的图片。文生网格输出的是三角面片拼起来的表面,能 3D 打印,但进入不了真正的机械制造流程。而 text-to-cad 输出的是边界表示(B-rep)实体模型,背后有完整几何内核,有特征树,有参数约束。
这么说吧:文生图像是在画一张照片,文生网格像是在用橡皮泥捏一个外形,而 text-to-cad 给的是一张带尺寸标注的工程图纸加一个可以继续修改的实体模型。
1.2 为什么"可编辑"是制造业的底线
我在非标自动化这行干了挺多年,深知一个零件从想法到落地,中间不可能一次成型。客户说改就改是常态:孔位挪几毫米、壁厚加 1mm、螺纹孔改成沉头孔——这种改动在传统工作流里要在特征树里找到对应步骤,改参数,重生模型。
text-to-cad 产品最核心的价值,恰恰是它保留了特征树和参数。AI 生成的不是一个"死模型",而是一个"活的"、可以继续被人类设计师编辑的模型。这对制造业来说不是加分项,而是底线。
试想一下,如果 AI 给你导出一个 STL 网格,客户说"把孔距从 25 改成 30",你几乎要重新建模;但如果给的是带特征树的 STEP,打开设计历史,改一个尺寸数字,重新生成,三分钟就完事。这就是"能看"和"能用"的差别。
1.3 生成网格和生成实体,难度差了一个量级
还有一个经常被忽略的事实:让 AI 生成一堆三角面片,和让 AI 生成一个拓扑正确的实体,数学难度完全不在一个层级。
网格只是表面的离散近似,三角形顶点坐标对就可以了,肉眼看着像就行;但实体要求面与面之间严格闭合、边与边精确相接、没有裂缝、没有自相交、布尔运算结果合法。这在计算几何上是一个非常严格的要求,相当于让 AI 写出一道"有且只有一个标准答案"的几何证明题。
这也是为什么现在主流的 text-to-cad 方案大多选择"让大模型写几何代码,再由几何内核执行"的路线——LLM 负责语义理解,几何内核负责精度。我后面会详细拆这个机制。
2. 主流方案全景:商业 SaaS 和开源路线怎么选
2.1 Zoo Text-to-CAD:目前完成度最高的入口
目前讨论度最高、上手门槛最低的,是 Zoo 推出的 Text-to-CAD。Zoo 这家公司前身是 KittyCAD,做硬件设计云 API 出身,底子很深。他们的方案是让用户在网页里输入自然语言描述,后端用大语言模型把它翻译成一种叫 Geometry Script 的几何描述语言,然后由自家的几何内核解析生成模型,最后导出 STEP、STL、GLB 这些常见格式。
我实测下来,它有几个让我印象深刻的点:
- 不需要安装任何软件,浏览器打开就能用
- 生成结果带着参数化特征,不是死模型
- 支持多轮修改,比如生成之后继续追加"把孔改大一点"、"把壁厚加到 4mm"
按照公开资料,Zoo 在推进 text-to-cad 的过程中和 OpenAI 有过合作。这也解释了为什么它的自然语言理解能力明显比一些小团队做的玩具 Demo 强一截。
当然,它也有明显的限制:作为 SaaS 服务,模型文件都在云端,对数据保密要求严格的军工、涉密项目基本用不了;另外每次生成要等,"快"也只是相对手动建模而言,离实时还有距离。
2.2 开源路线:把 LLM 接到 CadQuery 或 OpenSCAD 上
如果你不想被云端服务绑住,或者需要把 text-to-cad 嵌进自己的自动化设计流水线,更实际的方案是自己搭一套开源路线。核心思路非常简单:写一段程序,把自然语言 prompt 扔给大模型,让它输出 CadQuery 或 OpenSCAD 的代码,然后在本地执行生成 STEP 文件。
CadQuery 是 Python 库,封装了 OpenCascade 几何内核,写起来比较接近我们做结构设计的思路。我随便写个例子,你们感受一下:
import cadquery as cq plate = ( cq.Workplane("XY") .box(60, 40, 5) # 底板 60x40x5 .faces(">Z") .workplane() .rect(60, 40, forConstruction=True) # 构造线矩形 .vertices() .hole(5) # 四个角打 M3 通孔 ) cq.exporters.export(plate, "mounting_plate.step")这段代码生成一个 60x40x5 的底板,四角各有一个直径 5mm 的通孔。OpenSCAD 则更偏函数式,语法和写 CSG 布尔运算的思维方式更像。
整个链路很简单:大模型生成代码 → 本地执行 → 导出 STEP。你可以用 OpenAI 的 API,也可以用开源的本地模型,完全取决于你要不要数据出境。
2.3 三条路线对比与选择建议
我把三条路线放在一张表里,你按自己的身份对号入座:
| 路线 | 代表 | 输出 | 可控性 | 学习成本 | 适合谁 |
|---|---|---|---|---|---|
| 商业 SaaS | Zoo Text-to-CAD | 网页直接导出 STEP/STL | 中上,带特征参数 | 低 | 设计师快速出草稿 |
| 开源 LLM + CadQuery | 自己搭建 | 本地 STEP 文件 | 高,全面可控 | 中高 | 工程师、自动化集成 |
| OpenSCAD + LLM | 自己搭建 | CSG 模型/STEP | 高 | 中 | 参数化建模爱好者 |
我的建议很直接:如果只是零散试试、快速验证想法,优先用 Zoo 这类 SaaS,省事;如果你是企业里的工程师,打算把 text-to-cad 用在真实项目里,甚至想批量生成系列零件,那一定要走开源路线。理由很简单——数据主权、可离线、可调试、可复用。
我个人的项目现在以 CadQuery 路线为主,因为流程我可以完全控制,生成完的脚本还能直接进版本管理。
3. 底层原理:为什么让大模型"写几何代码"比"直接画模型"靠谱
3.1 程序综合:生成程序而不是生成像素
很多朋友会好奇:text-to-cad 背后到底是怎么做的?为什么大模型能"凭空"生成一个实体模型?
答案其实是四个字:程序综合。所谓程序综合,就是让 AI 生成一段可执行的程序,再让这段程序去产出最终结果。text-to-cad 里的角色分配非常清晰:
- 大模型负责理解你的自然语言,把它翻译成一段几何脚本
- 几何内核(比如 OpenCascade)负责执行脚本,产出精确实体
这个分工是关键。你不必指望神经网络直接输出 B-rep 数据和拓扑结构,那个太难,模型的数值精度完全不够;你只需要它输出一段代码,代码本身由成熟的几何内核去执行。这就把一个"几何生成问题",转化成了一个"代码生成问题"。
而代码生成恰恰是大语言模型的强项。因为模型在训练时看过海量代码,对常见语法、函数调用、逻辑结构都非常熟悉。让它写几十行 Python 或 DSL 代码,远比让它凭空画一个实体可靠。
3.2 几何 DSL 是成败关键
你可能会问:既然大模型会写 Python,为什么不直接让它写 CadQuery 代码?
可以,但业界主流的商业产品往往会设计一套专门面向几何建模的 DSL(领域特定语言)。Zoo 的 Geometry Script 就是这类。设计它的原因很简单:DSL 词表小、语法固定、函数语义明确,大模型生成时会"跑偏"的概率远小于自由使用全功能的 Python。
我拿一个风格示意来举例,不要太纠结语法细节,重点是感受这种语言的"语义密度":
// 简化示意:一个带四孔安装板的 DSL 写法 plate = box(width=60, depth=40, height=5) holes = [circle(diameter=5).at(x, y) for x in [-25, 25] for y in [-15, 15]] model = plate.subtract(holes.each().extrude(5))你看,box、circle、subtract、extrude,全是见名知义的词。模型在生成这些函数调用的时候,几乎不需要做复杂的语义推断,只需要匹配"用户说打孔 → 找 hole 或者 circle 相关函数"。
相比之下,让模型直接写原生 CAD API 脚本,函数名长、参数多、还要处理各种上下文状态,生成的出错率会呈指数上升。所以很多时候我们看一个 text-to-cad 产品好不好用,先看它背后的 DSL 设计得聪明不聪明。
3.3 精确尺寸的悖论:为什么 AI 总差那 0.2 毫米
说句实话,现在的大模型对"精确数值"非常不敏感。你说"长度 50mm",它经常给你生成 49.87 或者 50.4。原理也不复杂:语言模型是按照 token 概率来预测内容的,数字本质上是一串离散符号,模型没法像计算器那样对数值做精确推理。
这在 CAD 场景里是致命的。机械设计里 0.1mm 的误差可能就让零件装不上。
所以目前靠谱的 text-to-cad 工具,都不会让你直接信任 AI 的尺寸数值。正确用法是:
- 关键尺寸由你自己在 prompt 里显式指定
- 生成后通过参数表或特征树确认数值
- 必要时用参数覆盖的方式直接修正
这等于把"精确"这件事牢牢握在设计师手里,让 AI 只负责"形状和结构"层面的发挥。理解了这一点,你就不会对 AI 生成的模型抱有不切实际的精确度期待。
3.4 一条完整的处理链路:从 prompt 到 STEP 文件
把整个流程串起来看,text-to-cad 其实是在走一条非常规整的流水线:
- 用户输入自然语言描述,包括零件类型、关键尺寸、孔位、壁厚等约束
- 大模型将描述解析成几何 DSL 或 Python 脚本
- 几何内核按脚本执行建模操作,生成参数化实体模型
- 编译器/内核检查拓扑正确性,处理倒角、布尔运算等
- 导出 STEP、STL 或原生格式文件,供外部 CAD 软件打开继续编辑
这条链路最大的好处是每一环节都可审计、可修正。脚本可以看、可以改;几何内核出错了可以报错提示;导出格式不对可以重新选。它本质上是一条"人在回路中"的智能辅助流水线,而不是一个不可解释的黑盒生成器。
这也解释了为什么我强烈建议工程师们至少了解一点 CadQuery 或脚本化建模的基础——当你理解了链路里的每一步,你在用这些工具时心里才有底,才不会在模型报错时手足无措。
4. 实测记录:从 prompt 到可装配 STEP 文件的一次完整流程
4.1 我用的 prompt 和预期
动手测试之前,我特意选了一个在实际项目里很常见的需求,而不是网上那些花里胡哨的演示案例。我的 prompt 是这样的:
设计一个 PCB 安装支架。PCB 尺寸 35mm x 35mm,厚度 1.6mm。支架从上方托住 PCB,PCB 上表面距底板 12mm。底板用四个 M3 螺丝固定在机箱上,螺丝孔排布为 40mm x 40mm 正方形。整体材料建议 ABS,壁厚 3mm,外露边角加 R5 圆角。
这个 prompt 里有几个信息是故意的:
- 给出了明确的零件类型(PCB 安装支架),模型知道该生成"承载类"结构
- 给出了 PCB 关键尺寸和沉高(12mm),它会自动补螺丝柱
- 给出了固定方式和标准件规格(M3),避免它自作主张选奇怪的螺栓
- 给出了圆角和壁厚,减少后续大量返修
4.2 生成结果与第一轮检查步骤
生成出来的模型大体结构是对的:有底板、有四个支撑柱、顶部有承托 PCB 的凸台,螺丝孔也按要求排成了 40mm 见方。但绝不能直接拿来加工——AI 出来的模型必须过一遍人工检查。
我总结了一套"收到 AI 模型后的五步检查法",分享给你们:
- 查单位:确认模型单位是 mm,不是 inch。这个坑我踩过一次,尺寸整整差了 25.4 倍。
- 查特征完整性:对照 prompt,逐个确认承托台、螺丝柱、通孔、圆角是否都生成了,有没有漏特征。
- 查孔位尺寸:用测量工具复核孔距和孔径,M3 通孔直径应该在 3.2–3.5mm 之间,别让 AI 给你整成 3mm 螺纹孔。
- 查自相交和薄壁:多角度剖视检查。一些复杂结构里,AI 可能生成厚度只有 0.5mm 的薄壁,或者两个特征相互穿插。
- 查可编辑性:确认导入 CAD 后特征树完整。如果导入进来是一个"死疙瘩",说明导出格式有问题。
我这轮实测里,孔距和壁厚都符合预期,但支撑柱和底板的连接处没有做加强筋。这个在 prompt 里没写,AI 当然不会主动加。所以提醒各位:prompt 里没提到的细节,别指望 AI 能读心。
4.3 与手动建模的时间账
我顺手计时对比了一下,同一个零件,手动建模和用 text-to-cad 辅助的耗时差:
| 环节 | 传统手动建模 | text-to-cad 辅助 |
|---|---|---|
| 需求理解与绘制草图 | 10 分钟 | prompt 书写 3 分钟 |
| 建模操作 | 15 分钟 | 生成等待 2 分钟 |
| 修正与检查 | 5 分钟 | 8 分钟(包含上面的五步检查) |
| 合计 | 30 分钟 | 约 13 分钟 |
结论很明确:整体省一半时间以上,但省下的时间主要在前面的"从零到一",后面的"精修"反而因为要多检查 AI 的活,没有想象中那么快。
这也符合我对 text-to-cad 的定位:它是个高效的草稿加速器,不是终稿生成器。
4.4 什么零件适合,什么不适合
这段时间我拿各种结构件试过,基本摸清了边界。
适合的:
- 规则机械件:支架、底座、外壳、钣金件
- 带规律孔阵列的:安装板、散热孔板、法兰
- 对称结构:电机座、轴承座、连接块
- 参数特征清晰的:齿轮、皮带轮
不适合的:
- 有机曲面:鼠标外壳、耳机造型、人体工学曲面,生出来基本没法用
- 高度复杂的自由造型:汽车覆盖件、雕塑类
- 大型装配体:几十上百个零件的配合关系,AI 目前还处理不了
简单说:结构越规矩、特征越常见,text-to-cad 越强;越依赖曲面美感或复杂的装配逻辑,它越拉胯。
5. 参数化的价值:能改,比能看重要得多
5.1 从制造链角度看 STEP/B-rep 是什么角色
很多非机械行业的朋友不理解,为什么我反复强调 STEP 文件、B-rep 实体这些东西,STL 不是也能显示三维模型吗?其实关键在于制造链的下游。
一个零件从模型到成品,大致要经过这些环节:
- CAM 编程:给 CNC 生成刀路,必须用精确实体,不能是网格
- 工程图:标注尺寸、公差、表面粗糙度,需要从实体投影出视图
- 装配:多个零件配合,需要检查干涉,必须实体
- 模具/钣金展开:钣金件要展开算折弯补偿,网格根本做不了
在这一整条链路里,STEP 和 B-rep 就是 CAD 生态的"通用语言"。各个软件之间传递模型,要么 STEP,要么原生格式。STL 只是显示和 3D 打印用的公有格式,离"可制造"还差得远。
这就是 text-to-cad 相对文生网格类工具的碾压性优势:它输出的东西,下游全链路可以直接接手。
5.2 一次设计变更的真实场景
前阵子我给一个项目做了个电机安装支架,AI 生成的第一版模型各方面都没问题。结果第二天客户通知:安装孔距从 60mm 改成 75mm,电机直径从 80mm 改成 90mm。
如果是传统手动建模,我得找到那几个安装孔所在的草图,逐个改尺寸;如果是 STL 网格,基本只能重新建模。但那次因为模型带着完整参数,我在特征树里找到孔距变量,改了数值,重新生成,整个过程不到五分钟。
这个体验让我印象极深。**AI 生成的价值有一半在"生成",另一半在"生成之后还能不能优雅地修改"。**参数化就是那个"优雅"的保障。
5.3 模型即代码:能进自动化流水线的 CAD
再往深一层说,走 CadQuery 这条开源路线,参数化的好处会进一步放大。因为你的模型本质上就是一段 Python 代码,这意味着它可以进 Git 做版本管理,可以写单元测试,可以用 CI 自动化批量生成。
我组里做过一个钣金件系列化的项目:底座有 6 种尺寸规格,每种有 4 种孔位变体。原来要手工建 24 个模型,每改一次方案就要同步改 24 遍,极其痛苦。
后来我们把建模脚本参数化:输入长宽高、孔位、数量,脚本自动生成对应 STEP,再配合自动化脚本批量导入装配体。走通之后,一个任务从一天缩到十分钟。text-to-cad 在这套流程里承担的是"快速生成基础脚本"的角色,剩下的是参数化和自动化的事。这才是它真正的长期价值——不是替代设计师,而是把设计师从重复劳动里解放出来。
6. 当下边界、避坑清单和上手建议
6.1 暂时指望不上的场景
诚实地说,现在 text-to-cad 还处在"辅助工具"阶段,有几类场景短期内不要抱期望。
第一,高精度配合公差。比如直径 25mm 的孔配 H7 公差、配合面的粗糙度要求,AI 完全处理不了,这必须靠人在 CAD 里标注。
第二,行业标准件库。DIN、GB、JIS 这些标准件,AI 可能生成一个"看起来像"的螺栓,但实际螺纹标准、头部对边距、强度等级全是错的。标准件还是老实从模型库调。
第三,复杂曲面和人机工学。这我在前面已经说了,AI 的曲面审美和建模能力还远不如一个入行两年的曲面建模师。
第四,大型装配体。text-to-cad 目前基本聚焦在单零件,你让它生成一个包含 50 个零件的机构,它连零件之间的约束关系都很难建模。
认清边界不是为了泼冷水,而是为了不让大家误用工具,然后产生"AI 建模就是智商税"的误解。
6.2 我踩过的坑和规避方法
我把自己实际踩过、或者身边同事踩过的坑整理成清单,含金量挺高,建议收藏。
单位混乱:同一个 prompt 里最好只出现一种单位体系,明确写"单位 mm"。否则 AI 经常在公制英制之间精神分裂。
关键公差靠 AI 猜:凡是影响装配的尺寸,我都在 prompt 里直接给定数值范围,比如"M3 通孔直径 3.4mm",不让模型自由发挥。
导出格式不对:有些工具生成的是网格不是实体,导出 STL 还行,导出 STEP 就不行。导入软件前先检查文件是表面网格还是实体。
不看自相交和薄壁:AI 生成的模型偶尔会出现特征自相交,肉眼在默认视角很难发现。一定要进入剖视模式或者用检查功能跑一遍。
prompt 写得太抽象:只写"设计一个支架"跟写"给我一个 60x40x5 带四角孔的安装板",生成结果的可用性天差地别。对 AI 来说,信息密度决定结果质量。
6.3 给新人的三条上手建议
如果你是第一次接触 text-to-cad,我给三条最务实的建议。
第一,先玩免费的商业 SaaS,比如 Zoo 的在线体验,花一晚上把各种描述方式试一遍,建立"AI 能干什么、不能干什么"的直觉。
第二,再从 CadQuery 学起。不用学深,会画 box、加孔、布尔运算、导出 STEP 就够用了。一旦你不依赖云服务也能跑通"prompt → 脚本 → STEP",你才算真正掌握了这条链路。
第三,养成"工程化写 prompt"的习惯。把需求拆成:零件类型 + 外形尺寸 + 关键特征 + 固定方式 + 标准件规格 + 材料和壁厚。这个习惯越早建立,后面用任何类似工具都受益。
最后再分享一点我自己的体会:text-to-cad 这波工具,最大的意义不是替代设计师,而是把"从模糊需求到第一版实体模型"这个最耗时的阶段,压缩到了分钟级。以前我脑子里有个大概想法,可能要等坐到电脑前、打开 CAD、新建文件、画草图,一步一步磨半小时才能看到雏形;现在我可以先让 AI 出一版大致形状,然后在它基础上精修。
如果你刚开始接触,建议先从一个最简单的安装板开始,把整个流程走通。等你习惯了这套工作方式,再去拆解复杂零件,你会发现很多原本觉得繁琐的结构,现在都能快速搭出骨架,省下的时间足够你去研究真正值得动脑的细节。