☰
text-to-cad实战:从自然语言到可编辑STEP模型的完整流程与工具选型
2026/10/8 16:29:11 网站建设 项目流程

今年我把 text-to-cad 这个方向前前后后折腾了好几个月,最大的感受是:它确实不是噱头,但也不是"一句话替代设计师"的科幻剧情。简单说,text-to-cad 就是让你用自然语言描述(比如"生成一个带四个腰型槽的安装底座"),让 AI 输出可编辑的 CAD 实体模型,甚至直接给你一个 STEP 文件。这篇文章把我实际试过的技术路线、工具选型、踩坑经历都整理出来,给准备切入 CAD + AI 方向的机械设计、建筑画图、3D 打印玩家做一个还算详细的参考。

先说个结论:如果你以为输入"帮我画一个减速器"就能拿到完整装配体,趁早打消这个念头。以现在的成熟度,text-to-cad 更适合做概念草图、前期方案比选、以及给完全不会 CAD 的人一个快速起点。真正能用得顺手的人,往往是那些本来就懂 CAD、愿意把 AI 生成的模型拿回来修的人。下面展开聊。

1. 先搞清楚:text-to-cad 到底在解决什么问题

1.1 不是"自动画图",是"把语言翻译成几何"

传统 CAD 的工作流是草图、约束、拉伸、切除、倒角、装配,每一步都需要人手动完成。哪怕你非常熟练,把一个脑子里的想法变成三维实体,也得十几分钟起步。text-to-cad 的工作方式完全反过来:你负责描述,模型负责把文字转成几何数据。

这里要区分两类输出:

  • 网格模型(Mesh):类似游戏模型,由三角面片组成,看着像一回事,但没法直接用于机械加工或二次编辑。
  • 实体模型(B-rep / STEP):由 CAD 内核里的拓扑信息描述,有面、边、孔、倒角等特征,能回到 FreeCAD、中望 CAD、AutoCAD 这类软件里继续改。

目前很多演示视频里生成的是网格,真正能用的 text-to-cad 工具会把结果转成 STEP 或至少转成可重建的脚本。这个区别直接决定了生成的文件是摆设还是真能干活。

从使用场景看,text-to-cad 最密集的应用方向有三个:一是工业设计初期的概念验证,二是给不会 CAD 的创客/3D 打印爱好者提供快速建模入口,三是教育场景里帮助学生理解"几何描述到实体生成"的思考过程。在这些场景里,核心需求不是"精确",而是"快"。

1.2 概念设计与制造级模型的差距还很大

我说句实在话,现阶段大多数 text-to-cad 工具生成的模型,拿来比划比划完全没问题,但要直接进加工车间,还差得远。为什么?因为真实零件不只有形状,还有尺寸公差、表面粗糙度、螺纹标注、材料信息,甚至加工工艺约束。这些信息藏在工程图里,AI 目前既没有能力帮你做受力分析,也不知道你这根轴后面要配什么轴承。

所以我的观点是:text-to-cad 解决的是"从文字到几何"的鸿沟,而不是"从几何到制造"的鸿沟。后者仍然是传统 CAD/CAE 软件的天下。凡是宣传"一句话出工程图"的,我建议你把期待值调到 30%。

2. 扒一扒实现路线:三条主流技术流派

2.1 文本生成代码,用 CAD 内核重建

这个思路很好理解:你给一大段自然语言,LLM 把它翻译成一段 CAD 脚本(比如 OpenSCAD、CadQuery 或 FreeCAD 的 Python API),然后在本地用参数化内核执行脚本,生成真正的实体模型。

拿 CadQuery 举例,它的几何构建方式是"从面出发,一步步画草图和拉伸"。假设提示词是"生成一个长 40mm、宽 30mm、高 10mm 的盒子,上表面中心有一个直径 8mm 的通孔",大模型可以写成:

import cadquery as cq box = cq.Workplane("XY").box(40, 30, 10) box = box.faces(">Z").workplane().center(0, 0).hole(8) cq.exporters.export(box, "output.step")

这段代码执行后输出一个带孔实体的 STEP 文件,尺寸精确、拓扑干净,可以直接导入任何主流 CAD 软件。这就是"文本转代码再转 CAD"的典型流程。

这个流派最大的优势是:结果天然是可控的参数化模型。因为代码就是参数,改一个数字就是改一个尺寸,生成的每种特征都由 CAD 内核验证过,不会出现破面或非流形体。缺点也很明显——只适合规则几何体,遇到自由曲面就得换路子。

2.2 文本生成三维张量,再把点云变成曲面

这个流派跟 AI 画画更像。文本首先被编码成条件向量,喂给扩散模型或自回归模型,模型输出体素、点云或者神经辐射场(NeRF)。这些原始表示不能直接当 CAD 用,后面还要经过一个"曲面重建"步骤,变成网格,再尝试转成 B-rep 实体。

我测过几个开源模型,比如 Shap-E 和 Point-E。它们生成一个小兔子、一把椅子、一个花瓶都挺像样,但你要量一下尺寸,大概率惨不忍睹,因为这类模型根本不对齐坐标轴,也没有尺寸概念。从点云重建 B-rep 更是世界级难题,市面上大部分工具宁可只给你 STL 网格,也不碰 STEP 转换。

但你别说它没用。外观设计、概念雕塑、快速演示,这类场景里"像"比"准"重要。我先让模型出一个大致的体量块,再拿回 FreeCAD 里用曲面工具重新描一遍轮廓,效率反而比从零开始拉曲线高。它的定位是"灵感生成器",不是"出图工具"。

2.3 基于零件库的检索匹配与特征组合

第三种思路比较取巧:提前给常见零件建好带文字描述的库(比如法兰、轴承座、支架),输入提示词时先做语义检索,找到最相似的几个零件,再把它们组合成装配或直接把特征拼到一起。

这样做的好处是精度高、速度快,还能保证生成结果在制造可行性上不出大错。缺点是库里没有的东西它变不出来。很多工业级 AI 建模产品会用这个路线做兜底,以提升成功率。对个人用户来说,这个流派最适合做标准件选型和装配方案预览。

2.4 从生成结果到可用模型,为什么总要"整形"

不管是扩散模型还是检索组合,最终落到 CAD 里都会遇到一个绕不开的问题:拓扑修复。点云重建的网格常有破洞、交叉面、零厚度边;体素转实体又容易出现阶梯效应;多特征布林运算时还可能出现"该切掉的没切掉,不该切的少了一块"。

你可以把这一步理解为:AI 用泥巴捏了个坯子,你还需要拿刮刀把它修出精确的棱角。所以我在实操流程里永远留一个"几何修复"环节,工具主要用 FreeCAD 的 Part 菜单里的"修复形状"或者 Blender 的网格清理插件。养成这个习惯之后,text-to-cad 出活率会高很多。

3. 现阶段能落地的工具和我的选型

3.1 我测过的几个 text-to-cad 方向的代表项目

这里不吹不黑,只说我真实测过的方案,按易用性排序。

工具 / 项目输出格式上手难度适合场景主要坑
CadQuery + LLM(自建流程)STEP / BREP中规则机械零件、标准件组合需要写一点 Python,提示词要讲究
Zoo Text-to-CAD(网页端)STEP / 3MF低概念设计、快速出形状生成速度不稳,复杂描述容易翻车
Shap-E / Point-E(开源模型)STL / PLY 网格高外观形状探索、概念造型尺寸乱、拓扑烂,需要大量修复
Tinkercad + AI 插件思路模型/STL低教育、极简单体只支持非常基础的特征
FreeCAD 的 Python 宏 + LLMSTEP中需要精确控制的零件生成代码容易报错,需要反复调

我重点推荐两种组合:如果你要做机械类零件,走 CadQuery + LLM 路线;如果只是做外形概念,用 Zoo Text-to-CAD 这种网页端先出形状,再导出 STL 做后期处理。

3.2 不同场景的选型原则

选工具不是越贵越好,而是匹配需求。你要先问自己三个问题。

第一个问题:输出需不需要回到专业 CAD 里改?需要就选能出 STEP 的工具,不要选只能导 STL 的,不然你导入 AutoCAD 或中望 CAD 后会发现它只是个"实心的网格壳",根本无法编辑特征。

第二个问题:你更在乎"形状像"还是"尺寸准"?形状像就交给扩散模型,尺寸准则必须走参数化脚本路线。我用 CadQuery 生成过自带安装孔和圆角的底座,所有尺寸都严丝合缝对上;同样的话术丢给扩散模型,它只会给我一块"看起来像底座但孔位完全随机"的疙瘩。

第三个问题:你的耐心和修复能力有多少?如果你只会双击打开 CAD、对曲面修复一无所知,那就老实选工具内置模板;如果愿意花半小时修拓扑,扩散模型反而能打开更多创意空间。

4. 亲手做一遍:从一句描述到可编辑的 STEP 文件

4.1 环境准备与一个最小可跑的 Demo

我这里演示一个完全开源的流程:本地安装 CadQuery,再用大模型 API 写生成脚本。你不需要多高的显卡,CadQuery 是纯 CPU 计算,普通笔记本就能跑。

先安装依赖:

pip install cadquery

然后写一个最简化的入口脚本,把我们想要的自然语言描述通过提示词传给大模型,拿到返回的 Python 代码后再执行:

import os import cadquery as cq import openai def text_to_cad(description, api_key): openai.api_key = api_key prompt = f""" 你是CAD脚本工程师。请将用户描述转换为CadQuery Python代码。 要求: 1. 使用cadquery库 2. 代码必须可以独立运行 3. 最终用cq.exporters.export(part, "output.step")导出STEP 4. 所有尺寸显式写明,单位毫米 用户描述:{description} """ resp = openai.ChatCompletion.create( model="gpt-4o-mini", # 也可以换成本地开源模型 messages=[{"role": "user", "content": prompt}] ) code = resp["choices"][0]["message"]["content"] # 清理代码块 code = code.strip() if code.startswith("```python"): code = code[9:] if code.endswith("```"): code = code[:-3] exec(compile(code, "<generated>", "exec"), {}) return code

这里有个细节要注意:给大模型的提示词里一定要写"所有尺寸显式标明,单位毫米",否则它可能在代码里用 1 当 10 用,出来的零件不是你想要的大小。

4.2 提示词这样写,出来的模型才像样

text-to-cad 成不成,提示词占七成功力。我踩了很多次坑之后,总结出一个通用模板:

生成一个[零件类型], 主体尺寸为[长]x[宽]x[高]毫米, 在[指定位置]添加[特征类型],特征参数为[关键尺寸],位置相对于[参考面/原点], 其他加工面需要做到[圆角/倒角/螺纹等], 导出为STEP文件。

举个例子,实际我常用的描述:

生成一个L形支架,主体长60mm宽40mm高10mm,竖直部分高35mm厚度8mm, 底面有四个直径6mm的安装通孔,孔位于四角距边缘10mm处, 所有外轮廓边倒角1mm,导出为STEP文件。

这样写的好处是信息密度高,模型不用去猜"L形支架"具体长什么样。现实是,同一个"L形支架"在不同人脑子里尺寸完全不同,所以你不想让它自由发挥的地方就全部写死。

4.3 生成代码并执行

大模型返回的 CadQuery 代码经常会有小问题,比如把faces(">Z")写成faces("z"),或漏掉最终导出语句。我自己会给模型提一个附加要求:"先写完整代码,再写一行 seelf-check 说明"。不过就算这样,也不能保证一次通过。

一个非常实用的做法是:把 exec 包在 try/except 里,如果报错就把错误信息重新塞给大模型,让它修一版。这类似于"AI 生成 + 人工反馈"的闭环。

try: exec(compile(code, "<generated>", "exec"), {}) except Exception as e: fix_prompt = f"代码运行报错:{e},请修复并重新输出完整代码。" # 再调用一次模型修复

我实际测试中,一个中等复杂度的零件(有主体、有孔、有倒角),平均需要 2~3 轮修复才能跑通。这不算麻烦,关键是每轮错误信息都很明确,修起来快。

4.4 生成后导入传统 CAD 并转成工程图

CadQuery 导出的 STEP 文件可以直接拖进 FreeCAD、中望 CAD、SolidWorks 或 AutoCAD。这里以 FreeCAD 为例:

  1. 打开 FreeCAD,新建一个文件。
  2. 菜单"文件 -> 导入",选择刚才生成的output.step。
  3. 导入后模型会在"部件"工作台下显示为一个实体对象。选中它,检查"属性 -> 形状"是否是 Solid。
  4. 然后切换到"技术绘图"工作台,新建一个 A4 图纸页面,把模型拖到视图上,添加尺寸标注。
  5. 最后导出 PDF 或 DXF,这就是一份能给别人看的工程图。

很多网友搜"cad 导入 layout 步骤详解",其实跟这个流程是一回事。AI 生成的模型并不特殊,导入后它就是普通几何体。你唯一要注意的是单位,如果 CadQuery 代码写的是毫米,但 FreeCAD 导入后变成 20 米,说明导入单位设置不一致,直接在导入设置里改成毫米就好。

5. 实操中踩过的坑:问题排查速查

5.1 最常见的 8 个问题和解决步骤

我把这段时间反复遇到的问题整理成了表格,每一条都是真金白银的教训。

症状可能原因解决步骤
生成的 STEP 导入 CAD 后是"空的"导出路径没写对,或代码没执行导出语句检查cq.exporters.export是否执行,路径是否带.step后缀
模型尺寸完全不对,比如单位变成米没在提示词里指定毫米,或导入设置错提示词写"单位毫米",导入时按毫米导入
孔的位置偏了或漏了提示词里的"四角距边缘10mm"语义有歧义换成"四个孔中心坐标分别为 (10,10), (50,10), (10,30), (50,30)"这种明确坐标
布尔运算失败,特征加不上去草图平面选错了,面不在预期的面上检查.faces(">Z")是否正确;改成faces(">Z or >Y")重新试
模型有破面或不是实体扩散模型生成的是网格,不是 B-rep在 CAD 里先做"网格转实体";或是改用 CadQuery 路线
大模型生成代码里混入无关文本提示词不够强,它返回了解释文字解析代码块时只取 ```python 中间内容;加强提示词
AI 输出的代码用了不存在的函数训练数据包含旧版 API在提示词里加上"只使用 cadquery 当前稳定版本的函数"
生成过程很慢,CPU 一直满载模型本身复杂,CadQuery 重建实体耗时不是报错,耐心等;复杂造型拆分成多个小特征

5.2 "圆角命令用不了"这类经典 CAD 坑,在 AI 模型里也会遇到

很多 CAD 用户搜过"cad 里面 f 命令用不了",其实这问题我在 text-to-cad 流程中也遇到过。大模型生成一个带圆角的零件,我用 FreeCAD 打开后想再倒一个角,结果命令没反应。

原因通常是:导入的 STEP 虽然看着是实体,但内部某些边已经退化,或者模型是由多个壳拼接而成,没有统一成一个实体。解决方法是先在 CAD 里做"修复形状"(FreeCAD 的 Part 菜单里有),或者用"并集"把多个壳合并。这个步骤看起来多余,但能解决 90% 的"命令点不动"问题。

5.3 算力不够,怎么把 text-to-cad 用起来

很多人一听到 AI 3D 生成就觉得必须要有 4090 显卡。其实分工具。CadQuery 路线纯 CPU 就能跑,生成的代码量不大,对硬件几乎没要求。Shap-E 这类扩散模型确实需要 GPU,但 8GB 显存的显卡也能勉强跑,再低就建议直接用网页端工具,反正生成的是概念模型,不涉及本地隐私。

显存不够时有一个常见报错:CUDA out of memory。办法是把输入体素分辨率降低,比如从 128 降到 64;或者把模型推理的 batch size 设为 1。如果你用的是 Zoo 这类网页端,就没有这个烦恼,但你会遇到排队问题,高峰期可能要等几分钟。

6. 我的真实使用心得和后续扩展思路

6.1 什么项目我建议用 text-to-cad

从我个人的经验看,下面这几类项目用 text-to-cad 最划算。

第一类是给客户出方案前的前期比选。以前我要画三版外观方案,每个都从零开始,至少半天。现在用 text-to-cad 生成几种外形草图,再各花十分钟细化,提案效率翻倍。第二类是教学演示。我需要给学生展示"从需求描述到三维模型"的完整链路,text-to-cad 本身就是最好的教具。第三类是3D 打印的快速原型。只要不要求高精度,很多外壳、支架类零件直接让 AI 生成 STL,切片打印,够用了。

反过来,需要严格尺寸控制、强度校核、配合公差的项目,我不建议用。比如齿轮轴、壳体密封面、需要和气缸配合的零件,老老实实手画吧。

6.2 后续可以怎么扩展

如果你已经跑通上面这条流程,还可以往三个方向深入。

一是自建零件描述库。把你们公司常用零件整理成"描述- CadQuery 代码"对,再塞给本地模型做微调,之后的生成成功率会明显提高。

二是结合拓扑优化。先让 text-to-cad 出初始结构,再用仿真软件做拓扑优化,把 AI 生成的概念变成一个真正满足力学性能的设计。

三是给提示词加约束规则。比如把"必须使用 45 号钢可加工的特征"写到系统提示词里,让大模型避开过于诡异的悬臂结构或极薄壁厚。这能大幅减少"生成出来但根本没法加工"的尴尬。

我在实际使用中发现,text-to-cad 最大的价值不是把你变成 CAD 高手,而是把"想法的第一次落地"这个环节压缩到了分钟级。哪怕后面那些修正工作依然要靠人,前面的启动成本已经低到可以随时做头脑风暴了。所以我的建议是,别等工具完美,先把它当成一个可控的"智能草图助手",今天就可以拿简单的支架、法兰、盒子去试。试完你会对"AI 能帮工程师做什么"有更具体的答案。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询