text-to-cad技术全复盘:从玩具到工具的真实工作流与避坑指南
我第一次看到有人在浏览器里敲一句“给我一个带USB-C开孔的桌面理线架”几秒钟后网页里直接掉出一个可以旋转、测量的STEP文件时脑子里冒出的第一句话是这又是那种“演示很酷、实际用不了”的玩具。毕竟2023年我见过的AI生成3D模型大多还停留在“长得像雕塑一进装配就露馅”的阶段。直到我把text-to-cad这类工具真正接进自己的设计流程用它做了几个要拿去3D打印和CNC加工的小零件我才发现这条路已经悄悄越过了玩具和工具的分界线。这篇东西就是我个人对text-to-cad的完整复盘既有真实跑通的工作流也有翻车记录还有我对“它到底能取代多少传统CAD工作”的坦率判断。如果你是非CAD背景的硬件创作者或者经常做标准件、支架、壳体的机械工程师这篇会给你一个非常具体的上手指引如果你只是想看AI能不能帮你画图也会知道哪些需求现在就可以提哪些还得回去老实开SolidWorks。1. text-to-cad到底解决了什么问题以及它今年为什么终于不再是“玩具”1.1 核心概念先讲清楚两条完全不同的技术路线Text-to-cad从字面理解就是从文本生成CAD模型但这里有个最容易混淆的分歧点。2023年的“文本生成3D”工具绝大多数走的是“文本→三维网格/体素”路线输出STL或OBJ。这种模型最大的问题是没有尺寸语义没有装配约束边缘和孔位都是“大概齐”你拿它做原型演示还行一旦想拿去加工或者装配基本等于重新画一遍。而现在的text-to-cad走的是另一条路“文本→可执行代码→参数化三维实体”。代表性项目是Zoo开源的text-to-cad以及后来基于这套能力做的MAKE产品。整个链条里大模型只负责把自然语言指令转成CadQuery这类程序化建模代码真正的几何计算全部交给CAD内核去精确求解。输出的模型是带真实尺寸的实体而不是一堆三角面片拼起来的空壳。这个区别是决定性的。它等于把自然语言和工程实体之间的桥墩换掉了不再直接猜几何形状而是猜“如何用精确的语言描述几何形状”。后者可控、可检查、可迭代前者只能靠运气。1.2 为什么是2024年以后才突然变靠谱我复盘了一下至少有三个条件同时在2024年集齐了。第一大语言模型在“代码类DSL生成”上的能力提升非常明显。写CadQuery和写Python本质上是一回事LLM最擅长的就是这个。第二CadQuery这种“代码即建模”的工具已经成熟到足够表达工程上的常见特征拉伸、旋转、布尔运算、倒角、圆角、阵列、扫掠一个都不少。第三社区把大量CadQuery/OpenSCAD的建模脚本整理成了可监督的数据集让模型真正学会了“一个垫片应该怎么写一个支架应该怎么搭”。这三个条件缺一个text-to-cad都只会停留在“看起来很美”。现在缺的三个都补上了它才真正意义上成为可以放进生产流程的工具而不是只会摆拍的玩具。1.3 它适合谁不适合谁根据我这段时间的使用体验最适合的有三类人创客和硬件原型设计师脑子里有个大概形状但不想为一个小零件去学一周CAD软件。机械工程师画标准件、支架、壳体、简单法兰这类重复度高的零件时用text-to-cad把初稿拉出来再回CAD里精修。非CAD背景的周边岗位结构工程师、UX设计师、产品经理迫切需要把“嘴上描述的需求”快速变成可视化的三维文件。但也有它暂时覆盖不了的群体需要复杂曲面造型的人比如汽车外饰、消费电子产品A面需要严格装配约束、运动仿真和公差分析的人以及那些一个零件有几十个特征、几十个配合关系的重型机械设计。这些场景下text-to-cad目前基本帮不上忙我也劝你别硬上。2. 一句中文需求到STEP文件的真实工作流一个六角法兰件的手把手复盘光说概念容易飘我把上周实际做过的案例完整拆给你看。这是目前text-to-cad最典型的用法小尺寸、标准几何特征、有明确装配需求。2.1 需求描述越具体越好我当时需要在M8螺栓和一块薄板之间做一个过渡垫片尺寸需求如下六角对边14毫米标准M8螺母的对边尺寸法兰外径24毫米用来增大接触面积总厚度8毫米其中法兰底部厚3毫米六角凸台部分厚5毫米中心有一个9毫米通孔保证M8螺栓能顺畅穿过去上边缘做一个0.5毫米倒角避免划手。这个零件如果我在CAD里手动画两分钟不到就完了但难点在于我那天手边只有一台轻薄本没装专业CAD。把需求丢给text-to-cad整个过程大概五分钟拿到了可用的STEP文件——虽然中间迭代了两次但比另找一台装好软件的电脑快得多。2.2 实际的提示词和迭代过程第一版提示词我写的是“生成一个六角法兰垫片外六角对边14毫米法兰直径24毫米总高8毫米中心孔9毫米倒角0.5毫米。”结果生成的零件出现了一个典型问题六角凸台和法兰盘之间有一个很细的台阶不是一体生成的。也就是说模型在语义上理解了对边和法兰直径但没有理解“这两个特征应该合并成一个实体”这个工程常识。另外倒角被加到了所有边缘上导致法兰底面也被削了一刀。第二次我修正了提示词重点加了三句话“六角体和法兰必须一体生成不要出现台阶”“倒角只加上表面外沿”“中心孔贯穿整个零件”。这一版出来的模型就正常了。尺寸复核全部在公差范围内导出STEP后导入FreeCAD和切片软件都正常。2.3 核心CadQuery代码段复盘这就是“文本转CAD”真正厉害的地方它给的不只是一个模型还会给你一段可修改的CadQuery代码。下面是经过我手动整理后的核心逻辑删掉了噪音只保留主干import cadquery as cq result ( cq.Workplane(XY) .circle(24 / 2) # 法兰基座 .extrude(3) # 法兰厚度3mm .faces(Z) .workplane() .polygon(6, 14) # 六角凸台外接圆直径14mm .extrude(5) # 凸台高度5mm .faces(Z) .workplane() .circle(9 / 2) # 中心通孔直径9mm .cutThruAll() .edges(Z) .fillet(0.5) # 上边缘倒角 )这里有一个所有新手都会踩的坑第一版AI生成的代码里把六角轮廓和法兰圆形轮廓画在了同一个Workplane上然后一起拉伸。在CadQuery里同一平面上两个封闭轮廓会被自动识别为“内部轮廓减料”结果是你得到的是一个中间被掏掉六角孔的法兰盘而不是六角凸台。正确做法必须分两步拉伸先拉法兰再在法兰顶面新建工作平面继续拉六角凸台。这也侧面说明了一个道理——text-to-cad给你的代码不是“银弹”你还是得懂一点建模逻辑否则连AI给你留的雷都发现不了。2.4 为什么我不建议“一条提示词走到底”很多人用这类工具的最大误区是希望一句话直接生成最终零件。以我的经验成功率最高的方式是“需求描述分层递进”第一轮说清楚主体形状和关键尺寸第二轮针对第一版的问题追加约束比如贯通、倒角位置、一体生成第三轮重点检查孔位和公差没问题再导出。这背后的原因很简单语言模型本质是在做概率预测同样是“倒角0.5毫米”它可以理解为所有锐边也可以理解为你指定的某条边。只有你把工程语义写到足够清晰它才能输出可制造的东西。这不是模型笨是人机沟通本来就需要对齐粒度。3. 为什么“生成参数化脚本”比“直接生成网格”更接近一个会画图的工程师这条可能是整篇里最值得你记住的内容。text-to-cad真正厉害的地方不是“文本能出模型”而是它绕开了AI在直接几何生成上的致命短板。3.1 问题的根源LLM最怕做精确数值回归大语言模型天生不适合直接“计算”海量顶点坐标。你让它生成一段话、一段代码它很擅长因为这是词元序列你让它直接生成一个包含几十万个顶点坐标的三维网格文件它会在概率空间里迷失。哪怕每个顶点只有0.1毫米的误差累积起来整个模型就会扭曲、走形、甚至变成非流形碎片。这也是2023年那些直接生成网格的工具做不出可用零件的原因——不是训练数据不够而是任务本身的数学形态就不适合LLM。参数化建模正好避开了这个雷区。模型输出的不再是坐标序列而是一段CadQuery或OpenSCAD代码。三维几何的数值精度完全交给CAD内核去计算内核基于浮点运算能精确到微米级这是成熟的数学求解器强项。LLM只在语义层面上犯错误比如尺寸写错、约束漏掉而这些错误是可见、可读、可修改的。3.2 错误的形态决定了你能不能救回来直接生成网格的模型出错时你看到的是三角形面翻转、法线方向乱掉、内部出现游离面、孔洞位置被拉偏。这种错误基本无救你只能重新生成或者用网格修复软件一点一点补。生成CadQuery代码的模型出错时你看到的是某个参数把24写成了26某一步忘记做cutThruAll倒角选择器选错了边。这些都是文本级别的错误打开代码就能定位改一句重新跑一遍就行。这不是效率的小幅提升而是直接改变了错误修复的成本结构。对我来说这比“多生成两个好用的模型”重要得多。3.3 用圆规的类比如果让我给非技术背景的朋友解释我会这么说直接生成网格相当于让AI徒手画圆哪怕它看了再多的圆在不同位置画出来的圆仍然会有肉眼可见的抖动而text-to-cad是让AI学会用圆规它负责把圆规的脚挪到正确的位置、调整正确的半径剩下的交给机械结构去完成。圆规本身不会画歪AI需要做的是确保自己没有把半径看错。这也解释了为什么参数化生成出来的模型可以稳定放进装配因为它的圆是真正的几何圆有解析定义有精确尺寸可以在CAD里继续做布尔运算、倒角、装配配合。而网格模型的“圆”是假的只是一个逼近的折线一旦你继续做工程操作误差会像滚雪球一样放大。4. 工具实测对比从Zoo的text-to-cad到原生CadQuery我到底怎么选现在市面上能跑的方案不止一个我把它们放在一张表里方便你对号入座。4.1 主流方案速览表方案输出格式可靠性适合人群学习成本主要优势Zoo text-to-cad / MAKESTEP、STL、3MF中偏高创客、快速原型、非CAD人员很低网页端开箱即用有中文自然语言入口自部署text-to-cad开源模型CadQuery代码、STEP等高需调Prompt或微调开发者、对隐私有要求的团队中数据不出内网可定制训练LLM接口 原生CadQuerySTEP高机械工程师、Python用户中高工程约束介入深代码完全可控LLM OpenSCADSTL、DXF、OFF中程序员、参数化建模爱好者中语法更接近数学表达适合生成族零件传统三维网格生成工具STL、OBJ低仅做创意预览低视觉表现力强但无法用于制造4.2 我实际用下来的选型经验先说结论追求开箱即用选Zoo的text-to-cad或MAKE尤其适合那些“我不太会写代码但能说清楚需求”的人。它生成的STEP文件质量足够日常原型使用而且迭代到第二版以后能明显感觉到它在往你约束的方向靠拢。但如果我要做的是“需要配合现有装配、孔径有严格公差、还要自动化批量生成”的零件我会直接绕过网页端把CadQuery写成一个函数模板然后让LLM只负责填充参数。举个例子我需要生成几十种不同规格的垫片只需要定义好类让模型根据螺栓规格自动算好对边、外径、孔径再批量输出STEP。这种方式工程上更彻底因为尺寸检查可以做成自动化脚本而不是肉眼盯绘。如果你偏好OpenSCAD那它更适合做数学表达强的参数化族零件比如齿轮、螺纹、球体阵列。OpenSCAD的语法非常“函数式”LLM理解它也不难但它的操作逻辑和CAD传统建模习惯差别很大从CadQuery迁移过来需要一点适应时间。4.3 用LLM辅助CAD建模时最容易犯的错我必须拿出自己的翻车记录来警示你。第一绝对不要只靠第一版生成结果下结论。第一版几乎一定有遗漏要么漏了孔、要么漏了倒角把它的输出当成“初稿”而不是“终稿”去对待。第二让模型“读回”自己生成的代码并复述几何结果是个极好的纠错手段。我经常用的是让它用自然语言重新描述一遍“现在这个零件有哪些特征各自尺寸是多少”然后再人工判断它有没有说错。这个“自我解释”的过程能暴露很多隐藏尺寸错乱。第三任何AI生成的代码都要在执行环境里跑一遍单元检查比如用CadQuery自带的边界框检查确认模型的整体尺寸范围符合预期。我没有做这一步的一个零件最后打印出来外轮廓足足大了1.8毫米问题就出在模型把24毫米理解成了半径结果一打印直接超出配合边界。5. 生成模型投入制造前一定要做的清理我在3D打印和CNC上踩过的坑text-to-cad生成的模型大多数情况下是“干净的”但“干净”和“能加工”之间还差着一整套检查流程。这一步我劝你不要省否则前面省下的时间会在打印仓里加倍还回来。5.1 先检查单位与比例这比什么都重要AI偶尔会把毫米、厘米、英寸搞混尤其是当你提示词里混用了“毫米”“米”这类单位词时模型可能生成一个名义上是24毫米、实际缩放成24厘米的庞然大物。我习惯在拿到模型后第一步就是测量整体边界盒放在任意CAD软件里看最大尺寸。如果预期是24毫米显示却是240毫米二话不说直接打回重生成。5.2 检查实体闭合性与流形性CadQuery导出的STEP文件在正常分支下都是闭合实体但AI偶尔会调出一些非主流的构建方式比如用曲面闭合失败的方式做Loft或者生成自相交几何。这些模型导入切片软件时会报错或者打印出来出现诡异的分层。最简单的检测方法是用FreeCAD的Part工作台跑一次Check Geometry它会明确告诉你有没有无效面、自相交、非流形边。这一步通常一分钟不到但能挡住不少问题。5.3 检查壁厚、孔位和最小特征尺寸这是制造层面最容易翻车的地方。FDM打印时最小可靠壁厚一般建议在0.8毫米以上孔位还得考虑材料收缩和切片补偿。一个实际经验如果你的提示词要求了一个直径8毫米的通孔而你是用FDM打印的切片软件为了保证壁厚会把实际孔略微缩小最后螺栓可能塞不进去。我给M8螺栓做垫片时最终选择了9毫米通孔就是给打印误差留了余量。CNC加工则是另一套逻辑刀具半径决定了你无法加工太小的内角内直角必须设计成圆角。text-to-cad如果只是照着你说的“内直角”原样生成加工方大概率会退回图纸让你改。所以我的做法是在生成模型时就主动在提示词里写明“内角处加R2或R3圆角”避免后面手工返工。5.4 把验证流程固定成一个清单我现在无论生成什么零件都强制走同样的四步在FreeCAD里运行Check Geometry确认实体合法在切片软件里打开STL用剖面模式看壁厚和孔径是否在理想范围内检查所有倒角、圆角是否造成了相邻面的自交问题如果这个零件要进入装配就把STEP文件拖进装配项目用干涉检查工具跑一遍确认没有穿模。这套流程走下来基本能把AI生成模型的不确定性压制到和传统建模相当的程度。6. text-to-cad会不会取代传统CAD我说点自己干出来的体会这个问题我经常被问到尤其在工作室里和几个老工程师聊起这个话题时气氛总是会变微妙。我的判断是它不会在短期内取代传统CAD但它会非常确定地改变CAD的入口格局。6.1 取代不了的部分复杂装配和行业深度传统CAD真正值钱的不只是“画三维”而是围绕三维展开的一整套工程能力装配约束、运动仿真、钣金展开、管路布置、电气布线、紧固件库、公差分析、BOM管理。这些东西绝大部分沉淀在软件操作里沉淀在企业的标准流程里甚至沉淀在老师傅的经验里它们不是“一句话能描述清楚的”因此也不是text-to-cad现在能替代的。比如你要设计一个包含上百个零件的机械臂关节组每一个零件之间的配合关系、载荷条件、材料选择靠自然语言描述出来的信息密度远远不够。6.2 一定会改变的部分CAD的入门门槛被砸破了过去一个人想把脑子里的想法变成三维文件最短的学习路径也要一两周甚至更久才能画得像样。现在一个完全不懂CAD的产品经理只要他能描述清楚自己要什么三分钟内就能拿到一个基础的STEP模型。这个“入口下沉”的效应会直接催生大量从前被技能门槛挡在门外的新设计者也会让专业工程师从重复性最高的标准件和初稿建模里解放出来。6.3 我真实工作流里的变化最近一个月我开始把text-to-cad用在三件事上标准件快速建模、前期概念方案评估、以及给供应商提供沟通用的参考模型。以前的流程是客户说“大概长这样”我打开CAD从零开始拉半小时模型然后截图发过去对方说“不对是那样”我再改二十分钟。现在我会先用text-to-cad把多个方案一次性生成出来大家对着模型讨论比对着文字快得多等大方向确定了我再回传统CAD做正式的工程化建模。6.4 最后分享一个我个人的操作习惯每次用text-to-cad生成完模型我从来不会直接删除那段CadQuery代码而是会存进一个本地代码库备注上“当时的需求描述是什么”“最终修改了哪几个参数”。这个习惯帮我建立了一个“参数化零件库”。下次再遇到相似需求我只需要调整几个数字模型就能在几秒内更新完甚至不用再麻烦AI。text-to-cad对我来说现在到底是什么定位我更愿意把它看成是一个态度端正、手脚麻利但偶尔会粗心的初级绘图员。你得给它清晰的需求得检查它的工作成果得容忍它偶尔犯的低级错误。但如果你愿意花这几分钟做校对它替你节省的时间足以让你把精力放在真正需要工程判断力的那些事上。这大概就是现阶段人和AI合作画图最舒服的距离。