1. text-to-cad到底解决了什么问题
1.1 工程师的痛点:建模的门槛与时间成本
做产品设计、机械结构、3D打印的兄弟们应该都有同感:建模型这件事本身并不难,难的是把脑子里那个还比较模糊的想法,快速变成一个能编辑、能出图、能加工的实体模型。以前用SolidWorks,画一个简单的法兰盘都要先选基准面、再拉伸、再打孔、再倒角,一套操作下来,光点鼠标的时间就得几分钟。如果是非标件,改尺寸、改位置,改一次就要重新梳理一遍特征树,很容易被冗长的操作步骤耗尽耐心。很多时候,设计初期的想法是跳跃的、粗颗粒的,等你一步步在软件里把几何搭出来,最初的灵感已经凉了一半。
text-to-cad这一类工具要解决的,正是这个"从想法到模型"的中间环节。它的目标很直接:你输入一句话,描述清楚你想要的零件长什么样,它给你一个参数化的三维实体模型——不是一张图片,也不是一个只能看不能改的网格摆设,而是一个带着建模特征、能够修改参数、能够导出STEP或STL送去加工的真实CAD模型。我第一次接触text-to-cad时其实是持怀疑态度的,因为市面上喊着"文本生成3D"的产品并不少,但许多生成的都是OBJ、GLB这类网格文件,好看归好看,根本没法进工程软件里改参数,更没法用于CNC编程或者有限元分析。而text-to-cad背后走的是另一条路:它尝试直接生成带有建模历史的参数化模型,输出之后还能用主流CAD软件继续编辑。这个差异,就是它真正能落地、而不是停留在演示层面的关键。
1.2 从"手把手建模"到"一句话建模"的本质变化
传统建模是局部操作加逐步堆叠,你每做一个特征,都是在跟软件做一次交互,本质上是人在替计算机"跑流程"。text-to-cad把建模变成了一次"语义到几何"的映射:你说"需要一个底座为100x80毫米、四角带直径6毫米通孔的安装板",它通过大模型解析这句话,拆解出基体尺寸、孔位、孔径、孔数,再把这些约束转换成程序化建模代码,最后生成实体。这个转变看起来只是"输入方式变了",但对工作流的影响非常大。实际测试下来,一位有一定经验的设计师用text-to-cad生成一个中等复杂度的零件,也就是几十秒到一两分钟的事;传统方式哪怕熟练工,连建模带检查也要五到十分钟,如果中途改几次尺寸,时间还会进一步拉长。
更重要的是,建模者的角色从"手动操作者"变成了"需求提出者和结果审核者"。你不需要再去记特征树的层级关系,不需要反复切换草图平面,不需要担心拉伸方向选反了,你需要做的是把需求表达清楚,然后检查生成结果是否符合预期。这个过程中,人的精力被释放到了更重要的结构设计和功能验证上。
另外,text-to-cad天然适合做参数化族库的批量扩展。比如要建一批不同规格的安装支架,只需要把提示词里的关键尺寸抽成变量,用脚本循环调用生成接口,几分钟就能生成几十个规格的STEP文件。这在手动建模时代几乎是不可能完成的任务。我记得初版测试的时候还有一些明显的识别错误,比如把"四个孔"理解成"六个孔",或者圆柱面被生成成多边形逼近;但从整体验证情况来看,mesh类生成工具做不到的"可编辑参数化实体",text-to-cad是真正做到了。下面我会把原理、实操、踩坑、以及我自己的工具链选择都拆开讲一讲。
2. 技术路径拆解:从文本到参数化模型的几条主流路线
2.1 大模型加程序化建模代码生成,而不是直接生成几何
说到文本生成3D,很多人会想到点云生成、NeRF拟合、扩散模型,这些技术主要输出网格模型。text-to-cad中最有工程价值的一条路线,是让大模型"写代码",再用程序化建模库去执行这些代码生成几何。具体来说,工具内部大致是这样的流程:用户输入自然语言,内置的模型将文本解析为一个结构化的建模指令序列,然后调用CadQuery或类似的程序化建模库去执行这个序列,最终完成拉伸、打孔、倒角、布尔运算等操作,产出BREP实体。整个过程对用户来说只是一句话的事,但后台发生的是"语义理解→代码生成→几何内核求值"三个环节。
为什么选这条路,而不是直接端到端输出网格?答案其实很朴素:网格模型很难再做参数化修改。一个正方形底座如果生成了10万个三角形,你想把宽度改成原来的1.2倍,网格上没法直接改,只能重新生成;而程序化生成保留了建模逻辑,相当于你拿到的不是一张"照片",而是"Photoshop源文件"。只有保留了源文件,模型才是真正可控、可迭代的。对于工程师来说,这种"可控感"比生成速度重要得多。所以,text-to-cad与其它AI生成3D工具最核心的分水岭,不在于生成效果多惊艳,而在于生成结果是否具备工程属性。
2.2 从CSG、B-Rep到参数化实体的工程基础
这里稍微展开一下背后的几何基础知识。CAD里有两套主流的实体表达方式:CSG(构造实体几何)和B-Rep(边界表示)。CSG有点像搭乐高积木,一个物体被拆成几个基本体,用并集、差集、交集组合起来。CadQuery、OpenSCAD这样的脚本建模工具本质上都是CSG思路。它的优点是逻辑清晰、代码可读,也非常适合AI生成,因为每一个特征都能对应到明确的代码操作;缺点是对于复杂曲面表达能力有限,像手机外壳那种连续曲面很难用几个基本体拼出来。B-Rep则是用边界信息描述实体,比如一个圆柱的侧面、上下两个面、两条边,Fusion 360、SolidWorks底层都是B-Rep/NURBS。B-Rep能描述更复杂的曲面,但数据结构复杂,对AI来说输出空间巨大,直接生成的难度高很多。
目前text-to-cad路线大多落在CSG和程序化建模这一侧,用CadQuery生成带参数历史的模型,再通过OCCT几何内核转换为BREP,导出STEP。这一步是工程可用的关键:生成的模型可以拿去CAM、切片、有限元分析,也可以导入主流的CAD软件里继续编辑。我见过一些朋友问"为什么不直接用AI生成原生SolidWorks文件",这里面既有格式私有化的原因,也有几何表达复杂度的原因。文本生成模型优先选择通用性最强、最容易被下游工具接受的STEP中间格式,显然是更理智的工程决策。
2.3 多模态输入与生成质量的分辨率权衡
后来很多进阶版本的工具已经不只接受纯文本了,有的支持"文本加参考图"作为输入。比如你给一张手绘草图,旁边加一句"把厚度改成3毫米",它能将两者对齐后生成模型。老实说,多模态输入是text-to-cad落地的必经之路,因为纯文本描述空间几何结构,在复杂场景下还是容易产生歧义。语言能描述"一个带安装耳的壳体",但安装耳的具体曲率、倒角半径,文字很难说清楚;这时候一张参考图就能大幅消解歧义。我在实际项目中用参考图加文本的组合,生成结果的可用率明显高于纯文本,尤其是在涉及异形曲面和空间角度的时候。
还有一个需要权衡的维度是生成速度与精度。实际观察下来,工具在生成早期阶段会输出较粗的中间结果,然后经过内部优化逐步收敛到更精确的几何。如果只追求快,得到的可能是相对规则、相对简单的建模步骤,遇到复杂形状时细节会缺失;如果愿意多等一些时间,得到的模型在几何精度上会更接近预期。对大多数机械零件来说,规则几何占主导,"生成时间几十秒"完全在可接受的范围内。我的判断是,现阶段text-to-cad更适合用在"几何确定性高、结构清晰"的零件上,而不是一开始就去挑战自由曲面。
3. 实操过程:跑通一个真实零件
3.1 工具选择与环境准备
先讲我目前常用的工具链。我最早是在Zoo的text-to-cad在线工作台上体验的,网页上直接写提示词就能生成模型,输出可以下载STEP、STL等格式,对新手非常友好。后面为了做批量生成,我切换到了Python SDK的方式,因为它能跟脚本、参数配置结合起来,效率高很多。如果你只是想体验一下,我建议先用免费在线工作台跑通一个简单例子,理解它的能力和边界之后,再决定要不要上SDK做深度集成;如果你已经有明确的自动化需求,直接走API会更顺手。
用Python调用时,环境配置其实就三件事:注册账号获取API key、安装Python SDK或命令行工具、确认本地网络能够正常访问接口。安装命令行工具非常简单:
pip install zoo-text-to-cad-cli安装完成后,一条命令就能生成CAD文件:
zoo text-to-cad "2mm radius fillet on the top edge of a 100x80x10mm plate" -o output.step用Python写自动化的话,核心代码大致是这样:
from zoo.workflows import run result = run( "Create a rounded rectangular plate with 4 through holes", output_formats=["step"], ) result.save_to("plate.step")如果本地没有Python环境,直接打开在线工作台就可以了,界面里能看到生成预览和建模步骤的时间线列表,操作零门槛。我第一次使用的时候,整个流程走下来不到五分钟就拿到了一个能够导入Fusion 360的STEP文件,这个"从零到一"的体验速度,确实是传统软件给不了的。
3.2 提示词怎么组织才不容易翻车
这是整篇文章里我最想分享的实操心得。text-to-cad对提示词的组织方式,和画图类AI完全不同。画图AI吃的是氛围感和风格词,而text-to-cad吃的是约束、尺寸、特征顺序。很多人第一次用,习惯性地输入"做一个好看的带孔的板子",结果生成出来的东西完全没法用,原因就是缺少可计算的几何约束。我踩过很多次坑之后,整理出一套相对稳定的提示词组织方法:
- 先说主体形状和整体尺寸,再说局部特征。
- 尺寸统一使用毫米,避免混用单位。
- 特征尽量用一条短句说完,不要堆砌形容词。
- 涉及阵列、对称时,明确写清楚数量和分布方式。
- 涉及圆角、倒角时,直接给出半径或距离数值。
用一个真实例子说明。这是我在测试中反复调整后比较满意的一条提示词:
创建一个安装板:长100mm,宽80mm,厚10mm,四个角各有一个直径6mm的沉头孔,中心有一个直径20mm的圆孔,四周边缘倒角1mm。
在工具上输入这条提示词,它会生成一个带有拉伸基体、阵列孔位和边缘倒角的模型。整个过程中我完全没有碰建模界面,只在文本框里输入了一段需求文档。如果改成"一个好看的带孔的板子",结果往往会缺失尺寸、缺失孔位,甚至出现孔洞与基体不匹配的情况。所以,对text-to-cad来说,写提示词更像是在写需求文档,而不是在写诗。
3.3 生成结果的检查与后处理
拿到生成结果后,第一步是检查几何是否封闭。在线工作台通常会给出预览和模型树,如果某些特征步骤被标记为失败,就需要回到提示词去修正表达。我个人实操时固定做三个检查动作:
- 检查主尺寸,用测量工具对比长、宽、高以及孔径是否与预期一致。
- 检查特征数量,确认孔的数量、阵列的数量、倒角的位置符合需求。
- 检查布尔运算结果,特别是孔洞相交区域和倒角边缘是否有自相交或干涉。
如果只是小问题,比如某个倒角半径不对,不需要重新整体生成,直接在模型编辑器里改参数即可。因为生成的是参数化模型,你也可以导入FreeCAD或者Fusion 360后继续调整。这里分享一个真实发生的例子:在一次批量生成法兰盘的任务中,我在提示词里写了"6个均匀分布的直径8mm孔",结果只生成了5个孔。排查后发现,问题出在"均匀分布"这个描述上,工具默认从某个角度开始均布,但数量解析时出现了偏差。后来我把描述改成"沿圆周均匀分布6个直径8mm的通孔",问题就消失了。提示词里的歧义,比模型本身的问题更常见,这一条值得反复强调。
4. 常见问题与排查技巧实录
4.1 提示词被"误解"的三种典型情况
第一种是数量歧义。"4个螺栓孔"有时候会被解析成"一组阵列螺栓孔",数量会多出来。解决方法是给出绝对位置或绝对数量,比如"在矩形四角各生成1个直径10mm的孔",这里"四角各1个"比"4个孔"要明确得多。
第二种是单位歧义。工具默认单位是毫米,但如果你写了"5cm",它可能当成5mm处理,也可能直接报尺寸冲突。我的建议是一律使用mm,不要混用单位。涉及英制尺寸时,提前换算好再写入提示词。
第三种是特征顺序歧义。描述"先拉伸再倒角"和"先倒角再拉伸",得到的几何结果可能一样,但在模型树里不一样。如果最终模型你希望保持某个特征顺序,比如让孔洞在倒角之后穿透,提示词里要有序描述,或者用工具提供的步骤参数手动指定。实际操作中,我遇到的最多问题就是布尔特征顺序导致孔洞边缘被倒角破坏,把特征顺序调整一下就解决了。
4.2 问题排查速查表
整理一个排查速查表,碰到问题可以对照着看:
| 现象 | 大概率原因 | 处理方法 |
|---|---|---|
| 孔数量不对 | 数量词与位置词冲突 | 改为"四角各1个孔"这类绝对表达 |
| 圆角半径看不出来 | 尺度太小,被后续布尔特征覆盖 | 加大半径,或调整特征顺序 |
| 生成失败 | 提示词包含矛盾约束 | 拆分描述,减少同时出现的修饰词 |
| 输出STL而不是STEP | 工作台默认格式或参数未指定 | 显式指定 output_formats=["step"] |
| 模型无法编辑 | 使用了网格生成模式 | 确认处于参数化CAD模式 |
| 尺寸和预期差很多 | 单位混用或数值识别错误 | 统一使用毫米并写明数值 |
| 孔位偏移 | 均匀分布缺少起点定义 | 补充角度起点或绝对坐标 |
这张表看起来简单,但真正跑项目时能省很多时间。我的建议是遇到问题先不要急着骂模型,先把提示词拆开检查一遍,百分之七八十的问题都出在语义表达不够精准上。模型本身当然也有识别错误的时候,但给人的总体印象是:它比你想象的更依赖清晰输入。
4.3 工程集成的三个注意点
想把text-to-cad接进现有设计流程,有几个点特别容易踩。
第一,文件格式统一。现代CAD工作流里,STEP是最稳妥的中间格式,能保留实体几何且被几乎所有CAD软件读取。STL适合3D打印,但精度和可编辑性都差。所以在自动化流程里,我输出的文件一律是STEP,后面再按具体使用场景转格式。
第二,生成结果需要人工审核。目前工具仍有语义理解偏差,千万别直接从API输出就送到产线。我经历过最深刻的一次教训,是在生成一个带加强筋的壳体内腔时,模型把筋的厚度做成了5mm,但提示词里写的是0.5mm。如果当时没检查直接拿去开模,就是废模事故。现在我的流程里固定加了一道人工检查关卡:所有AI生成模型必须过尺寸标注加特征树确认,确认无误后才能进入CAM或开模阶段。
第三,版本管理。AI生成的模型本质上也是一种代码产物,建议把提示词、版本号、参数变量一并记录在工作流里。你可以把提示词直接写入模型的自定义属性或元数据,后面调试和追溯时会轻松很多。我自己维护了一个提示词版本库,每次迭代都把有效提示词和无效提示词记录下来,这样再遇到类似需求时可以直接复用,不用从零开始试。
5. 我的一线心得与后续扩展思路
5.1 什么时候适合用text-to-cad,什么时候不适合
用了一段时间之后,我对适用范围有了比较清楚的判断。适合的场景主要是四类:机械标准件的快速建模,比如法兰、垫片、螺栓;安装支架、底座这类规则件的概念设计;结构设计中的多方案快速对比;以及标准件族库的批量生成。这些场景有一个共同特点:几何以规则体为主,设计变量清晰,自然语言能描述出关键约束。
不适合的场景也很明确:复杂曲面外观件、需要精细曲面造型的产品,比如消费电子外壳、汽车内饰件;复杂装配体;以及涉及大量曲面连续性约束的建模。这类设计依赖曲面控制点、连续性条件、分模线等专业操作,纯文本描述的信息量严重不足。强行用text-to-cad只会得到形似神不似的结果,后续修复成本比从头画还高。我见过有人拿text-to-cad生成笔记本电脑外壳,折腾了一个下午,最后还是回到传统曲面建模重画了一遍。工具选型这件事,想清楚边界比盲目追求"AI替代"更重要。
5.2 结合参数化和AI提示词的工作流扩展
我目前最常用的工作流是"Python脚本加API调用加本地CAD审核",整个流程分成五步:
- 把常用零件族的尺寸参数抽成YAML配置文件。
- 用Python循环读取配置,拼成标准提示词。
- 调用SDK批量生成模型文件。
- 脚本自动加载模型并与名义尺寸比对,标注超差项。
- 人工审核超差项和特殊特征后,输出复用。
这套流程跑下来,本来需要两天的标准件族库整理工作,压缩到了半天。准确率不是百分之百,但主尺寸准确率已经足够支撑前期选型和验证,剩下的人工微调只是一小部分。这里最关键的一点是:参数化模型给了你"修改"的机会,这是网格生成模型给不了的底线保障。换句话说,即使AI第一次生成的结果不完美,你仍然可以在参数化基础上快速迭代,而不是推倒重来。
5.3 给新手的实操建议
第一,不要一上来就拿text-to-cad挑战复杂曲面。直接生成车灯罩、鼠标外壳、异形手柄,大概率会很快丧失信心。从简单零件练起,比如法兰、垫片、支架,这类规则零件是它的舒适区,成功率高,也容易建立对工具能力的准确认知。
第二,提示词里把每一个数值都写清楚。宁可啰嗦一点:"一个长120mm、宽60mm、厚8mm的铝合金安装板,中心开一个直径30mm孔,四个角各开一个直径5mm孔",也不要写"一个中等大小的板子,上面有几个孔"。从语义到几何的翻译过程,数据是唯一可靠的锚点,没有数据的描述等于没有约束。
第三,生成完一定要检查模型树。工具给你的不只是实体,还有一个可追溯的建模步骤序列。检查模型树相当于看它在哪一步出了问题,这远比盯着渲染图猜测要高效。如果某个特征生成失败,模型树会直接告诉你失败的位置和原因,你只需要针对那一步调整提示词即可。
结尾
说实话,我很长一段时间是排斥AI生成CAD模型的,总觉得机器不懂设计的意图。但实际用了text-to-cad之后,我自己的结论是:它确实不懂设计意图,但它能帮你把"已经想清楚的意图"变成模型的速度,比人手快得多。而"把意图想清楚"这件事,恰恰是设计师的核心价值,AI并没有替代这个环节,它只是帮你把后面重复枯燥的执行过程大大缩短了。
我个人现在把text-to-cad当作一个"初级工程师加建模加速器"来看待。它解决的是从想法到实体的最后一公里,而不是替代你做方案决策。对于所有想尝试的朋友,我的建议很简单:今天打开工作台,用一个最简单的零件跑通一次。试完你自然会知道,哪些环节它可以帮你省时间,哪些环节你仍然必须自己动手。工具值不值得长期用,不是听别人说,而是看你自己跑通一次之后的体感。