前阵子有个零件要得特别急,是个非标的铝合金支架,客户只给了一张草图照片和一句“只要能装上就行”。我在CAD里折腾了大半个下午,突然想到最近网上讨论很多的text-to-cad工具,就把那句需求打成文字丢进去,几秒钟后它居然给了我一个能看、能改、甚至可以直接导入SolidWorks继续编辑的粗模型。虽然最终方案我还是自己调的,但那个起点帮我省掉了从零构思的时间。如果你也是设计师、机械工程师、创客,或者单纯对“用一句话生成三维模型”这件事好奇,那这篇文章值得看完。我会把text-to-cad的技术路线、上手步骤、提示词技巧和实际踩过的坑都拆开讲清楚。
1. Text-to-CAD到底在解决什么问题:不只是“文字变模型”
1.1 它和传统CAD建模的本质区别
传统CAD建模的本质是“人指挥软件”:你要在心里先把零件拆解成拉伸、旋转、切除、倒角这些特征,再按顺序告诉软件。这个过程非常依赖经验,一个新手可能连“先建基准面还是先画草图”都要纠结半天。text-to-cad想做的,是把“指挥软件”这件事交给模型:你只描述“我想要什么”,模型根据它学到的大量几何规律,直接推测出“该怎么做”。
但这里有个容易混淆的点——text-to-cad生成的模型,和文生图生成的图片完全不是一回事。图片错了顶多是难看,模型错了就是装不上、加工不出来。所以衡量这类工具好坏的核心指标,不是“看起来像不像”,而是“尺寸准不准、拓扑对不对、能不能被下游工具继续编辑”。我见过不少demo视频里模型渲染得很漂亮,结果一导入CAD就破面,或者是个完全没法修改的三角网格,这种在工程里基本没法用。
1.2 它实际能帮我们做什么
以我个人的实践经验,现阶段text-to-cad最有价值的使用方式不是“替代建模”,而是“快速找形态”。比如你设计一个外壳,脑子里大概有个方向但不确定曲面怎么过渡,丢几句话给模型生成几个候选方案,然后拿回来在CAD里继续细化。这个过程特别像当年从手绘草图到参数化建模的转变:不是让你不画图,而是帮你把“从无到有”的那段路缩短。
具体来说,它适合这几类场景:
- 概念设计阶段的形态探索,快速生成多个备选造型
- 标准件、常用零件的快速占位,比如“M8六角螺栓”“内六角沉头螺钉”
- 给非专业人士用的定制化建模,比如创客描述一个壳子尺寸让AI生成初稿
- 教学演示和快速原型,让你从文字直接跳到3D打印
不适合的场景也很明确:高精度配合面、需要严格公差标注、涉及复杂装配关系的零件。这些还是得靠人进CAD里精修。
1.3 一个典型的text-to-cad工作流
我目前在用的典型流程是这样:先在text-to-cad工具里用自然语言生成一个基础几何,导出STEP或STL,再导入到主用的CAD软件里进行特征重建。如果生成结果质量够好,有些简单的钣金件甚至可以直接切片打印。换句话说,text-to-cad在我的工作流里扮演的角色,更像是一个“24小时在线的草图画手”,而不是一个“自动设计师”。
2. 主流技术路线盘点:从点云扩散到面向CAD的参数化生成
2.1 扩散模型思路:先猜点云,再猜形状
text-to-cad最出圈的一类方法来自OpenAI的Point-E和Shape-E。Point-E的思路是先训练一个文本到点云的扩散模型,先根据文字生成一个粗糙的点云,再用另一个模型把这些点变成网格。听起来很直接,但点云有个天生的短板:它描述的是“空间中的一堆点”,而不是“一个有边有面的实体”。所以这类方法生成的模型通常需要后续做曲面重建,而且重建结果容易有坑,比如表面不光滑、有小孔、拓扑乱七八糟。
Shape-E则换了个路子,不直接生成点云,而是生成一个隐式3D表示(NeRF或SDF),再用Marching Cubes之类的算法提取网格。好处是表面质量比纯点云好一些,坏处是计算量上去了,而且一样难逃“生成的是网格而不是参数化实体”的问题。对我这种最后要进CAD出工程图的人来说,网格模型只能当参考,没法直接出图。
2.2 神经场与隐式曲面:让“形状”变成“函数”
工业级CAD里,模型通常用B-rep(边界表示)来描述——也就是把模型看成一堆面、边、顶点以及它们之间的拓扑关系。与之相对的,神经网络做几何生成时更容易学习隐式表示:用一个函数f(x,y,z)来回答“这个点是在实体内部还是外部”。这个函数训练好了,任何分辨率下都能提取出表面。
这种做法的优势是天然能生成封闭、连续的表面,特别适合有机形状和曲面造型。但问题在于,隐式场提取出来的依然是网格,不是CAD软件理解的那种带特征树的结构。你在SolidWorks里打开一个由网格重建的模型,会看到一大堆“输入”“曲面”“网格”这样的标签,特征树是空的——所有的建模历史都丢了。
2.3 面向CAD的B-rep生成:真正让“CAD”名副其实
现在最值得关注的方向,是直接生成B-rep表示的模型,代表工作比如AutoDesk的CAD-GPT类研究和一些基于Transformer的B-rep生成模型。这类模型尝试把“模型的拓扑结构”看作一个序列,然后像生成文本一样生成CAD操作序列。也就是说,它不仅输出“长什么样”,还输出“怎么一步步建出来的”。
我自己用下来最大的感受是:这类结果的“可编辑性”接近于真实CAD文件。你导入SolidWorks或Fusion 360后,能看到一些特征,能改尺寸,虽然不能像我们手工建的模型那样特征树干净漂亮,但至少能改参数了。生成过程慢是慢一些,可是它生成的是“能用的CAD模型”。这给工程人员带来的价值,是完全另一个量级的。
2.4 各方案的适用性对比
| 技术路线 | 输出格式 | 几何精度 | 可编辑性 | 速度 | 适用场景 |
|---|---|---|---|---|---|
| 点云扩散(Point-E) | PLY/STL网格 | 中低 | 差 | 快 | 概念参考、快速可视化 |
| 隐式场(Shape-E/SDF) | 网格 | 中 | 差 | 中 | 有机形态、视觉呈现 |
| B-rep生成(CAD-GPT类) | STEP/B-rep | 中高 | 较好 | 慢 | 工程零件、可编辑模型 |
| 参数化生成(定制工具) | STEP/参数化特征 | 高 | 好 | 看具体实现 | 标准件、规格化零件 |
3. 实操上手:我用一句话生成一个M8六角螺栓的全过程
3.1 工具选型和环境准备
我在本地跑过ZOO的Text-to-CAD开源项目,也在线用过一些demo。ZOO那个项目目前的体验比较典型:它基于Llama类的语言模型加一个几何生成适配器,输入自然语言,输出可以是文本描述的CAD脚本,也可以直接给出STEP文件。
硬件方面,我用的是一张RTX 3060,12G显存。官方建议显存至少8G,低于这个配置跑起来会非常吃力,甚至直接爆显存。如果你没有合适的显卡,比较省事的办法是用他们提供的在线API或者Colab笔记本跑。本地部署的好处是隐私性好,公司内部图纸不会传到外部服务器,缺点是配置环境那一套比较折腾。
3.2 完整示例:生成一个M8外六角螺栓
我的提示词是这样写的:
生成一个M8外六角螺栓,公称直径8mm,螺距1.25mm,螺栓头部对边距离13mm,头部厚度6.5mm,螺杆长度40mm,头部带倒角,使用右旋螺纹。
等模型跑完后,我最关心的是这么几个维度:整体尺寸对不对、螺纹到底有没有生成、以及导出的文件格式能不能被主流CAD打开。
第一次生成的结果让我挺惊喜的——螺杆长度和头部尺寸基本符合预期,螺纹形状也大概能看出来,但有个细节比较遗憾:螺纹尾部没有收尾,直接一个垂直切面就把螺纹截断了,这在真实加工里是不可接受的。我又补了一句“螺杆尾端需要螺纹收尾,采用退刀槽过渡”,重新生成后螺纹末端才出现了一个类似退刀槽的结构。这说明提示词里的工程细节,真的会直接影响输出质量。
3.3 从生成结果到可制造模型
ZOO这个工具导出格式是STEP,这是好消息。STEP文件能被主流CAD软件直接识别,而且保留了B-rep结构。我导入Fusion 360后做了三步处理:
- 先看特征树——如果生成的是“B-rep实体”而不是一堆网格,那后续修改就有戏
- 用测量工具校准关键尺寸,包括螺栓直径、头部直径、螺杆长度,有偏差的直接改参
- 检查螺纹段的连续性,必要时重新建一个螺纹特征替换掉AI生成的部分
这套流程走下来,一个可以拿去出图的螺栓模型大概花了二十分钟。换成手工从零建,可能差不多时间,但前十分钟省了我大量构思和查标准的工夫——尺寸表都不用翻了,AI记住了M8的标准参数。
3.4 网格模型的补救做法
如果工具只能导出STL网格,也不是完全没法用。我的做法是先导入Blender或MeshLab做网格修复,包括补洞、去除游离面、重算法线,再用Fusion 360的“网格转实体”功能做曲面拟合。这一步对简单的方块圆柱类零件成功率还行,遇到复杂曲面就会出来一堆密密麻麻的小平面,后续倒角圆角基本没法做。所以我的建议是:先尽量选输出STEP的工具;实在只有网格,也要做好“只能当参考,不能直接出图”的心理准备。
4. 提示词设计:让模型听懂“孔距、公差、螺纹”这些工程语言
4.1 为什么提示词决定了生成质量的一半
用过几次之后你会明显感觉到,跟text-to-cad对话和跟ChatGPT对话完全不是一回事。ChatGPT你问个模糊问题,它给你一个模糊但有用的回答;而CAD模型要求精确,一个“大约”“稍微”“有点粗”这样的词,就可能让模型生成完全错误的几何。模型并没有真正理解物理世界,它只是根据训练数据里的统计规律在猜。你要做的,是给它足够明确的约束,减少它的“猜测空间”。
4.2 有效的工程提示词模板
我总结了一套相对好用的提示词结构,分成五个部分:
- 零件类型和加工方式:比如“车削件”“钣金折弯件”“注塑外壳”
- 关键几何尺寸:尽量用“多少毫米”“多少度”这样的精确数字
- 特征与位置关系:孔的位置、阵列方式、对称关系
- 配合与用途:比如“与M8螺栓配合”“安装在30x30铝型材上”
- 排除项和特殊要求:比如“不要圆角”“不带螺纹”“使用退刀槽”
举两个例子。模糊版本:“给我一个电机支架。”生成结果可能是任何形状的三块板拼在一起,高度完全没法用。精确版本:“给我一个用于NEMA17步进电机的前板支架,安装孔间距31mm,中心开直径22mm的圆孔,四角各一个M3通孔,板厚3mm,外形是边长50mm的正方形。”这样出来的东西,哪怕细节有偏差,起码大方向不会错。
4.3 尺寸单位与公差的表达技巧
另一个容易踩的坑是单位。有些工具默认理解的是毫米,但训练数据里混杂了英寸的情况非常常见。我习惯在提示词里每次关键尺寸后面都带上“mm”,不嫌麻烦。公差类信息更要小心,比如“M8螺纹”其实已经隐含了公差等级的概念,但如果你需要精密配合,最好明说“6H内螺纹”或者“6g外螺纹”。模型不一定完全懂这些标准的含义,但你在提示词里写出来,它更倾向于生成带对应语义的几何。
4.4 让模型“动脑子”的几个小技巧
有时候模型生成的特征太多,反而偏离你的需求。我会在提示词里加“这是外观件,不需要内部结构”或者“优先保证外形尺寸,内部可以简化”这样的引导。还有一次我需要一个左右对称的零件,提示词里写了“以XY平面为对称面完全镜像”,输出结果确实是对称的——这说明模型在一定程度上能理解几何关系词,你描述得越像工程语言,它表现越好。
5. 实战中避不开的坑:非流形几何、离群点和破面修复
5.1 非流形几何:听起来吓人,其实很常见
先说一个我几乎每次都碰到的问题:非流形几何。简单理解,就是一个边连着三个或更多面,或者两个面只在一个顶点上接触。这种结构在物理世界里是不存在的,但AI生成模型时经常犯。你在CAD里看到的症状是:模型看起来有实体,但一切换到“边线模式”就发现一堆红色报错,或者做布尔运算的时候直接失败。
修复非流形几何,我目前最顺手的流程是在Blender里开“3D打印工具箱”插件,一键查找非流形边,然后手动挑出来处理。有时候是个把面的法线反了,反转一下就好;有时候是几个面重叠在一起,需要删除重做。处理完再去CAD软件里导入,基本就能正常使用了。
5.2 离群点和孤立小碎块
生成模型时还常见一种问题:模型旁边莫名其妙飘着几个小三角面片,或者离主实体远远的地方有个孤立点。这些小东西平时不影响显示,但一旦做3D切片就会导致打印失败,或者在做有限元分析时产生异常网格。
我一般在MeshLab里用“Quality”过滤加“Delete isolated pieces”功能清理,阈值调到1%,基本能去掉孤立的碎块。如果生成的是点云文件,还要先做一次离群点滤波,方法是用“Statistical Outlier Removal”,把最近邻点数设为50、标准差倍数设为2.5,效果比较稳定。
5.3 破面与漏洞修复的完整步骤
网格模型最常见的问题是破面。我遇到过最夸张的一次,一个法兰盘模型20%的面不见了,看起来像被啃过。修复步骤大概是:
- 在MeshLab里用“Close Holes”填洞,最大边长设为模型整体尺寸的5%
- 检查法线方向,用“Re-orient All Faces Coherently”统一法线
- 如果有重叠面,用“Remove Duplicate Faces”清理
- 导回CAD后,再做一次“网格转实体”尝试
这套步骤对简单外形有效,对复杂曲面只能说几率五五开。所以我现在对网格类输出越来越警惕,能走STEP就走STEP,省下来的修复时间干点啥不好。
6. 我对Text-to-CAD现阶段的理解和我的工作流建议
6.1 它是个“灵感加速器”,还不是“设计终结者”
如果你问我text-to-cad能不能替代设计师和工程师,我的答案是很明确的:现阶段不能。它生成的模型在尺寸、拓扑、工艺性上仍然有大量问题,尤其是螺纹、倒角、内部空腔这些工程特征,出错率还挺高的。
但反过来,它作为“灵感加速器”的价值被很多人严重低估了。我现在的习惯是:接到一个设计需求,先花十分钟用text-to-cad生成五六种形态方案,找到最接近需求的,再拿进CAD里精修。这个过程把“从完全空白到初步形态”的时间压缩到了原来的四分之一,而且因为AI不会带着我原有的思维定式,有时候反而能给出我平时不会想到的方案。
6.2 一个务实的工具链组合
目前我比较推荐的工具链是:ZOO Text-to-CAD做初始生成,导出STEP,有复杂曲面需求再配合Blender做形态处理,最后进Fusion 360或SolidWorks做特征重建和出图。如果只是做概念可视化,那Point-E或在线demo就够用了,不需要本地显卡,浏览器里就能玩。
3D打印场景是另一个快速见效的场景。很多创客需要的是“大概能用的外形”,打印出来再修,这种情况下text-to-cad的输出质量完全够用。我打印过一个AI生成的遥控器外壳,虽然按钮孔的位置偏了0.3mm,但稍微扩孔就装上了。
6.3 接下来值得关注的方向
我目前最期待的是更好地支持“多轮对话式建模”和“带约束的生成”,比如“把刚才生成的模型再改短20mm”这句话不再是重新生成一个全新模型,而是在原模型上直接做特征操作。这类交互一旦成熟,text-to-cad才能真正嵌入到日常设计流程里。
另外,数据集和开源社区的发展也很关键。现在的生成质量很大程度上取决于训练数据里有多少高质量、带标注的CAD模型。如果越来越多企业愿意开放参数化模型数据集,这类工具的能力还会有一次明显跃升。
最后再分享一个个人体会:别被“AI生成”这个词迷惑,哪怕模型给出的结果再离谱,它也是你的一个草稿。草稿的价值在于提供可能性,而不是提供答案。你真正要做的是快速判断哪些可能性能用,然后迅速把它们变成你自己的设计。这个思路,是我用了大半年text-to-cad之后觉得最值钱的一点。