先说个有意思的事。前阵子有个做机械设计的群友发了个链接问我:“现在AI都能直接生成CAD了,我们学SolidWorks还有啥用?”我看了一下,那是个text-to-cad工具,输入一段话就能出STEP文件。我当时第一反应是:这东西离能用的距离,可能比大多数人想的要远,但也比多数唱衰的人想的要近。后来我陆陆续续试了大概十几个类似方案,从网页工具到本地代码生成,从玩票的到偏工程向的,算是把这条赛道摸了个七七八八。
如果你跟我一样,平时要跟3D建模打交道,或者你是个创客、产品设计师,又或者你只是好奇“用一句话生成CAD文件这事到底成没成熟”,那这篇文章应该能给你一个比较完整的参考。我会把text-to-cad背后的技术路线拆开讲清楚,也会把我实际测试过程中的操作步骤、翻车记录和避坑经验一并分享出来。读完你至少能知道:这东西的原理是什么、哪些场景能用、怎么上手写提示词、遇到烂模型怎么排查。
1. 重新认识Text-to-CAD:它到底解决了什么问题
想搞清楚text-to-cad的价值,得先回到CAD建模本身。传统CAD软件的操作门槛,从来都不在“画图”这件事上,而在“把脑子里的三维构思翻译成软件能懂的参数化操作”。草图要约束、拉伸要选基准面、布尔运算要分先后、圆角倒角要控制顺序,这些规则本身是一套专业语言。你让一个从没学过CAD的人打开SolidWorks,他大概率连拉伸切除和基准面都搞不明白。这不是因为他笨,而是因为传统CAD的学习路径天然是把“设计思维”变成“命令流”,这个过程需要大量刻意练习。
text-to-cad想做的事情,其实就是把这套“命令流”砍掉,让用户直接用自然语言描述需求,然后由模型自动帮你完成草图、拉伸、倒角这一连串建模动作。它的本质不是“一个会画图的AI”,而是“一个懂CAD操作规则的翻译官”。这一点非常重要,因为很多人误以为text-to-cad是像Midjourney那样生成一张好看的图片,但它是生成真正的三维几何数据,后续还能被专业软件识别、编辑、甚至加工。
但要说清楚边界:它解决的是“从零到一”的问题,也就是从空白画布到一个可用的概念模型。它目前还没有解决“从一到N”的问题,比如多零件装配、公差标注、材料属性、运动仿真,这些工程细节是一套更大的体系。所以更准确的说法是,text-to-cad是“概念设计阶段的加速器”,而不是“取代工程师的终极工具”。把它当成一个随时能出草稿的助手用,体验会好很多;指望它一段话直接出图纸去加工,那大概率会失望。
1.1 传统CAD建模的门槛到底在哪
我见过很多产品经理、工业设计师、甚至编程能力很强的人,在CAD面前栽跟头。他们卡住的地方惊人地一致:不是不知道要建什么形状,而是不知道用什么命令、以什么顺序去建。就拿一个简单的法兰盘来说,脑子里想的是“一个圆盘,中间一个孔,周围一圈螺栓孔”。到了软件里,你要先画草图圆,拉伸成圆柱,再切一个中心孔,然后阵列六个小孔——每个步骤都有参数,每个参数都有约束关系。这些操作本身不难,难的是“建模顺序”和“约束思维”的培养。
text-to-cad把这个顺序问题交给了模型处理。它通过海量CAD建模数据的学习,把“法兰盘”这种概念和“草图-拉伸-打孔-阵列”这样的操作序列关联起来。你只要说“直径100mm的圆盘,中心直径30mm的孔,边缘均匀分布6个直径8mm的孔”,模型就能自动拆解成一系列建模动作并执行。从这个角度看,它确实大幅降低了“从想法到模型”的第一步门槛。
还有一个经常被忽略的点:传统CAD软件的命令繁多,很多功能藏得很深。就算你是个老手,遇到不常用的功能也难免要翻菜单、查帮助。text-to-cad在降低“找功能”的时间成本上也有价值——你不需要知道命令叫什么名字,只需要描述你要什么效果。
1.2 应用场景:谁是text-to-cad的核心用户
实测下来,我觉得有这几类人对text-to-cad的需求最真实:
- 创客和开源硬件爱好者。他们经常要设计外壳、支架、连接件,这类零件结构相对简单,但对“快速出STL/STEP文件”有明确需求。text-to-cad正好覆盖。
- 产品设计师做前期概念探索。方案还没定的时候,与其花半天建一个可能被推翻的模型,不如让AI出几个方向性的草稿,用来评估比例、形态和大致结构。
- 机械工程师做快速原型验证。尤其是一些标准件、简单结构件的快速替换设计,用自然语言描述往往比重新建模快得多。
- 非专业用户。比如老师、学生、硬件创业者,他们不需要深度掌握CAD,但偶尔要一个3D模型用于展示或3D打印。
在评估阶段,也要明确它不是万能的。复杂曲面、薄壁件、精密配合、装配结构,这类需求还是得回到专业建模流程里。我个人的判断是:text-to-cad目前最合适的定位,是“一张随时可以撕掉重来的草图”,它让建模的试错成本变得极低。
2. 三种主流技术路线,看懂背后的原理
市面上的text-to-cad工具五花八门,名字很多,但底层技术路线其实就三大类。我最初也以为所有工具都是同一套方案,真正深入测试之后才发现,它们的生成逻辑、输出格式、可编辑性差别极大。搞清楚这三条路线,你才能判断哪个工具适合解决你的问题。
2.1 路线一:让大模型写参数化脚本
这条路线是个人和中小团队玩得最多的。思路非常直接:既然CAD建模的本质是一连串参数化操作,而这些操作可以用CadQuery、OpenSCAD这类代码语言描述,那我让大语言模型生成代码不就完了吗?
具体工作流是这样的:你输入一段自然语言描述,大模型(比如GPT系列或者开源Code模型)把它转换成一段CadQuery或OpenSCAD代码,然后本地的解析器执行这段代码,最终导出STEP或STL文件。
这条路线的几个特点值得注意。优点首先是可控性极强——生成的代码是可见的,你可以手动改参数、改尺寸、改结构,模型跑偏了也能直接定位到代码哪一行出了问题。其次是对硬件要求低,本质上就是“调用了一下LLM接口”,不需要专门的GPU推理环境。最后是可以精细调参,比如你想要“圆角半径3mm”,直接在代码里改一个数字,比在生成式模型上反复提示要靠谱得多。
缺点也很明显:模型对复杂曲面的表达能力不足。你用CadQuery写一个正方体加圆角很简单,但让它写一个机盖曲面、一个符合人体工学的握把轮廓,代码会变得极其冗长,而且大模型经常会在几何逻辑上出错——比如让一条边去倒角、结果把整个特征弄丢。所以我建议你把这条路线当作“参数化零件的专家助手”,而不要指望它处理所有几何形态。
2.2 路线二:直接生成原生B-rep几何
这是目前最“硬核”的路线,也是市面上那些“输入一句话直接出STEP文件”的工具所采用的方式。这里要先解释一个概念:什么是B-rep?B-rep,也就是边界表示,是CAD软件内部真正使用的几何表达方式。它不像STL那样用大量三角形近似表面,而是精确描述面、边、顶点的拓扑关系以及它们的数学曲面方程。你导出的STEP文件,本质上就是一套B-rep数据。
这类工具的训练思路和图像生成模型有相似之处——喂给模型海量的CAD模型文件,让它学习“自然语言描述”和“B-rep数据结构”之间的对应关系。生成的时候,模型不是去“画”一个形状,而是直接预测出一套完整的边界表示数据,包括每个面的曲面类型、每条边的连接关系、整体的拓扑结构。
我最开始用这类工具时,抱着很大的怀疑,觉得它多半是生成一个STL然后强行套个STEP外壳。后来把生成的STEP文件导入FreeCAD,发现里面的特征是可识别的实体,面可以选中、可以修改,那一刻确实有点惊讶。这说明它真的是在生成“CAD原生产物”,而不是蒙混过关。
这条路线也有它的脆弱点。因为B-rep的约束非常严格,存在“面必须封闭”“边必须manifold”之类的硬性规则,模型很容易生成出拓扑错误、自相交、或者某些面无法缝合的模型。此外,生成速度通常比代码生成路线慢,对算力的需求也更高。但如果你关心的是“给专业人士用”,那么原生B-rep的价值不可替代。
2.3 路线三:神经隐式表达与结构化建模序列
第三条路线相对学术界导向,但很多工业级产品的幕后技术都来自这里。它的核心是把“建模过程”当成一个序列来预测。打个比方,传统建模是“画草图、拉伸、切孔、倒角”,这条路线就是训练一个模型,让它预测出这个步骤序列,从而生成对应的模型。
比较有代表性的工作是DeepCAD及其后续研究。研究者把大量CAD模型“翻译”成一系列建模指令序列(比如“在XY平面上画一个半径为R的圆,沿Z轴拉伸深度D,再执行一次倒角……”),然后让Transformer这类序列模型去学习“随机初始状态到完整指令序列”的映射。用户给一个描述,模型先生成指令序列,再重放这些指令得到几何体。
这条路线在学术上非常优雅,因为它的生成过程天然具备“可解释性”——你可以看到一个模型是经历了哪些步骤才变成最终形状。但它对输入的要求比较苛刻,用户给的描述如果太模糊,模型很难确定到底该用哪个建模序列。而且在一些非直观、非正规几何形态上,序列化表达会变得非常困难。我在测试中遇到的情况是:这类工具对“L形支架”“圆形底座”这类规则几何体处理得很好,但对“有机曲面”“雕塑感形态”基本无能为力。
2.4 为什么“原生CAD文件”这么重要
很多刚接触的人会问:AI生成模型,我用STL不也一样吗?反正3D打印也就认STL。这里有个关键差别:STL只是“外形近似”,STEP才是“几何真相”。
如果你用STL文件,想把它导入SolidWorks或者FreeCAD做进一步编辑,软件会把它当成一个“网格实体”,你无法直接抓取那个圆弧面去修改半径,只能重新建面或者做逆向重构,这个过程极其痛苦。而STEP文件保存的曲面方程和拓扑关系是精确的,导入后每个面、每条边都能被CAD软件识别,你可以像使用自己建模的零件一样继续编辑。
这就好比一个是用照片做雕塑,另一个是给了你雕塑的完整泥稿和骨架。前者只能照着外形修修补补,后者可以直接动结构。所以当你评估一个text-to-cad工具时,先看它输出的是什么格式。如果只能出STL/OBJ,那它本质上是“文本到网格”,和“文本到CAD”是两码事。
3. 实操流程:从一句描述到一个可用的STEP文件
理论讲再多,不如实际跑一遍。下面我把自己这段时间反复试出来的操作流程拆开,从工具选择到提示词写法再到模型后处理,每一步都说清楚。这部分我踩过的坑不少,你可以直接把我的流程当模板用。
3.1 工具选型:先搞清楚你要哪种生成方式
目前市面上的工具,我用下来大概可以分成三类,按不同需求做了个对比表:
| 工具类型 | 代表方案 | 输出格式 | 适合场景 | 短板 |
|---|---|---|---|---|
| 在线生成式 | Zoo的Text-to-CAD等 | STEP(原生B-rep) | 概念快速出图、非专业用户 | 可控性弱,复杂需求容易翻车 |
| 脚本生成式 | CadQuery + LLM / OpenSCAD + LLM | STEP / STL | 参数化零件、需要精细控制 | 学习成本高,曲面能力弱 |
| 学术研究型 | DeepCAD类 | 建模序列 / STEP | 研究者、极客玩家 | 交互不友好,形态有限 |
我建议普通用户先试在线生成式工具,因为它能把整个流程压缩到“输入描述→点生成→下载STEP”。但如果你是搞机械设计的,想把它纳入正式工作流,那“脚本生成式”更值得投入——它的每一次输出你都能拆解、审查、修改,这对工程场景来说是保命级的优势。
环境准备方面,如果选择脚本生成那条路,你需要一个Python环境,装好CadQuery库。我用的是FreeCAD的CadQuery工作台,它可以在FreeCAD里直接运行CadQuery脚本,生成结果还能实时预览。比起纯命令行,图形化界面能让调试过程直观很多。如果你跑的是在线服务,那就没什么环境要求了,浏览器就够。
3.2 提示词编写技巧:把“人话”翻译成几何约束
这一步是整个过程中最值得琢磨的。我试过的提示词写法,好的和差的差别简直天壤地别。先说最基础的:描述要从大到小、从主体到细节。你在脑补一个零件的时候,肯定是先有整体形态,再有局部特征。AI也一样,如果提示词一上来就是“圆角R3mm、孔直径8mm”,但没说这个零件整体是方是圆,模型很容易抓瞎。
其次,尽量把口语化的形容换成“几何化的描述”。比如你说“做一个漂亮的底座”,模型大概率不知道什么叫“漂亮”。但你说“一个长80mm、宽60mm、高15mm的长方体底座,四角有半径10mm的圆角,中心有一个直径25mm的贯穿孔”,模型就能准确地执行。
第三,善用“相对位置”和“基准”。CAD建模特别讲究基准,你的描述里如果能带上“中心”“对称”“距离边缘XXmm”这类定位词,生成的模型准确度会直线上升。我试过描述一个零件“底面到第一个凸台顶面的距离是40mm”,生成的模型把凸台高度卡得很准;而只写“上面有个凸台”,模型给的尺寸就完全靠猜。
第四,避免歧义和多重理解。同一个词在不同工程师脑子里可能对应不同结构。比如“支架”这个词,有人想的是L形角码,有人想的是U形钣金件,还有人想的是悬臂结构。最好的办法是把需求拆成多个简单句子,每个句子对应一个明确特征,而不是把所有信息揉进一句话。我用过一个比较通用的结构化模板,效果不错:
“整体是一个[主体形状],长[数值]mm,宽[数值]mm,高[数值]mm。在[基准面或参考]的[位置]有一个[特征类型],尺寸为[数值]mm,方向沿[轴向]。所有锐边做[数值]mm的[倒角/圆角]。”
这个模板不等于死板,它更像一个“几何需求清单”,你能列多清晰,模型就能建多准确。
3.3 生成结果的检查与后处理
生成完模型,先别急着用,花两分钟检查一下。我最常做的检查项有三个。第一是尺寸验证:把模型导入CAD软件,用测量命令检查关键尺寸和提示词是否一致。如果尺寸相差太大,大概率是提示词里的单位没写清楚,或者模型产生了幻觉。第二是特征完整性:逐项核对提示词里提到的每个特征是否存在。比如你说了“六个孔”,结果只生成了五个,这种“漏特征”的现象在生成式路线中非常常见。第三是拓扑健康度:检查模型是否有开口面、自相交区域、薄壁或者反转法线。这个在FreeCAD里可以先执行一下“Part → Check Geometry”,如果有红叉报错,说明拓扑有问题。
如果检查发现模型有问题,不要试图在CAD软件里手动修复一堆烂面,那是灾难配置。正确做法是回到提示词侧调整。把检测到的错误翻译成更明确的约束,重新生成。比如“孔位置偏移了中心”,那你就在提示词里补充“孔中心与底面中心重合”;比如“底面圆角导致模型内部异常”,那你就降低圆角数值,或者调整生成顺序。
我自己的习惯是:先生成一个“粗模”,确认整体形态和比例没问题之后,再加细节、加精确尺寸重新生成。这东西有点像做雕塑,先有个大形,再去抠细节,比试图一次到位靠谱得多。
3.4 导入专业CAD软件的正确姿势
生成好的STEP文件导入CAD软件,看似是个傻瓜操作,其实有几个容易翻车的点。第一个是单位设置。有的模型生成时按毫米处理,有的按英寸处理,导入后如果全局单位不对,尺寸会差25.4倍,直接导致后续所有工作白费。我建议在导入前先确认文件的单位,以及在软件里设置“导入时检测单位”。
第二个是模型的“可编辑性”状态。在SolidWorks或者FreeCAD里,从STEP导入的模型可以测量、装配、做有限元,但它的特征树是“导入体”而不是“建模过程”。如果你想直接拖拽修改历史特征,基本没戏。解决办法是:把STEP导入后,用“识别特征”功能让它重建特征树,或者接受它是个“哑实体”,只做基础布尔运算。
第三个是预处理兜底。如果导入后发现模型显示异常,比如破面、缺失面,试着用软件的“修复/愈合”工具走一遍。FreeCAD里就有“Part → Refine Shape”和“Check Geometry”,能处理一部分轻微的拓扑问题。如果是严重破损,说明源头就有问题,别修了,回去重新生成。
4. 我踩过的坑和常见问题排查
最后这部分,分享一些实操过程中真实翻车的情况和排查思路。每一件都是我或者同行朋友实际遇到过的问题,花过冤枉时间,才总结出来的经验。
4.1 几何尺寸和细节缺失
这是最常遇到的问题,尤其是生成式工具,经常出现“大概看着像,但尺寸差很多”的情况。我拿“半径10mm的圆角”做过测试,同一个工具生成两次,一次是9.2mm,一次是10.8mm,虽然勉强看得过去,但如果你要对标另一个装配件的配合尺寸,这是个致命问题。
排查思路很简单:先用“测量工具”验证关键尺寸,不要用目测。如果几次生成尺寸偏差都大,那就要调整提示词,把精确数值加进去,并且尽量用“直径/半径”“中心距”这些工程术语。另外,部分工具支持在生成后手动填写参数调整,有这块的你可以直接微调。
还有一个细节缺失的问题:提示词里用了模糊修饰词,比如“稍大的孔”“厚一点的壁”,模型很难把握“稍大”“一点”到底是多大。解决方案很直接,全部换回具体数值。你嫌麻烦的话,先跑一个草稿看比例,再在后续迭代中给具体数值。
4.2 提示词歧义导致“串台”
这个问题最隐蔽,也最搞笑。有一次我描述“一个小型底座,能放手机和卡片”,结果模型生成出来一个像“盒子带凹槽”的东西,跟我脑子里想的完全不是一回事。原因就是“放手机和卡片”可以理解成“托盘”“盒子”“带支架的面板”好几种结构。
想避免这个问题,核心是消除歧义。我会先假装面前坐了一个制图员,我用什么话能让这个制图员准确画出来?这个思维转换特别管用。另一个技巧是反向描述,说清楚“不要什么”。比如“不要封闭的盒子,顶部开放”,这种排除式描述能大幅提高生成准确度。
还有一个比较玄学但实测有效的点:尽量用“标准件名称+变体描述”的结构。比如“类似一个M8法兰盘,但外形是方形的”“类似轴承座,但安装孔在侧面”。模型看到“法兰盘”“轴承座”这类强语义词,会优先激活它学过的相关几何模式,然后按你的变体要求做修改。效果比凭空描述一个形状好得多。
4.3 文件兼容性和拓扑修复
如果你经常在多个CAD软件之间倒腾文件,一定遇到过兼容性噩梦:同样的STEP文件,在A软件里正常,在B软件里破面。这不是text-to-cad独有的问题,但它确实会拉高排查成本。
我的建议是始终确认导出的STEP版本。STEP有AP203和AP214两种常见协议,大多数软件两者都支持,但某些特殊几何体在AP214里表现更好。遇到导入失败,试试切换协议版本。另外,不同的建模内核(Parasolid、ACIS、OpenCASCADE)对B-rep数据的解析精度不一致,同一个文件在不同内核里出现微小的面差很正常。你可以把文件拿到FreeCAD和Fusion里各开一遍,对比一下哪个表现更好。
对于轻微的拓扑问题,用“修复工具”走一遍基本能解决。但如果修复之后依然有缝隙、法线翻转,别纠结,直接回炉重新生成。在源头解决比在下游修补高效得多。我自己在这上面的原则是:一次修复不行就换方案,不跟烂模型死磕。
4.4 性能、成本与工作流整合的取舍
最后聊点“工程现实”。生成式工具目前要么有次数限制、要么按算力计费,一次复杂生成耗时从十几秒到几分钟不等。如果你把它当成一个高频生产工具,成本并不像想象中那么低。我身边有朋友用它做方案迭代,一天生成几十次,费用还是很可观的。
如果走向上通用大模型生成参数化代码这条路,成本会显著下降——你只需要在需要的时候调用一次LLM,代码生成后无限次修改重跑都是免费的。但代价是你的“编程思维”要跟上:你至少得看得懂CadQuery的基本语法,能判断模型生成的代码哪里有几何逻辑错误。这对纯设计师可能是个门槛,但对有工程背景的人反而是个加分项,因为你能精确控制每一个特征。
还有一个工作流上的建议:text-to-cad最适合放在“头脑风暴到初步设计”这一段,后面一旦进入详细设计阶段,还是得回到传统CAD里做正式的约束、标注和出图。把AI生成的模型当作“概念雏形”,而不是“最终交付物”,这会让整个工作流顺畅很多,也避免了对AI产物的不切实际期待。
说实话,我最初也以为text-to-cad只是个噱头,是被“AI能写代码”的热潮带起来的概念泡沫。但实际测试下来,它在一些垂直场景里的表现已经超出我的预期——尤其是从自然语言到原生STEP文件的打通,这在两年前几乎不可想象。不过要我用一句话总结,我会说:它确实能帮你快速搭出模型的骨架,但每一个尺寸的公差、每一个倒角的合理性、每一个装配面的配合,依然需要你亲自去确认。
如果你想上手试试,我的建议是分成两步走。第一步,拿一个简单的零件描述去跑在线生成式工具,体验一下“一句话出STEP”的完整流程,建立直观感受。第二步,搭一套CadQuery加LLM的环境,从一个带圆角的法兰盘开始,逐步挑战更复杂的结构。这个过程能帮你彻底理解“代码生成式建模”的威力,也能让你在AI翻车时知道怎么救场。等这两步都玩明白,你才真正掌握了text-to-cad这套新工具链,而不是仅仅停留在“看个热闹”的阶段。