Text-to-CAD:从自然语言到三维模型的AI辅助设计与参数化建模
我不是一个喜欢追热词的人但 text-to-cad 这个方向从它第一次出现在我信息流里开始我就在持续跟踪。原因很朴素做了多年非标设计和快速打样我最耗时间的环节往往不是加工而是把一句需求描述翻译成图纸。客户说要一个能卡在 4040 铝型材上的传感器支架工程师得自己脑补安装槽、螺栓孔位、壁厚再一版一版调。text-to-cad 想解决的正是这个从语言到几何的翻译过程。如果你还没接触过它可以先记住最基础的定义text-to-cad 是一类把自然语言描述转换成三维 CAD 模型的工具或算法。它适合三类人——经常做概念方案的工程师、需要快速生成维修备件的设备管理人员、想探索 AI 辅助设计边界的建模爱好者。对新手来说它也是理解AI 如何理解空间几何的一个直观窗口。以我最近在评估的一个项目为例一句话外径 60 的圆柱体中心开直径 20 的贯穿孔四周均匀分布 4 个 M4 螺纹孔用传统流程至少三五分钟加上参数调整、出工程图半小时就没了。text-to-cad 可以在几十秒内给出一版可用的实体模型虽然细节不会一步到位但从零到一的时间确实被压了一个数量级。1. 整体设计与思路拆解1.1 从语言到模型到底发生了什么text-to-cad 的输入是一句话输出是一个几何模型中间的转换过程可以拆成两个环节语义理解和几何生成。语义理解并不是简单做关键词匹配因为自然语言里充满了模糊表达和隐含知识。拿一个常规尺寸的 M6 螺栓举例人知道 M6 对应螺纹大径 6mm、标准螺距 1mm、头部尺寸参考国标但模型必须先在训练阶段掌握这些背景才能把常规映射成一组具体的数值。几何生成侧目前最主流也最成熟的方案是让算法先输出一段可执行的建模脚本而不是直接吐网格。它把参数识别和特征序列生成拆开大语言模型负责从文本中抽取出尺寸、位置、拓扑关系然后调用 CadQuery、OpenSCAD 这类程序化建模库用脚本里的参数构建实体最终导出 STEP 或 STL。这个路线的好处是输出天然就是参数化模型可以继续编辑尺寸和特征不需要像处理网格模型那样从头翻译一遍。这背后的逻辑本质上和你在 SolidWorks 里建模是同一件事。建任何一个零件留下的特征树无非是先画草图—拉伸—打孔—倒角每一步都有参数和父子依赖。CadQuery 这类库把特征树变成代码text-to-cad 要做的则是从自然语言推断这棵特征树应该长什么样。所以它不是画一张图而是在猜一份合理的建模流程严谨程度完全不同于像素生成。当然市面上也有端到端方案直接预测体素、网格或隐式函数。这类方案对自由曲面和复杂造型有优势但缺乏拓扑语义后期修改困难精度常常不稳定。我看到的实际落地产品更多采用混合路线大语言模型做语义解析程序化建模负责生成实体。1.2 三条落地路径选型之前先搞清楚现在 text-to-cad 的实现思路可以概括为三条路线理解它们有助于你判断不同工具之间的差异。路线核心做法输出形式优势短板代码生成LLM 写 CadQuery/OpenSCAD 脚本并执行STEP、脚本可编辑、精度高自由曲面表达能力弱检索增强语义搜索模型库再改写参数已有模型变体稳定、可控依赖模型库覆盖度端到端生成神经网络直接输出网格或隐式表示网格、SDF造型能力强难编辑、精度不稳代码生成路线是当前最贴近工程实践的选择。原因很现实我们拿到模型后无论做 CAM 编程、有限元分析还是出工程图都需要拓扑干净的可编辑实体。网格模型在可视化时没问题但进入制造环节破面、非流形、尺寸偏差都会让人崩溃。参数化脚本至少保证了能改比看起来像重要得多。检索增强路线适合企业已经有大量历史模型库的场景。它通过向量检索召回相似模型再用自然语言改参数。好处是结果稳定因为几何来源都是验证过的坏处是遇到库外的新结构基本无能为力。端到端生成目前更多停留在研究和创意阶段适合自由造型探索不太适合直接进制造流程。1.3 为什么它不是AI 画图text-to-cad 和日常刷到的一句话生成 3D 模型其实不是一回事。平面图像生成模型只需要学会视觉上的合理性颜色、纹理、轮廓说得过去就行。CAD 模型不一样它必须满足严格的几何约束两个面要平行孔要贯通尺寸要能对上工程图标准零件要能装配。前者追求像后者追求能用。这就要求模型具备精确的几何推理能力。举个例子两个圆角的圆柱体中间有一个偏心的通孔。这句话里偏心是相对哪根轴偏多少通孔直径多少在自然语言里全是未知数。大语言模型通常会把这些不确定性平均成一个看着合理的猜测但工程上不允许猜。所以做 text-to-cad 的工具几乎都会做两件事用结构化输出约束语言模型把最终几何生成交给确定性算法。理解这一点你对生成结果就会有合理预期。它不会替代工程师做判断但能大幅压缩从语言到第一个实体模型的路径。2. 核心技术细节与实操要点2.1 提示词怎么写模型才能听懂先看两个例子。第一种做一个简单的法兰盘。这种说法信息量太低模型只能随机生成一堆特征运气好有个圆形运气差可能给你一个方形底座。第二种外径 60mm内径 25mm厚度 8mm 的法兰盘外圈均布 6 个直径 6.5mm 的通孔孔心到法兰圆心距离 28mm。这已经是完整的工程描述了和你在 CAD 里准备拉伸草图前思考的内容几乎一致。写提示词时我建议遵循以下原则所有尺寸都带单位并且在描述里明确说明单位均为毫米。先描述主体外形和整体尺寸再描述特征最后才说表面处理和细节。使用工程标准命名M4 螺纹孔、沉头孔、通孔、均布、对称。显式描述重复和对称关系绕圆心均匀分布左右两侧各一个。把最关键的约束和公差放在 prompt 尾部比如所有孔轴线必须与法兰端面垂直。还有一个我反复验证过的技巧在 prompt 开头加一句你需要生成可执行的参数化建模代码会让部分模型更倾向于输出结构化内容而不是泛泛的文本解释。如果工具支持系统提示词这个方法尤其有效。2.2 模型表征的取舍网格、B-rep 与 CSG代码生成类工具最终产出 STEP 文件这个格式底层是 B-rep 边界表示用数学曲面描述实体边界适合精确建模。端到端生成类工具多输出 STL 网格用三角形面片拼出外形适合 3D 打印可视化但精度和编辑能力有限。CSG 则是另一种思路把模型描述成若干个基本体的布尔运算比如一个圆柱减去一个小圆柱得到带孔的法兰盘。理解这些区别有个简单类比B-rep 像用解析几何精确描述苹果表皮网格像用无数小塑料片拼出苹果外形CSG 像记录用一个球削掉几块再接一根圆柱形果柄的完整操作步骤。在 text-to-cad 里代码生成路线本质是在构建 CSG 树因为 CadQuery 底层就是 Open Cascade执行完脚本后得到带拓扑的 B-rep 实体。这是它适合制造的根本原因。2.3 精度与可控性绕不开的两个坎第一个坎是单位。生成工具经常默认英寸你输入 50它可能输出 50 英寸或者 50 个单位导入 CAD 后尺寸完全不对。所以我会在 prompt 里写所有尺寸单位为毫米并且在导入后立即用测量工具验证包围盒尺寸。第二个坎是生成参数。如果是本地跑开源模型温度参数对结果影响非常大。温度过高生成的建模代码容易出现语法错误和不可执行温度过低结果会很保守失去多样性。我自己的经验是把温度控制在 0.2 到 0.4 之间优先保证代码可执行再考虑多样性。另外固定随机种子可以让相同 prompt 生成一致结果这对需要复现的工程场景很重要。精度问题还会体现在特征识别上。模型可能把M4 螺纹孔生成成直径 4mm 的光孔因为训练数据里没有螺纹知识。遇到这种情况我一般会接受光孔几何然后在 CAD 里用标准孔工具重新做螺纹孔特征。与其花时间让模型理解螺纹不如把确定性操作留给确定性的工具。3. 实操过程与核心环节实现3.1 工具选型从哪些维度判断我前后对比过几类工具简单总结一下取舍。这里不具体点名因为这类项目迭代很快按能力维度选更容易匹配需求。方案类型典型形态上手难度输出格式最适合在线 text-to-cad 服务网页提交 prompt低STEP/STL快速概念验证本地 LLM CadQueryPython 脚本中STEP定制化、隐私要求高本地 LLM OpenSCAD脚本生成中STL/3MF程序化建模爱好者端到端生成模型推理框架高网格研究、复杂造型选择时把握几个原则先确定最终用途是制造还是展示制造场景优先选输出 STEP 的方案如果企业有数据合规需求选能本地部署的开源方案如果只是想快速体验效果直接用在线服务就行不用一上来就搭本地环境。3.2 从安装到导出模型的完整流程我用一个通用流程说明具体命令和按钮名称会因工具而异但思路是一致的。第一步准备描述。把你需要的零件用工程语言写清楚包括主要几何、尺寸、特征和约束。我通常会先在记事本里写一遍再精简到两到三句话避免啰嗦导致关键信息被稀释。第二步提交任务。在工具的输入框里粘贴 prompt选择输出格式STEP 或 STL设置单位毫米。如果是 CLI 工具一般有参数可以指定输出格式和单位。第三步等待生成并观察日志。很多服务会把生成过程分成几个阶段比如正在解析参数正在生成脚本正在构建几何。这一步值得盯着看因为你能从中判断模型有没有正确理解你的要求。如果日志显示检测到圆柱体、法兰盘、6 个孔大概率结果是靠谱的。第四步预览检查。生成完成后查看 3D 预览重点看整体形状是不是你想要的孔的个数对不对有没有明显破面或悬空特征。第五步导出文件。选择 STEP 格式下载到本地。如果你用的是本地脚本方案执行完脚本后会直接生成 STEP 文件。第六步在 CAD 软件里验证。用 FreeCAD 或 SolidWorks 打开 STEP用测量工具量一下关键尺寸检查单位、位置关系是否符合预期。这个环节别跳我见过太多人跳过验证直接去 3D 打印结果整个零件比例错乱。3.3 后处理把生成模型真正用起来如果你的最终产出是用于 CNC 加工或装配STEP 文件通常可以直接用但可能还是需要做一些处理。最常见的是单位转换。如果生成的模型是以英寸为单位在 FreeCAD 里可以通过缩放操作统一转换为毫米比例因子 25.4。不要手动一个个尺寸改直接整体缩放再检查。如果输出是 STL 网格需要用网格修复工具整理。Blender 的3D 打印工具箱插件可以一键检测和修复非流形边、相交面、空洞。Meshlab 也可以做类似工作但界面比较旧新手用 Blender 更友好。修复完再检查一遍包围盒尺寸确认无变形。还有一个实际生产中很关键的思路不要把 text-to-cad 的输出当成最终零件而是当成第一个版本或设计草稿。把它导入 CAD 后重新用参数化特征重建一遍花的时间会远远少于从零开始建模。这就像写代码时先让 AI 生成一个能运行的骨架剩下的重构和优化你自己来。4. 常见问题与排查技巧实录4.1 输出模型不闭合怎么办表现是导入 STEP 文件时提示破面或者 3D 打印切片时出现空洞。这种情况在网格输出里更常见但参数化脚本方案也会遇到。排查顺序先确认导出格式是否选错STEP 和 STL 的拓扑容错完全不同然后用 Meshlab 统计边界边数量边界边大于零说明模型不闭合再用 Blender 的 3D 打印工具箱执行Make Manifold修复。我踩过的坑里最典型的是生成包含大尺寸主体 极薄凸台的组合时布尔运算容易产生退化几何。后来我会刻意在 prompt 里避免极端壁厚比比如不让模型生成壁厚 0.1mm 的筋板优先保证几何稳定性。4.2 尺寸和位置关系偏离很多人第一次用都会遇到明明说 50mm生成出来却是 5mm或者变成了英寸。先检查 prompt 里是否明确写了单位再看工具设置里单位是否是毫米最后用 CAD 的测量工具复核。如果生成的是参数化脚本可以直接在脚本里改参数然后重新执行比在 CAD 里手工缩放要优雅得多。位置关系的问题通常和隐式坐标有关。比如偏心孔这类描述模型往往默认偏心是往 X 方向偏 5mm但你的预期可能是往 Y 方向偏。解决方法是把坐标关系写死孔心位于法兰圆心沿 X 轴正方向偏移 8mm 处。凡是你能想到的几何关系写得越明确越好。4.3 生成结果太模板化如果你发现不同 prompt 生成的结果长得很像多半是模型训练集覆盖不够或者生成参数太保守。先尝试调高温度参数增加结构多样性再尝试更换描述中的特征词比如把凸台换成圆台或突出环如果工具支持还可以用随机种子做多次生成挑选最符合预期的。更进一步的解法是微调。如果你的公司有大量历史零件模型可以把这些模型转成参数化脚本整理成训练集做模型微调。这个门槛比较高不是所有团队都适合但效果确实显著生成的模型会和你的产品风格非常接近。4.4 避坑心得汇总不要指望一次生成出完美模型把它当可修改的草稿。不要用口语化描述要用工程语言明确单位、尺寸和拓扑。生成的脚本一定要备份因为每次生成结果都可能不同。导入 CAD 后立即做尺寸测量不要凭肉眼判断。优先选择能输出 STEP 的工具STL 更适合展示和打印不适合制造。这些经验听起来琐碎但每个都对应着真实的加班时间。我早期用这类工具时因为没做单位验证直接打印了一个直径缩水 25.4 倍的零件整个下午都用来分析原因了。5. 应用场景与工作流整合建议5.1 哪些场景真正适合用 text-to-cad第一个是概念方案阶段。做智能硬件或者非标装备时前期经常要快速出几个外形方案供评审。用自然语言生成三五个候选模型筛出合理的再进精建模效率会明显提升。第二个是维修备件重建。设备上有个塑料件坏了没有图纸只有使用场景描述。工程师可以用 text-to-cad 先出一个大致形状再拿卡尺测量关键尺寸后修正。这比从零手绘快很多。第三个是教学演示。给新人讲参数化建模思路时可以用 text-to-cad 展示一句话需求如何变成特征树。它让新手直观感受到建模的核心不是操作软件而是理清几何关系。5.2 如何嵌入现有研发和生产流程我目前的成熟工作流是这样的在设计前期用 text-to-cad 快速生成多个候选方案输出 STEP然后在 FreeCAD 或 SolidWorks 里打开评估装配关系挑出可行方案挑中之后用传统参数化建模重做关键特征最后进入 CAM 编程和生产验证。也就是说它承担的是方案发散和早期设计评审的角色而不是最终出图的角色。如果你们公司有 PLM 系统可以考虑把每次生成用的 prompt 和对应的输出模型一起存下来。这不只是存档更是一种可复用的设计经验。下次遇到类似需求直接改几个参数重新生成就行。5.3 我个人的一点体会我自己在夹具设计里用得最顺手。以前给产线做一个传感器安装支架从量尺寸、画图到出 STEP一个上午是打底的。现在先用 text-to-cad 出外形再在 CAD 里加上安装孔和避空位一小时以内就能给到加工。虽然 AI 生成的细节还不能直接上机床但它把最耗精力的从无到有部分解决了剩下的工作反而像在已有框架上做优化。最后再分享一个习惯我会把常用的、生成效果好的 prompt 整理成一个模板库按零件类型分类比如法兰盘支架底座电机安装板。下次遇到同类需求直接调模板改参数比每次从零开始写 prompt 稳定得多。这个习惯花的时间很少但长期收益非常大。