text-to-cad 这几年在设计和制造圈子里热度一直没降过,而且从早期只能生成简单的拉伸体,到现在已经能处理带圆角、倒角、阵列这类中等等级特征的零件,进步相当明显。我本人从第一版开源模型就开始玩,踩过不少坑,也总结了一些实际可用的流程,这篇就围绕 text-to-cad 到底是什么、底层逻辑怎么走、怎么选工具、实际建模时有哪些注意事项,完整梳理一遍。不管你是刚接触这个概念的机械专业学生,还是在企业里做非标设计的工程师,只要想用自然语言直接驱动三维建模,这篇内容都值得看完。
1. 内容整体设计与思路拆解
1.1 text-to-cad 的核心价值
先给第一次接触的朋友解释一下。text-to-cad 就是把一段自然语言描述,比如“一个带有四个安装孔的矩形底座,长100毫米,宽60毫米,高15毫米,孔直径8毫米”,直接转换成可编辑的 CAD 模型文件,通常是 STEP、BREP 这类几何内核数据,而不是一张图片或者一个网格体。
早期很多人在网上看到“文本生成3D”的演示,以为 text-to-cad 就是那种生成 OBJ 或 GLTF 网格的技术,其实完全不是一回事。CAD 模型要求的是精确的边界表示(B-rep),有表面、边、顶点,还要带参数化特征,后续要能修修改改,要能出工程图,要能丢到 CAM 里做加工。网格模型(Mesh)看着像,细节一放大全是三角面片,根本没有精度概念。text-to-cad 的核心价值在于它直接面向工程制造语言,生成的是真正能用的零件几何体。
我理解的本质是:它把“设计意图”翻译成“参数化操作序列”。举个例子,你说“在平面上打四个孔”,模型内部其实知道这是“打孔特征”,孔的位置、直径、深度都要能被参数驱动。这和传统手工建模的思考方式是一致的,只不过过去是通过鼠标点选、输入参数完成,现在是用语言直接表达。
1.2 这个技术适合谁、解决什么问题
text-to-cad 最直接解决的问题是三维建模效率瓶颈。我自己做非标自动化设计时,很多标准件底座、支架、法兰盘,形状并不复杂,但每次都要从草图开始画拉伸、倒角、打孔,重复劳动特别多。有了 text-to-cad 之后,类似“带中心孔和四个螺栓孔的圆形法兰,外径100,内径40,螺栓孔均布在80的圆周上”这种话术直接出模型,再微调一下就能用,效率提升非常明显。
对小白来说,它降低了学习门槛。你要是完全不会用建模软件,又急需一个简单零件模型,描述一句就能拿到基础体,再做局部修改,比从零学一款软件快得多。对资深工程师来说,它更像是一个“灵感速写工具”,快速验证结构可行性,而不是替代精密建模。
需要想清楚的是,text-to-cad 不能解决所有问题。复杂曲面、装配关系、运动仿真、工程图标注,这些光靠一句话很难搞定。它最适合的场景是几何特征清晰、约束明确的机械零件,尤其是回转体、拉伸体、孔槽类结构。如果你要做的是矿机外壳那种大型焊接件,或者需要精密配合的齿轮箱内部结构,还是老老实实用传统方式。
1.3 从文本到模型到底经历了什么
理解 text-to-cad 的流程,可以帮助你更准确地去写提示词。整个处理链路大致是:文本解析 → 语义理解 → 几何生成 → 模型输出。文本解析负责把一句话拆成“零件类型、尺寸、特征、位置”的结构化信息;语义理解负责把这些信息映射到 CAD 建模操作上;几何生成是用算法构建出 B-rep 实体;模型输出再转成 STEP/IGES 等标准格式。
这里最容易出问题的地方是模糊表达。比如“一个稍微大一点的板子”,“稍微大一点”到底多大?模型没法猜。所以我在实际使用时,所有关键尺寸都要写清楚,而且要带上单位。另外“上面有几个孔”这种写法也不够,得明确说“四个孔,均匀分布在以中心为圆心的直径80的圆上”。
2. 核心工具选型与原理辨析
2.1 目前主流的 text-to-cad 方案对比
市面上的方案可以分为几类:开源的文本生成 CAD 模型项目、商业 CAD 软件内置的 AI 助手、以及基于云端 API 的文本转模型服务。我接触比较多的是以下几类,各有特点。
第一类是本地可运行的开源方案。这类工具通常基于 Transformer 架构,训练数据来源于公开的 CAD 模型库。它们可以离线运行,模型权重自己掌握,适合对数据保密要求高的企业。缺点是对硬件要求高,而且生成质量受训练集覆盖范围影响很大,复杂特征容易翻车。
第二类是商业软件内嵌的 AI 建模助手。这类工具的优势是和原生建模环境无缝集成,生成的特征树是标准的,参数可编辑,也不会出现突兀的几何错误。但通常需要付费订阅,而且部分功能依赖云端计算,网络环境不好就用不了。
第三类是基于 API 的通用服务。输入文字直接调用接口返回模型文件。这种方案部署最简单,但长期使用成本高,而且定制化能力有限。
选型要看实际场景。如果只是个人学习,开源方案加一个免费 CAD 软件足够;如果是企业设计部门,建议优先考虑软件内嵌方案,因为可编辑性和后续出图更顺畅。我个人的习惯是,先用开源方案做快速验证,确认结构没问题再导入商业软件细化。
2.2 底层几何表示与生成逻辑
要做文本生成 CAD,首先得明白 CAD 模型内部是怎么存的。主流几何内核用的是 B-rep,也就是边界表示。一个实体由一组面、边、顶点构成,面可以是平面、圆柱面、圆锥面等解析面,也可以是非均匀有理 B 样条(NURBS)曲面。每个面之间通过边连接,边上有拓扑信息。B-rep 最明显的优势是精度高,支持布尔运算、倒角、抽壳这些高级操作。
text-to-cad 模型输出的就是这种 B-rep 数据。目前多数生成思路是分两步走:先通过语言模型生成一个“建模指令序列”,再交给几何引擎执行。这里的建模指令序列类似宏命令,包括“新建草图、切换到前视面、画矩形、约束尺寸、拉伸 20mm”等操作。几何引擎一步步执行这些命令,最终生成实体。这样做有个额外好处:模型是带特征历史的,后面可以修改任意一个尺寸重新生成。
另一个思路是直接预测 B-rep 的拓扑和几何,靠图神经网络来完成面、边、顶点的拼接。这个方法更底层,但目前稳定性不够好,生成的实体常常出现微小裂缝或自相交。所以现阶段工业化的产品大多走指令序列这条路。
2.3 训练数据与语义映射的难点
text-to-cad 的效果很大程度取决于训练数据。公开的 CAD 模型数据集通常包含几百万个零件,每个零件都有完整建模历史。要让模型学会文本到建模指令的映射,需要把建模历史对应上自然语言描述,这本身就是个复杂的数据工程问题。
比如说,一个法兰盘的建模历史可能是“草图圆 → 拉伸 → 打中心孔 → 阵列孔”。但自然语言描述可能是“一个带六个螺栓孔的法兰,螺栓孔均匀分布”,中间的信息并不完全对应。数据标注时就得建立这种语义联系。再加上不同人描述同一个零件可能用完全不同的说法,比如“底座”和“基板”可能指同一类东西,模型必须理解同义表达。
这也是为什么模型生成结果有时会出现“答非所问”的情况。我遇到过描述“一个简单的矩形板” 却生成了带缺口零件的情况,大概率是训练数据里“简单板”类别的样本太少,模型只能靠相似特征补全。针对这个问题,靠谱的做法是加限定词,比如“矩形板,没有其他特征,没有孔,没有槽”,把负面条件也写出来。
3. 实操流程与关键参数设置
3.1 写提示词的黄金模板
和 text-to-cad 打交道一年多,我总结出的一套提示词结构是:零件类型 + 主体尺寸 + 关键特征 + 布局方式 + 特殊要求。零件类型决定基础体是板、块、筒还是法兰;主体尺寸给出长宽高或直径厚度;关键特征指孔、槽、螺纹、倒角、阵列等;布局方式说明特征位置关系;特殊要求包括公差、表面处理、是否需要镜像等。
举个例子,我写过一个用于快速加工的提示词:
生成一个L形支架 主体尺寸:长100毫米,宽80毫米,厚10毫米 L形短边向上延伸50毫米,厚度同样10毫米 在底面钻两个安装孔,直径6毫米,间距60毫米,对称分布在中心线两侧 顶部短边处做一个半径3毫米的圆角 所有锐边倒角0.5毫米这一段话集中了类型、尺寸、特征、位置、圆角倒角等所有信息,生成出来的模型基本不用大改。如果只说“做一个L形支架”,模型大概率会生成一个默认比例的东西,最终还是要手动调整。提示词越具体,结果越可控,这应该算 text-to-cad 用得久的人最深切的体会。
3.2 尺寸与单位的处理细节
不同工具对尺寸单位的默认设置不太一样,有的默认毫米,有的默认英寸,这一点特别坑。我一开始用某个开源模型,提示词里写着“50毫米”,结果生成模型在软件里量一下是50英寸,整个比例完全不对。后来养成习惯,每次提示词里不仅写数值,还要写上单位。更重要的是,生成之后第一步就在软件里检查“单位设置”,先确认文档单位是毫米还是英寸,再缩放模型。
做过设计的人都知道,CAD 建模中单位错误会带来灾难性的后果,加工出来的零件完全报废。所以 text-to-cad 生成的模型,哪怕建模特征看起来很对,也必须做一次标准检查:测量关键尺寸、检查单位、核对特征数量。这个习惯能省掉很多后续返工。
3.3 从文本生成到实体模型的完整操作演示
以某个开源工具为例,实际操作流程大概是这样的。先安装依赖环境,准备好 Python 运行环境并下载模型权重,然后运行命令行工具。我用的是最小可复现的脚本式调用:
import cadgen model = cadgen.load_model("text-to-cad-base") result = model.generate( prompt="一个直径50毫米、高20毫米的圆柱体,顶部有直径10毫米、深5毫米的中心盲孔", output_format="step" ) result.save("cylinder_with_hole.step")这段脚本执行后,会得到一份 STEP 文件。打开自由开源的 FreeCAD 软件导入,检查特征树,能看到“拉伸1”、“孔1”这两个特征,而不是一个光溜溜的实体。这就是前面说的“带特征历史”的意义。要改孔直径,直接双击特征树里的“孔1”把10改成12,模型立刻更新,比重新生成一遍高效太多。
如果是更复杂的模型,比如需要阵列孔,提示词里写“在直径100的圆周上均匀分布6个直径8的孔,孔中心所在圆直径100”,生成后检查特征树,应该能看到“阵列”操作记录。线性阵列和圆周阵列是 text-to-cad 模型经常出问题的点,特征越多、数量越大,越容易漏掉或者重复。生成后数一数特征数,是我必做的验证动作。
3.4 从文本生成到实体模型的完整实操思路
除了工具直接生成,还可以再叠加一层“文本 → 脚本 → CAD”的链路。这种思路特别适合有一定编程基础的朋友。先说思路:把自然语言描述转换成一段 CAD 脚本(比如 FreeCAD 的 Python API 脚本),再执行脚本生成模型。这一步看似绕了远路,其实对复杂零件反而更好用,因为脚本可控性远高于直接生成的模型。
举个例子,如果要生成一组变距螺纹孔,直接在提示词里描述“每个孔之间距离逐渐增加”就很容易翻车,因为模型不理解渐变逻辑。写成脚本循环,每个孔的坐标通过算法算出来,既准确又高效。我的建议是:简单标准化零件直接用 text-to-cad 生成;比较复杂、涉及参数化规律的零件,用 text-to-cad 生成主体轮廓,再用脚本补齐规律特征。
4. 常见问题与排查技巧实录
4.1 特征丢失或多余,怎么定位问题
用得多了,常见的失败类型就那几种:零件主体出来了但孔没打,或者多出来莫名其妙的凸台;尺寸完全对不上;圆角倒角丢失;阵列数量不对;生成结果是网格而不是实体。
遇到这些问题,第一步不是改提示词重试,而是看特征树。特征树能告诉你模型实际做了什么操作。如果提示词写了打孔,但特征树里没有“孔”这项,那说明语义理解没能把“打孔”映射成建模指令。这时候要换一种表达方式,比如把“打孔”说成“在指定位置创建直径10的通孔”,往往成功率更高。
多出来的特征也一样,找到特征树里多余的那个操作,删除或者抑制,比反复重新生成更省事。所以我也经常说,text-to-cad 不是完全替代建模的魔法,而是成年人手里一根比较长的撬棍,最终还得自己动手拧两下。
4.2 尺寸不对或比例失调的处理
尺寸不对绝大多数是单位或者小数格式的问题。模型训练时用的数据可能只保留整数尺寸,你给个 15.75 这种带小数的数值,模型可能直接四舍五入成 16。这种情况用脚本生成参数化模型反而更稳。另外,长宽高差值过大的零件,比如长 200、宽 5、高 3 的细长条,也容易翻车,模型可能把宽高弄反。排查的时候,先用测量工具看三个方向尺寸,别只看某一个方向。
比例失调还体现在厚度上。描述“厚 2 毫米的环”,模型可能生成一个 2 厘米厚的环,十倍误差。这类问题没有通用解法,只能通过“检查 → 修正 → 再检查”的循环逼近。老实说,这也是为什么我不建议直接在生成结果上做加工,而是导入 CAD 软件后重新约束一遍主要尺寸。
4.3 生成速度慢和硬件资源问题
text-to-cad 模型跑在本地时需要 GPU 加速,显存至少 8GB 起步,16GB 比较充裕。我自己就遇到过在 6GB 显存的卡上要等好几分钟的情况,提示词稍微复杂一点还报显存不足。解决办法是给提示词瘦身,去掉无关修饰词,比如“一个美观的”、“看起来很结实的”这类描述。模型计算资源有限,应该全部留给几何信息。
如果公司有内部服务器,还可以把服务部署在远端,自己电脑只发请求。这种方式对硬件要求最低,也方便团队共用模型。个人开发时建议使用量化后的模型权重,内存占用能再降一半,生成质量下降不明显。
4.4 常见问题速查表
| 问题表现 | 可能原因 | 处理方式 |
|---|---|---|
| 整体形状对但孔位缺失 | 语义映射未覆盖特征 | 改写提示词,补充“在…位置创建…孔”的明确句式 |
| 模型单位异常 | 默认单位与提示不一致 | 生成后先检查文档单位,再测量关键尺寸 |
| 特征顺序错误 | 模型对先后关系理解偏差 | 用步骤划分表达,比如“先拉伸主体,再打孔” |
| 阵列数量不对 | 圆周阵列角度或数量预测错误 | 改成明确数量,例如“六等分圆周分布” |
| 生成结果为网格体 | 输出格式选错或模型能力不足 | 查看输出选项是否支持 STEP/BREP,必要时切换方案 |
| 细长结构比例失调 | 数据集中此类样本少 | 生成后手动修改草图约束,或用脚本二次建模 |
| 提示词包含外观描述导致偏出 | 模型将抽象描述混入几何生成 | 删除与几何无关的修饰词 |
| 局部圆角缺失 | 模型只处理了主要面边界 | 改为在建模软件中手动补圆角 |
4.5 实测下来的提示词优化技巧
给模型写提示词有点像跟刚入职的实习生沟通,必须把每一步交代清楚。我常用的技巧是把“然后”、“接着”这类连接词换成带编号的分项描述,比如“第一步生成底板,第二步在四个角创建通孔,第三步在底部创建加强筋”。模型对步骤型输入的解析成功率远高于散文式描述。
另一个技巧是重复关键参数。在描述孔时,极大概率要想清楚直径、深度、类型。我遇到过一个案例,提示词里写着“在顶面打孔,直径 12”,结果模型默认打的是盲孔,深度只有 5。改说“直径12的通孔,贯穿整个板厚”就正常了。孔深作为独立参数,不能含糊。
我自己还习惯在提示词最后加一句“不需要额外特征”,这句话能有效抑制模型自作主张添加圆角或凸台。很多生成结果过度膨胀,就是因为模型出于“泛化”本能加上了它认为常见的特征。负面约束在 text-to-cad 里比正面约束还重要。
5. 现实场景中的可用性评估与扩展建议
5.1 哪些零件最适合用 text-to-cad 生成
刚才提到了,最适合的是中低复杂度机械零件。拿我最近在做的一个小工装来说,需要一块安装板,上面分布不同类型和数量的孔,还要铣一个 45 度倒角。这类零件特征数量在五到十个之间,用 text-to-cad 生成基本没问题,后续只花几分钟调整孔位置。
不适合的是大规模装配体、曲面复杂的外壳以及有严格公差要求的运动部件。比如齿轮齿形、凸轮轮廓,这些需要明确函数曲线和齿轮专业计算方法,自然语言描述出来模型大概率做不标准。又比如注塑件外壳,涉及拔模角度、壁厚均匀性、加强筋布局等大量注塑工艺知识,文本描述很难一次到位。
简单总结,text-to-cad 适合的是“设计需求能用文字说清楚,几何结构不算复杂,精度要求中等”的零件。精度要求特别高的场合,它只能用来做前期的方案论证,真正交付还要靠人在 CAD 里精修。
5.2 从文本到加工之间的缝隙
很多人容易忽略一个问题:text-to-cad 生成的是几何模型,不等于可以直接拿去加工。加工需要工程图,需要标注尺寸公差、表面粗糙度、材料、热处理要求等大量工艺信息。我见过设计师拿生成模型直接去线切割,出来的活尺寸跟理论值差了接近一毫米,原因是模型本身没有指定公差等级,加工厂默认按一般公差走。
正确做法是,用 text-to-cad 得到模型后,再导入 CAD 软件补充标注和属性。这部分工作目前没有完全自动化,需要人工参与。日常用的工作流是:文本生成模型 → 另存为 STEP → 在 CAD 中打开 → 调整关键尺寸和特征 → 出工程图 → 转给工艺人员。这条链路跑顺了,效率提升非常可观。
5.3 结合脚本和参数化设计的扩展玩法
除了直接用现成工具,text-to-cad 还可以和参数化设计很好地配合。思路是把自然语言描述转换成 Python 脚本,脚本里定义参数变量,通过改参数批量产出不同尺寸的模型。这在做系列化零件的时候特别有用。
举个例子,我需要做一系列不同规格的法兰:外径从 80 到 200 变化,螺栓孔数 4 到 12 变化。如果一个个用 text-to-cad 生成,得写很多差不多的提示词。但如果我用提示词先生成一个模板脚本,再把外径和孔数改成变量,循环生成,一分钟就能得到全套模型。这不只是偷懒,反而能保证系列零件之间的建模逻辑一致。
模型生成脚本还有一个好处:可以嵌套数学公式。比如孔的位置和某个尺寸存在函数关系,直接写进脚本,比描述“根据经验公式安装孔位置”靠谱得多。这类玩法可能更适合有编程基础的工程师,但也说明了 text-to-cad 只是一个入口,真正的天花板取决于使用者的设计能力。
5.4 长远视野:text-to-cad 会取代 CAD 吗
聊到这块,总有人问 text-to-cad 会不会让传统 CAD 软件消失。我的看法是,它改变的是交互方式,而不是几何内核。过去我们是用鼠标点菜单,现在是用语言描述,但底层仍然是草图、拉伸、阵列、倒角那一套特征建模逻辑。CAD 软件作为几何内核和工程数据管理器,地位反而更稳固。
更准确地说,text-to-cad 让“设计表达”变得轻量化。以前要完整画好一个零件,必须经历软件的学习曲线;现在有人可以用自然语言直接把自己的想法变成模型,有想法的门槛降低了。但对专业设计师而言,核心价值仍然在于判断一个设计是否合理,材料对不对,工艺能不能做出来,这些都不是文本生成能替代的。
在未来一段时间里,我比较看好的方向是设计前期概念探索。设计师用文本描述大致想法,快速生成多个方案进行比较,然后挑出最合理的方案在 CAD 里深入细化。这个“从零到一”的过程是 text-to-cad 最擅长的,“从一到十”还得靠人。
写在最后的实际体会
接触 text-to-cad 这么久,我最大的感受是它不像很多人想的那样只是“偷懒工具”,而是逼迫你把设计思路整理清楚。你写提示词的过程,其实就是在梳理零件的拓扑结构和尺寸关系。有一个隐藏的额外收益是,为了让模型输出稳定,我养成了给所有尺寸命名、明确公差和表面处理的习惯,这本来是老师傅才有的素养,如今新手也借由这个工具提前养成了。
如果你正准备上手 text-to-cad,我的建议是别指望第一条提示词就能生成完美零件,把它当成试错过程的起点。提前准备一个模板库,把常用的零件描述存下来,下次直接改尺寸,会越用越顺手。更要紧的是始终保留一个心眼:生成模型只能作为方案参考,最终需要人来做合理性检查,这是底线。希望这篇记录能帮你少走一些我走过的弯路。