text-to-cad 这个词,最近在设计和制造圈子里热度一直居高不下。简单说,你用一句话描述想要的东西,比如“一个底座,四个角有直径5mm的通孔,中心带沉台”,AI在几十秒内还给你一个带特征树、可编辑的CAD模型文件,而不是一张图片或者一块不能改的死网格。我第一次见到这个流程的时候,说实话心里冒出的念头是:这玩意儿如果真做扎实了,很多机械设计里重复性的建模工作会被重写一遍。
这篇内容不是那种新闻稿式的介绍,我想把它拆开揉碎,讲清楚text-to-cad背后到底在解什么题目、现在能玩到什么程度、适合谁去学习和尝试,以及我在实际操作过程中踩过哪些坑、摸索出哪些能直接“抄作业”的提示词经验和排查思路。不管你是做机械设计的、搞3D打印的,还是对生成式AI感兴趣的开发者,只要关心“怎么把脑子里的想法变成真正能加工的数字模型”,这篇内容都应该对你有用。
1. 把一句话变成可编辑模型:text-to-cad到底做了什么
1.1 它不是文生图,而是“参数化建模代理”
很多人第一次听到text-to-cad,会下意识把它和文生图混在一起。毕竟同样是从文字生成内容,Midjourney生成的图几乎要乱真了,那CAD模型不就是“换个输出格式”的事吗。其实这里面的差距比想象中大得多。
文生图生成的是像素矩阵,本质上是二维颜色值的排列;而CAD模型要求的是精确的几何边界表达、严格的尺寸约束、可被后续工程软件读取的拓扑结构。更关键的是,一个完整的CAD文件还带有“特征历史”,就是你建模时“先拉伸、再切孔、再倒角”的那条记录链。这条特征链对设计者至关重要,因为修改一个参数时,后续特征会按顺序自动重新计算。text-to-cad要做的不只是“生成一个形状”,它要做的是“模拟一个建模师的操作过程”。
打个比方,文生图相当于给你看一张毛坯房的照片,而text-to-cad要交付的是“房屋施工图 + 改造方案”,不仅要说明墙在哪里,还要说明每一面墙是怎么砌起来的、改哪堵墙会产生什么连锁反应。所以从技术路径上,text-to-cad本质上是一个“参数化建模代理”,它需要在理解自然语言的同时,把语言指令映射成一系列建模动作,而不是简单地生成一个闭合的三角网格。
1.2 谁最需要它:门槛下降带来的三类受益者
我自己梳理下来,受text-to-cad影响最大的群体有三类。
第一类是机械设计工程师。他们的日常里有大量标准化零件的改型工作,比如一个支架,只是长度不同、孔位不同,但结构逻辑完全一样。过去这种工作要在软件里重复画草图、建约束,耗时且无趣。text-to-cad如果能准确理解“长度改为100mm、孔距改为80mm”这类语义,就能把这些重复劳动压缩掉百分之七八十,工程师能把精力放到更需要判断力的地方。
第二类是创客和3D打印爱好者。很多人有很棒的产品想法,但卡在“不会用建模软件”这一步。Fusion 360和SolidWorks的学习曲线相当陡峭,不是人人都愿意投入几个月去啃。而text-to-cad把表达门槛从“会画图”降到了“会说清楚”,这对快速验证想法是巨大的帮助。我见过不少不懂工程软件的人,用文字描述完零件后,拿到STEP文件直接切片打印,效果相当不错。
第三类是AI工具链开发者。text-to-cad解决的“语言到结构化三维数据”问题,本身就是一个很有价值的工程方向。它的技术栈覆盖NLP、几何处理、参数化建模、三维重建,涉及的知识面非常广,很值得深挖。
1.3 应用场景的现实边界:什么时候能顶用
说完了价值,也必须泼一盆冷水。text-to-cad现阶段的强项,集中在“形状相对规则、特征层级清晰”的机械零件上。比如法兰盘、支架、壳体、底座、带孔和凹槽的连接件,这类零件语义明确,尺寸容易用语言表达,生成效果通常比较理想。
但如果你想让AI从一句话生成一整套包含复杂曲面的产品外壳,或者内部带复杂冷却流道的模具镶件,那现阶段效果会明显打折。原因在于:复杂曲面的美学设计本身就是高度非标准的,“圆润一点”“更有科技感”这类描述很难转化为精确的NURBS控制点坐标。而且这类模型往往需要大量的曲面连续性调整,这属于专业设计师的手艺活,不是靠语义模型能解决的。
所以我的判断是:text-to-cad更适合做“从模糊概念到可修改初稿”这一棒,而不是“从文字直接到终稿”的完全自动化。把它定位成“设计流程前端的加速器”,心态会稳很多。
2. 深入技术核心:语言如何一步步变成几何约束
2.1 自然语言解析与建模动作的映射
text-to-cad的链路,拆开来大体包括几个环节:意图理解、参数抽取、几何生成、特征回溯、格式输出。
意图理解是第一个关键步骤。模型要能分辨出“一个直径30mm的圆”是指截面轮廓,还是指拉伸体内部的孔;“底部倒角”到底要导多大的角、作用在哪条边上。这需要语言模型具备工程常识,光靠通用大模型的语义理解还不够,还需要针对CAD语料做专门的微调,或者配合规则引擎做术语纠偏。
参数抽取紧随其后。把文字里的数字、单位、修饰词全部结构化,形成一个个键值对,比如“直径=20mm”“深度=10mm”“阵列数量=4”。这一步看似简单,但单位换算和上下文指代常常出问题。举个现实例子,“打个直径20的孔”到底是通孔还是盲孔?原文没说明时,模型要能根据句子里的其他线索推断,或者以交互方式让用户确认。好的text-to-cad系统,这一步应该做得像人一样“不确定就问”,而不是默默猜一个。
最后是向建模动作映射。这里会把抽取到的参数转化为具体的CAD操作序列,比如:创建草图、拉伸、布耳运算、倒角、阵列。操作系统里的“拉伸”和“布尔运算”有明确的数学定义,因此这个映射过程需要严格遵循几何内核的规则,否则输出的模型即使“看上去像”,在进入CAM编程或CAE仿真时也会报错。
2.2 几何表示的分歧点:网格、体素还是B-rep
这是text-to-cad技术路线上最关键的一个分岔口,也决定输出文件的工程可用性。
如果选择三角网格(Mesh)或体素(Voxel),生成难度小,市面上很多文生3D工具就是这么做的,但输出结果往往是“一张皮”,没有厚度概念、没有面与面之间的拓扑关系,当网格分辨率不足时,倒角看起来就是钝的,圆孔边缘也是锯齿状,根本无法直接送进CNC。这类文件在可视化展示、游戏资产、快速3D打印原型里能用,但离真正的CAD工程模型差得很远。
如果选择B-rep(边界表示)加上NURBS曲面,那输出就是“真CAD”,文件能转成STEP,能被SolidWorks、Fusion 360这类软件完整识别,并且保留了参数化特征。但B-rep的直接生成本身是数学上很头疼的问题。现在的方案大多是先生成粗糙的三维表示,再用“反向建模”的方式把表面拟合成可编辑的曲面,最后还原出特征树。这一步的难点在于:反向建模依靠算法从网格中识别出平面、圆柱面、圆锥面等基本几何特征,一旦原模型在曲面交汇处有微小的形变,识别就会出错,特征树就会变得极其杂乱。
从工程角度看,我宁愿要一个特征树简单但完全可编辑的模型,也不要一个看起来非常精细但只能看不能改的网格。这个取舍直接决定了你拿到的文件是“模型”还是“作品”。
2.3 为什么提示词里的“工程味”决定生成结果上限
很多人刚接触text-to-cad时会觉得,它既然用了大模型,那我随便说说它就该懂。现实很打脸。text-to-cad对自然语言的理解,在“自由表达”和“工程精确表达”之间,强烈偏向后者。
“我想要一个圆圆的底座,上面有几个孔”这种描述,模型大概率会给你一个带随机孔位的近似圆柱体,尺寸靠猜。而“直径120mm的圆柱底座,中心有一个直径30mm、深度5mm的沉孔,周围阵列4个直径8mm的通孔,孔心距中心45mm”这种描述,生成结果的可靠性会成倍提升。
原因在于,工程语言的核心是“参数明确、关系明确、约束明确”。text-to-cad的模型训练数据大多来源于已有的CAD模型及其对应的文档说明,这些数据本身就是要足够精确的。你给的信息越接近工程文档的写法,模型就越容易把参数抽取正确。所以我一直建议,玩text-to-cad先别急着发挥文学想象力,而是先学会用“图纸的语言”去描述零件,这比任何参数调整都管用。
3. 现在能玩到什么程度:主流工具和一条可复现的实操流程
3.1 主流text-to-cad工具盘点与选型参考
市面上已经出现了一些值得关注的工具,我把它们的定位和特点整理成了表格,方便按需选择。
| 工具/项目 | 输出形式 | 操作难度 | 适合场景 |
|---|---|---|---|
| Zoo(前身为Text-to-CAD项目) | B-rep/STEP,带特征树 | 中等 | 机械零件、工程验证、参数化改型 |
| Backflip AI | 网格+可编辑模型中间态 | 低 | 概念设计、快速迭代外观 |
| Tripo CAD | 网格/粗略实体 | 低 | 3D打印原型、视觉验证 |
| 各类基于OpenAI/大模型+CAD API的自建方案 | 由底层内核决定 | 高 | 研究者、追求特定控制权的开发者 |
工具选择上,最核心的判断依据是“输出文件最终要拿去干什么”。如果只是渲染看一眼,网格工具够用且速度快;如果要进CAM生成刀路,那就必须选能输出STEP、B-rep的路线。另一个判断依据是“你要不要改模型”。如果一次生成完全符合需求,网格也不是不能用;但如果后续大概率要调尺寸、改孔位,那就一定要选带特征树的方案,否则一旦要改动,网格模型等于要重新捏。
我自己的经验是,刚开始尝试时,不要急着在多个工具之间反复横跳,选定一个能输出STEP的方案,花时间吃透它的提示词习惯,比到处试更有效率。
3.2 从文字到STEP文件:一条经过验证的实操路径
下面这套流程,我在多个工具里都验证过,通用性比较强,具体按钮名称会随版本变化,但思路是通的。
第一步,明确你的输出目标。先问自己:这个模型要不要继续编辑?要不要进装配体?用什么软件打开?如果是,直接选支持STEP或原生参数化格式的工具链。
第二步,用“结构化提示词”描述零件。把一句话拆成五个部分:零件类型、主要轮廓和尺寸、需要去除或增加的特征、阵列与对称关系、输出格式要求。每个部分之间用清晰的分隔词或换行隔开,尽量少用模糊形容词。
第三步,生成后立刻做“三查”:查特征树是否简洁、查草图是否完全约束、查尺寸是否和输入一致。很多时候模型外观是对的,但特征树里一团乱麻,这说明生成过程有问题,不要因为“看着像”就放过它。
第四步,导入目标软件里做最终验证。把生成的STEP导入Fusion 360或SolidWorks,尝试改一个关键尺寸,看整个模型是否按预期更新。这一步能筛掉绝大多数“伪参数化”的模型。
第五步,如果改动失败,回到“特征识别”阶段解决。这通常意味着模型在转换时丢失了某些几何特征,需要手动补特征或者返回重新生成。现实中这是常态,不要指望一次到位。
3.3 提示词写作的“最小可用模板”
我试过很多种描述方式,最后稳定出效果的是一个固定模板,公开出来给需要的人直接抄。
[零件类型]:法兰盘 [关键尺寸]:外径120mm,内径40mm,厚度15mm [附加特征]:中心通孔直径40mm;均布6个直径10mm的螺栓孔,分度圆直径100mm [加工约束]:所有孔均为通孔,外圈边缘需要1mm倒角 [输出格式]:STEP,带特征树用这个模板生成的零件,参数命中率远高于自由描述。核心逻辑是:每一条信息都对应一个确定的几何操作,模型不需要猜。如果还有装配需求,可以额外追加一句话“以底面为装配基准面”,这能避免导入装配体后零件方向乱掉的问题。
还有一个经验:一次只改一个变量。如果你想让模型生成一个和上一版“差不多但孔多一点”的零件,不要复制整段原始描述再大改一通,最好在原提示词基础上只修改“孔数量”和“分度圆直径”这两个值。这样模型输出会相对稳定,否则它可能把其他特征一起重新解释,结果与预期大相径庭。
3.4 对生成结果做“工程化评判”
模型生成完,直接点下载的人,通常会在下一步痛不欲生。拿到模型文件之后,先别急着庆祝,对照这四条标准做一轮评判:
第一,特征树是否可作为历史记录回放。如果一个“底座”的特征树里找不到拉伸和切除,只有一串布尔运算和混乱的合并体,说明它只是把几个表面焊在了一起,不具备参数化回放能力。
第二,草图约束是否完整。一个合格的可编辑模型,草图里应该有明确的尺寸标注和几何约束,而不是一堆仅靠“自动推断”的未定义线条。否则你改动一个数值,整个草图可能会重新飘走。
第三,孔和螺纹的特征有没有被“符号化”。这件事比较专业,但很重要。真正的工程模型里,螺纹孔、沉头孔通常是以特征的形式存在,攻丝大小、深度、类型都会记录在树里。如果生成结果只是把螺纹画成一条螺旋线,那它就不具备加工语义。
第四,文件是否有单位信息。STEP文件理应包含单位定义,但很多AI生成的模型单位信息缺失或混乱,导入软件后会出现“零件放大25.4倍”这种经典事故。所以每次导入后,第一件事就是检查测量单位。
4. 我在实际操作中踩过的坑和排查思路
4.1 高频问题速查表
这部分内容是我在实际使用中反复撞墙后总结出来的,先放一张速查表,后面逐一细说。
| 问题现象 | 典型原因 | 处理思路 |
|---|---|---|
| 生成结果像“雕塑”,表面过度圆滑 | 工具走了网格生成路线,缺少工程特征 | 换B-rep/STEP方向的工具,或在提示词中强调“硬边、锐角、平面” |
| 尺寸与描述差出好几倍 | 单位不统一,或模型把公制当英制解析 | 提示词里显式写明“单位为mm”,导入后先查测量 |
| 孔的位置偏移,阵列不规则 | 参数抽取时指代关系错误 | 把位置关系描述改为“分度圆直径”,不要用“大概”“均匀排布” |
| 特征树无法回放,只有一堆尸体 | 反向建模失败,几何识别不准 | 回到提示词精简特征数量,逐一增加难度 |
| 导入软件后模型格式报错 | STEP文件里含无效拓扑面 | 用修复工具过一遍,或直接重新生成 |
| 孔洞和倒角方向反了 | 语言方位词歧义(“上面”指顶面还是顶部平面) | 改用“以某个面为基准”的方式描述方向 |
4.2 小白最容易崩溃的单位与基准问题
单位问题排首位。我自己遇到的经典案例是,提示词里写了“直径100”,AI输出的是显然只有“100mm”一半大小的东西。后来查看文件属性才发现,内核把数值当成了屏幕单位,而不是毫米。这件事的教训是:不要假设模型有“默认单位”,单位必须在提示词里显式写,并且在导入自己的CAD软件后立刻启动测量工具复核关键尺寸。
基准问题紧随其后。很多人在描述时会说“顶面开孔”“底面加销钉”,但“顶面”和“底面”在三维空间里到底是怎么定义的?模型可以自由选择任何一个方向作为“顶”。于是生成结果里,孔开在了侧面,销钉插在了斜面上。解决这个问题的有效办法是:不说“顶面”,而是说“以最大平面作为基准面”“开孔方向垂直于该平面”。这听起来很笨拙,但机器就是靠这种笨拙的精确性才能不出错。
4.3 生成结果“能不能直接用”的一分钟快速判断法
我已经形成了一套固定动作,每拿到一个生成模型,一分钟内就能判断它是否值得继续。步骤很简单:先用轻量化查看器打开文件,看外观和特征树;再用导入方式测试STEP兼容性;然后选中一个关键尺寸尝试修改,观察是否联动更新;最后检查单位设定,确认无误后才会进入正式使用流程。
这四步走下来,浪费的时间最多一分钟,但能避免后面几小时的返工。曾经有一个看起来非常完美的壳体,外观完全符合需求,导入软件后也能打开,可当我尝试把壁厚从2mm改成2.5mm时,整个模型当场散架,特征树里全是报错,那一刻我就知道它只是个“漂亮壳子”,根本不具备设计迭代能力。
所以,我跟所有想用text-to-cad入门的朋友说,刚刚生成完的模型永远先当它是半成品,快速验证过后再谈效率和可靠性。
4.4 生成速度慢、结果随机性强的时候怎么办
text-to-cad有一个明显区别于传统软件的特点:可重复性差。同一个提示词,多次点击生成,结果每次都不太一样。这既是好事也是坏事,好的一面是你可以多抽几次奖,坏的一面是你很难通过“局部微调”来逼近预期效果。
我的办法是:如果一次生成的质量只能打70分,并且问题集中在个别特征上,那么不要试图靠修改提示词里的模糊描述来碰运气,而是把这次结果导出,放进CAD软件里手动修掉那30分的问题。手工修这3个问题可能只需要5分钟,但靠重新生成碰运气,可能要碰十次还未必能保证成功。
如果生成结果连30分都不到,问题多半出在整体结构理解上,这时候再修就没有意义了,应回到提示词层面,把零件描述拆得更细、更基础,先让它生成一个简单的基体,确认基体正确后,再逐步叠加孔、槽、阵列这些附加特征。
5. 后续还能怎么玩:我在实践中的体会与扩展方向
5.1 把text-to-cad嵌进自己的设计流程里
在我目前的个人项目里,text-to-cad被定位为“概念快速验证工具”。具体操作是:拿到一个模糊需求,先用文字快速生成三到五个结构版本,导出STEP文件后在CAD软件里交叉比较结构强度和装配干涉;选中一个相对合理的方案后,再从头用传统参数化方法重建这个模型。
有人可能会问,既然最后还是需要人工重建,那这个工具还有意义吗?有,而且意义很大。因为它在最短时间内提供了一个“空间方案”,让你不用从零开始在大脑里凭空想象结构布局。即便最后重建,你也是带着明确的目标去画草图,而不是在摸索中反复修改,这个效率提升非常可观。
5.2 有灵感但不会建模:给非专业用户的三条建议
如果你完全不会建模,但有一个明确的产品想法,我给三条建议。第一条:把想法写成“有数字的说明文”,越具体越好,不要用形容词堆砌。第二条:不要追求一次生成完美模型,第一次生成的模型是给你用来“看”的,不是用来“用”的,根据它修正自己的描述逻辑,再生成第二次、第三次。第三条:拿到最终模型后,务必找懂工程的朋友帮你检查一遍尺寸和加工可行性,别直接拿去向加工厂下单。
5.3 和生成式AI工具互补:我的深层体会
最后我想聊聊更深一层的东西。text-to-cad这类工具的价值不在于替代设计师,而在于把“想法到草图”这段最容易被浪费的环节压缩到极致。建筑师不需要亲手画每一根梁才能表达设计意图,机械工程师也不应该被困在每一个拉伸命令里。工具越高级,对使用者的核心素质要求反而越高——你必须更清楚地知道自己要什么,必须能把模糊的灵感翻译成明确的参数。
我个人的体会是,当text-to-cad生成一个基本可用的零件时,本能反应往往是“它怎么做到的”,但真正让我成长的是接下来那句“我要怎么把它改得更好”。生成式工具给了我更多版本的起点,而最终的判断和选择权,始终还是在我手里。这个领域进化极快,每隔几个月就会听说某家新模型又在B-rep生成上有了突破,但越是这样,我们越要保持一种冷静的使用姿态:把AI当外挂,不把AI当大脑。