
从去年底开始“text-to-cad”这个词在我关注的几个技术社区里频繁出现。一开始我以为是又一个“输入一句话就能生成3D模型”的玩具直到自己动手跑了一圈开源方案、对比了几款在线工具才发现这个方向跟我想象的完全不一样它不是在生成一张好看的渲染图而是真的在生成一段可以被CAD软件读取、修改、继续编辑的建模过程。这篇文章我想从“为什么需要text-to-cad”“它到底是怎么工作的”“现在有哪些工具能用”“真正落地时会踩哪些坑”这几个角度把我这段时间实验得到的经验和教训完整写出来。不管你是做机械设计的、搞3D打印的还是只是对AI辅助设计感兴趣这篇应该都能给你一些实际参考。1. Text-to-CAD是什么以及它解决的真正问题1.1 为什么CAD建模的门槛一直降不下来传统CAD建模的门槛不在“画图”本身而在“把脑子里的三维想法拆解成一串软件能理解的二维操作步骤”。比如你在SolidWorks或Fusion 360里画一个法兰盘脑子里想的可能只是一句话——“带四个安装孔的圆盘”但软件要求你做的是选择基准面、画草图、标注尺寸、约束圆心、拉伸凸台、阵列孔位、倒角……每一个环节错了后续都得返工。这就像会做菜的人知道“西红柿炒蛋”是什么但你要把这道菜的步骤写成一份精确到克、精确到秒的食谱并且让一个完全没做过饭的人照着做出来。CAD的学习曲线陡峭本质上是“语言翻译”在消耗认知资源而不是设计能力在起作用。text-to-cad想做的事情就是跳过中间那层“手把手操作软件”的翻译过程你直接说“我要一个带四个安装孔的法兰盘外径80毫米”AI负责把这句自然语言翻译成CAD软件能理解的建模命令序列然后在后台把模型生成出来。1.2 生成3D模型不等于生成CAD这一点必须首先搞清楚否则后面所有讨论都会跑偏。现在市面上大部分AI 3D生成工具包括Diffusion模型那类生成的是mesh网格体也就是一堆三角形面拼出来的外形。网格体有两个致命问题第一它不是参数化的你没法改一个“直径”就整体更新第二它没有特征树没法回到“拉伸那一步”去修改草图。打个比方mesh像是用泥巴捏出来的雕塑看着像那么回事但你想把耳朵从左边移到右边只能重捏没法“改参数”。真正的CAD模型是B-Rep边界表示 特征树的组合体。建模过程中软件记录的是“从草图到拉伸到切槽到阵列”这一整条操作链路。要编辑、要出工程图、要配合装配体都需要这个原始的建模逻辑。text-to-cad的核心目标是直接生成这种带特征的CAD模型而不是生成一个漂亮的三角网格。1.3 “text-to-CAD”的确切定义所以严格来说text-to-cad应该叫“text-to-CAD-construction-sequence”即从自然语言直接生成CAD建模序列。生成结果通常是一份类似JSON的命令列表里面包含坐标系、草图几何直线、圆弧、圆心、拉伸距离、布尔运算类型、倒角半径等参数。CAD软件拿到这份序列可以在自己的环境中完整重建出模型并且重建出来的东西是“活”的——你可以改动尺寸、隐藏特征、调整顺序它仍然正常更新。理解了这层你就能明白为什么这个方向的论文和工具都在谈“可编辑性”而不是“逼真度”。我们要的不是一个能看的三维外观而是一个能改、能出图、能下厂的CAD源文件。2. 核心生成机制从自然语言到CAD命令序列很多人以为text-to-cad是把文字扔进一个图像生成模型输出一个3D文件。实际情况完全不是这样。当前主流的实现思路是把“生成CAD模型”当成“预测一段建模命令序列”的自然语言处理任务。2.1 先把CAD模型拆解成“建模操作”2019年之后Autodesk Research等机构开源了DeepCAD数据集里面收录了十几万个参数化CAD模型每个模型都保存成一条完整的建模命令序列。这些序列本质上记录了工程师在CAD软件里的操作先画哪个草图、拉伸多少、在哪切一个孔、倒角多大……整个模型被拆成一个有序的token列表。这条路走通之后CAD建模就从一个“几何问题”变成了“序列生成问题”。模型要学的不是如何计算曲面而是“在看到哪些条件时下一步应该执行什么操作”。我在实际跑相关代码时感受特别明显生成过程中模型是一步一步“挤牙膏”式地输出命令的。第一步输出Sketch命令定义草图平面和轮廓几何第二步输出Extrude命令告诉软件拉伸距离是多少第三步可能输出布尔运算切割或合并某些实体最后加上倒角、圆角等细节特征。整个输出序列有点像下棋每走一步都会影响后续所有选择。棋盘就是正在构建的CAD模型棋谱就是人类工程留下来的大量建模记录。2.2 文本怎么变成“条件”注入模型有了CAD命令序列还需要让模型理解自然语言。这个环节通常会用预训练的文本编码器类似CLIP或BERT这一类把“带四个安装孔的法兰盘”转成一个固定维度的向量。这个向量会通过cross-attention机制注入生成模型相当于给厨师递了一张“顾客点菜单”——厨师在动手做菜时每做一步都会对照这张菜单确保没有跑偏。在Text2CAD等开源项目中训练数据是这样构造的给DeepCAD里每个模型人工或半自动配上自然语言描述形成一对一的文本命令序列样本。训练时模型学习的是“当菜单出现某些关键词时序列输出应该如何变化”。这里有个细节值得说文本对生成结果的影响不是“整体风格控制”而是“逐步骤约束”。比如你提到“四个孔”模型不是事后复制粘贴四个孔而是在序列生成时自动决策出需要对圆形轮廓做四次阵列操作。这也是为什么text-to-cad的工具更贴近工程师逻辑而不是设计师逻辑。2.3 自回归生成与采样策略命令序列的生成大多采用自回归Transformer架构也就是一个token一个token地预测。每个token都是词汇表里的一个元素操作类型sketch/extrude/boolean/fillet等数值参数长度、角度、半径几何图元点、线、圆弧这个过程中数值参数的处理往往最麻烦。同样的“80毫米”在不同模型里可能对应不同的数值精度。训练时要先把实数离散化输出时再映射回真实尺寸。我在实验中遇到过一种非常典型的失真现象文本里说“厚度6毫米”生成出来却是一个7.1毫米的数值。后来查了一下才知道这是量化分桶的精度损失不是模型“没听懂”。采样阶段一般会用temperature或top-k控制随机性。太低的temperature会让模型每次都输出最保守的常用结构比如总是生成板类零件太高的temperature则会生成一些语义对不上、几何上自相交的怪东西。多尝试几次采样参数是让生成结果“既能对上文案、又有点新意”的关键。3. 可用的工具生态从学术开源到商业产品跑了一圈之后我发现“text-to-cad”这个词下面其实至少有三种完全不同的东西学术开源模型、浏览器端实验工具、以及面向工程场景的商业方案。搞清楚它们的定位差异比盲目下载代码重要得多。3.1 学术开源方案Text2CAD及其同类最典型的是2024年前后公开的Text2CAD项目。它基于DeepCAD数据集把自然语言描述和CAD建模序列对齐用自回归模型训练。开源代码和预训练权重都能在GitHub找到环境是PyTorch模型参数量在可以接受的范围一张消费级显卡就能跑推理。如果你有动手能力这个是最值得研究的样例。但要注意开源模型的目标是“跑通研究流程”并不意味着“开箱即用、效果惊艳”。实际生成成功率、和文本的语义对齐程度在目前阶段都只能算“学术水平”——能说明方法有效但离工程可用还有距离。3.2 浏览器端实验工具这类工具把text-to-cad封装成了“输入文字-等待-拿到模型文件”的网页服务。CADmium是比较有代表性的实验项目甚至把经典CAD软件的交互方式搬进了浏览器用户在左侧输入描述右侧就能看到生成的模型和特征树。浏览器端方案的优势是零安装、上手快适合先体验、验证自己的提示词思路。缺点也很明显可生成的模型复杂度有限数据隐私是个问题设计文件会传到服务器上商用授权边界不清晰。我只建议拿它做概念验证和头脑风暴不太建议把核心设计流程放上去。3.3 面向工程场景的商业方案商业产品近年来也开始把生成式AI接入CAD流程。市面上陆续出现了强调“对话式建模”的AI CAD工具宣传点基本都是“用自然语言驱动设计而不是手动建草图”。选择商业方案时我建议你重点关注三个事情评估维度应该问的问题输出格式导出的是STEP/原生CAD文件还是只有STL网格特征树质量生成的模型是否保留可编辑参数特征命名是否可读数据合规设计数据是否会上云有没有本地化部署方案这三个问题直接决定了“生成的模型能不能进入你的正式设计流程”。如果导出格式只有STL那它本质上还是mesh生成不能当CAD用。如果特征树一团乱麻参数全部锁死那每次修改都要回源生成工程上也没法接受。4. 让生成结果可用的提示词工程text-to-cad的提示词和写Midjourney提示词完全是两码事。生成图片时你可以说“赛博朋克风格、霓虹灯、雨天”模型会用视觉直觉帮你补全但生成CAD时模型需要精确理解几何约束、尺寸关系、特征操作没有一个具体的数字结果大概率是漂的。4.1 提示词的基本结构我实验下来一个可用的CAD提示词通常包含这么几层信息主体类型法兰盘、支架、外壳、齿轮……主要外形和尺寸外径80毫米高度30毫米壁厚3毫米关键特征4个直径10毫米的孔沿圆周均布特征之间的关系孔中心距边缘5毫米孔自下表面向上穿透可选细节倒角半径2毫米圆角过渡比如一个中用的提示词长这样一个圆盘形法兰外径80毫米内径40毫米厚度8毫米靠近边缘处有4个直径10毫米的通孔中心在直径70毫米的圆周上均匀分布外圈边缘倒角1毫米材料表面默认光滑。这句话里每一个数字都是生成器可以直接落地的参数。相比“给我做个法兰”这种模糊表达信息量完全不同。4.2 高信息量提示词 vs 低信息量提示词的实际对比我在跑Text2CAD的推理脚本时刻意做了对照组实验提示词类型输入示例生成效果低信息量“做一个支架”生成了随机尺寸的L形薄板孔位、壁厚全无参考中等信息量“做一个L形支架带两个孔”外形正确但孔距、孔径、厚度都不受控制高信息量“L形支架长边80毫米短边50毫米厚4毫米长边末端两个直径8毫米的孔孔心距边缘10毫米”生成结果的几何与提示词基本对齐可直接导入CAD微调结论很直接提示词里的数值密度是模型输出可控性的第一决定因素。你给的信息越多、越具体生成结果就越接近可用的CAD模型。4.3 描述建模动作而不只是描述形状还有一个容易被忽略的技巧尽量用CAD软件里的“操作词汇”来描述设计意图。比如“对这块板做阵列复制”“将圆柱体与底座做布尔求并”“沿中心轴旋转切除”这类表述生成器很容易把它映射成对应的建模命令。反而是“看起来很有科技感”“比较圆润”这种形容词生成器很难转译成具体的几何操作效果基本靠随机。我后来在写提示词时养成了一个习惯先把最终零件在脑子里拆解成“几次拉伸 几次切除 几次阵列 几次倒角”然后按这个顺序写提示词。这个思路本质上是把人类的建模直觉教给模型效果比单纯堆形容词稳定得多。5. 从生成模型到可用文件的实操工作流前面说的都是理论这里讲讲我实际跑通一遍完整流程的经历以及我建议你按什么步骤操作才能从“生成一个模型”走到“拿到一个能加工/能出图的CAD文件”。5.1 端到端流程概览我标准的操作链路是六步确定设计目标和约束尺寸、材料、装配关系按第4节的方法编写提示词并生成3~5个候选模型在预览器里做初步筛选确定几何外形基本正确导出STEP格式的中性文件导入SolidWorks/Fusion 360/FreeCAD清理特征树重建关键约束出工程图或直接切片打印每一步我都有自己的固定操作细节下面拆开说。5.2 导出格式选择STEP优先STL靠边站生成结果要进入CAD流程首要推荐STEP格式。STEP是B-Rep实体的标准交换格式几乎每个主流CAD软件都能无损导入。Stl格式只适合用来做渲染预览或3D打印切片千万不要拿它作为设计源文件。如果你要的只是3D打印手板STL或许够用但如果你要出装配体、要标注公差STEP几乎是唯一合理的选择。在开源模型的代码里通常有从序列生成实体并导出STEP的脚本。我一般是先用脚本生成模型再把STEP文件拖进FreeCAD检查。FreeCAD虽然界面糙一点但胜在免费且不会卡授权。检查重点很明确特征的绝对单位是否正确毫米还是英寸、孔位是不是真的在圆周上、拉伸方向有没有反。5.3 在传统CAD软件里做最后加工真正让生成结果成为“你的设计”的环节是清理特征树。AI生成的序列往往存在不少冗余操作比如两个本该合并为一个的草图、重复的布尔运算、多余的参考平面。直接拿这种文件去改尺寸大概率一改就崩。我的做法是先在特征树里把所有特征按“增材/减材”分类然后把增材的部分整理成干净的外轮廓减材的孔位用真实的阵列特征替换掉AI生成的重复切除。这个清理过程可能要花掉我二十分钟到一个小时但做完之后的文件才敢用。反过来说这也是当前text-to-cad无法替代CAD工程师的原因之一它能帮你把“蛋壳”快速敲出来但要把蛋壳变成一条干净的工程设计链路仍然需要人来兜底。6. 实际踩坑与应对策略这一节是我最想写的。很多文章喜欢把AI工具讲得无所不能实际用起来完全是另一种体验。下面这些坑是我在真实跑数据时逐一踩过的每条都附上了我的排查思路。6.1 生成的模型“看起来对却改不动”这是我遇到的第一个大坑。第一次用开源模型生成一个法兰盘预览时觉得外形完美四个孔位均匀分布在圆周上倒角也在位。结果导入Fusion 360想修改孔径从10毫米改成12毫米整个模型直接报错重生成失败。排查过程是这样的我先检查了特征树发现那个“四个孔”根本不是用了阵列特征而是模型先生成了一个矩形草图然后四次拉伸切除切除位置还是四个独立的硬编码坐标。也就是说AI只是“照着样子画出了四个洞”并没有真正理解“四个孔均布”是一个设计意图。这类问题的根源在训练数据。DeepCAD等数据集的标注粒度不一有一部分序列确实是用最“笨”的方式完成建模的。AI学会了这种笨办法自然生成不出让人满意的特征树。应对手段有两个。一是在提示词里明确标注“使用圆周阵列创建四个通孔”让生成器尽量输出正确的命令组合二是干脆接受现状导入CAD软件后用“删除并重新创建孔位特征”的方式手工整理一遍。前者能提高成功率后者才真正兜底。6.2 尺寸与公差的失控毫米级的漂移第二个坑在数值精度。我用同一句话“厚度8毫米”跑了十几次生成每次输出厚度在7.3毫米到8.6毫米之间波动。对尺寸敏感的结构来说这种漂移完全不可接受。排查后确认生成模型对数值的处理不是连续回归而是做了离散化分桶。设计师在标注里写了8毫米模型只能把这个值映射到它训练时见过的、最接近的一个离散档位里。如果训练数据里8毫米不多那模型就会选到7.5毫米或者8.5毫米的档位。应对策略是“留余量”。给关键尺寸加上明确的约束区间比如“8.0毫米正负0.1毫米”同时生成后认真核对尺寸并在STEP导入后用测量工具复查一遍。注意这一步千万别信任预览图预览图显示的比例大概率是对的但绝对数值必须自己验证。6.3 语言歧义AI理解的和你说的不是一回事自然语言天生有歧义这在工程场景里是致命的。举个例子我写“在板的中间开一个直径20毫米的孔”结果生成器把孔开在了板沿的长度中心而不是板的几何中心。因为“中间”这个词在文本编码器里被理解成了“大致在中间位置”而工程上“中间”往往意味着严格的几何中心。第三个坑提醒我提示词里要尽量消除歧义把“中间”改成“几何中心位于X40毫米、Y25毫米处”把“上面”改成“朝外的平面上”把“背后”改成“法向朝Z负方向的面上”。每一次消除歧义都是给生成结果多上了一道保险。6.4 硬件、依赖与运行环境开源项目没那么好跑如果你选择自己部署开源模型请做好心理准备环境配置一个小时起步。我在一台装有RTX 3070的机器上跑Text2CAD遇到的第一个问题是Python版本冲突第二个问题是CUDA的PyTorch版本要对齐第三个问题是模型权重文件下载慢到让人抓狂。整个配置过程走下来我的真实感受是如果你是工程用户而不是算法研究员直接用封装好的在线工具或商业产品体验会顺畅太多如果确实要自己研究代码最好先准备好网络环境、准确的依赖清单和一份耐心。7. 一些个人体会与扩展思路text-to-cad目前的状态类似于“导航地图”刚出现的时代它确实能把你带到目的地附近但最后一公里还是要自己来。反过来看也正是因为这个“最后一公里”的存在CAD工程师的岗位价值并没有被削弱而是从“重复劳动”转向了“定义问题和整理答案”。我自己的判断是text-to-cad最合适的落地场景有三个概念设计阶段的快速探索产品经理或主管用自然语言先画个“粗糙的大饼”再让工程师基于生成结果做正式设计。这个流程比传统“口头描述二维草图手工建模”的周期缩短很多。非CAD专业人员的辅助表达很多机械、材料、制造领域的人不熟练用CAD软件但能准确说出自己想要的零件形状。text-to-cad让他们能更快地“看到”自己的想法。教育和培训让刚入门的学生先学会“描述设计意图”再反推学习CAD操作命令。这个顺序其实更接近工程师的思维方式。最后分享一个我每次都会用的小技巧生成完不要只保留第一个结果。同一条提示词把temperature调整到0.7左右多采样几次经常能发现一些人类设计师不太容易想到的拓扑方案。有的生成结果虽然特征树脏了点但整体布局很有启发拿到CAD里重新整理一遍反而成了一个更优的设计。这也是我会长期关注这个方向的原因——它在逼着我们从“纠结怎么画”转向“思考设计本身”。