
去年年底我接了一个挺尴尬的活儿要给一个设备外壳设计一个安装支架客户要求两周内出三维模型和加工图。我本身不是专职CAD工程师主职是机电系统集成SolidWorks的水平停留在“能拉伸、能切孔、能导出STL”的程度碰到不规则曲面就手忙脚乱。就在那段时间我注意到“text-to-cad”这个概念开始频繁出现在圈子里——用自然语言直接让AI生成CAD模型。说实话我一开始是抱着看热闹的心态去试的但试完之后发现这个方向和我预想的完全不一样。它真正改变的不是“会不会画画”而是“能不能把自己的想法快速变成可编辑、可制造的三维模型”。这篇文章就把我这段时间的实测过程、踩过的坑、以及我对这套工具链的理解整理出来不吹不黑给你一份可以照着操作的经验参考。1. 从一句自然语言到一颗螺栓孔text-to-CAD真正解决的问题1.1 我对“让AI画三维模型”的天然怀疑在真正上手之前我对这类工具是持怀疑态度的。过去十年我们见过不少“文本生成3D”的demo最典型的就是输入“一只戴着帽子的柴犬”然后网络模型哗啦啦给你生成一个三角网格文件STL。这东西当头像、当游戏道具、当手办原型确实有意思但你把它拖进SolidWorks或者FreeCAD会发现它是个“死疙瘩”——没有特征树、没有草图、没有可编辑的尺寸你想改一个孔的直径都得用删面重建这种野路子来操作。做产品设计的人都知道CAD文件的真正价值不是那个“看起来像”的曲面而是背后的参数化逻辑哪个面依附于哪个草图、圆角是倒在哪条边上、螺栓孔的阵列由几个变量控制。没有这些模型就是一次性的雕塑不是工程资产。我当时的心里话是如果text-to-CAD只是把“文本生成立体网格”包装成新概念那它就是个换汤不换药的玩具。如果它真能生成带特征树的实体模型那这工具就值得好好研究。1.2 text-to-3D是“捏泥巴”text-to-CAD是“造砖头”这两者的技术路线差异决定了它们能走多远。text-to-3D主流做法是用扩散模型类似图像生成的那个思路直接在三维空间里预测体素、点云或者SDF隐式场最后提取成三角网格。它能塑造出复杂的有机形态比如动物、人物、场景道具但这种网格天生就是“表示形状”的材料没有拓扑关系也没有“这根柱子是阵列出来的”这种语义信息。真正的text-to-CAD走的是另一条路。以我用的Zoo系工具和Text2CAD开源项目为例它们的核心机制是让大语言模型理解自然语言再让LLM生成一段可执行的CAD脚本通常是CadQuery、OpenSCAD或者Python代码然后本地执行脚本编译生成真正的实体模型导出为STEP、STL、DXF等工业格式。这里的关键词是“脚本即特征”。你看到屏幕上那个法兰盘、那个底座底下全是一行行可读的建模语言。你改一个变量模型跟着变你删一行倒角代码特征就消失。这本质上就是在创造B-rep实体只是生成方式从“鼠标点按拖拽”变成了“语言描述加脚本编译”。我用一个粗糙的类比来解释text-to-3D像捏泥巴捏完是一个整体想改五官就只能重新捏text-to-CAD像造砖头每一块砖都能挪动、替换、量尺寸。前者适合创意表达后者才适合工程落地。1.3 自然语言建模的边界它不是万能草图师明确了底层逻辑之后我对text-to-CAD的边界也有了判断。它擅长的是“规则明确、几何清晰、参数可描述”的零件比如法兰、支架、外壳、卡扣座、散热孔阵列这些标准机械件。这类零件本身是程序化设计的产物用文字描述绰绰有余。但你要是想让它生成一辆车的流线型引擎盖、一套符合人机工学的鼠标外壳或者一堆自由曲面拼接的消费电子外观它目前会变得相当挣扎。因为这类设计依赖大量交互式草图扫描、曲面拟合、G2连续判断这些不是靠一句“圆润一点”能传递的信息。这个认知特别重要。你只有先搞清楚它行与不行的分界线才不会拿它去干注定失败的事情也才知道怎么给AI“下需求”。下面我详细说说我实测过的几条落地路线。2. 我实测过的几条落地路线写脚本的黑盒、白盒和灰盒2.1 路线A类Zoo架构——让LLM直接写CadQuery脚本这一条路线是目前最成熟、最接近“工程可用”的方向。Zoo是最典型的代表Text2CAD开源项目也基本沿用同一套架构。它的工作流程是这样的你在输入框里打一句“创建一个法兰底座外径80毫米内孔25毫米四个直径6.6毫米的螺栓孔分布在直径60毫米的均布圆上法兰厚度15毫米。”后台的LLM会把这句自然语言拆解成一系列建模指令然后生成一段CadQuery脚本。这段脚本会用变量定义各个尺寸、用语义清楚的操作依次构建基础特征、拉伸、挖孔、阵列。紧接着一个本地执行器会编译这段脚本并在浏览器里展示粗略预览同时把模型导出成STEP、STL甚至DWG等格式。我实测下来的体感是对于刚才描述这类标准特征它生成的成功率相当高。生成的模型不是糊成一片的网格而是完完整整的实体你在FreeCAD里打开能看到完整的特征树——BasePad、HoleArray、Chamfer这些节点清清楚楚。想改孔距改脚本参数即可。想导出给机床切STEP导入CAM系统没有障碍。2.2 路线B纯黑盒生成模型——大厂的原生AI CAD方向跟路线A对着干的是Autodesk的Project Bernini这类大厂研究项目。它们的思路不是让LLM去写代码而是直接在B-rep实体空间的表征层做生成。也就是说AI直接预测实体模型的边界表示、面片拓扑和几何约束输出的是一个原生CAD实体而不是脚本。这个方向的优点是不需要经过“代码中间层”理论上可以生成更复杂、更有机的几何形态生成速度也可能更快。缺点也明显可控性和可编辑性差生成结果像一张渲染好的图片你想“改一处参数”就没那么容易。它目前更多停留在实验室和封闭测试阶段普通用户摸不到即使摸到了也很难把它接进需要反复迭代的工作流里。所以我在现在的实际项目中基本不指望路线B我的重心还是放在“脚本化CAD”这个可解释、可改、可版本控制的框架上。2.3 路线C通用LLM写FreeCAD/OpenSCAD脚本——最接地气的灰盒路线还有一个对普通工程师非常友好的思路用通用的大语言模型ChatGPT类产品或者本地部署的开源模型去生成FreeCAD的Python脚本或者OpenSCAD代码然后自己在本地软件里执行。这个路线的门槛极低。你不需要注册什么复杂平台直接打开大语言模型对话窗口描述零件需求让它输出一段FreeCAD Python代码。你把代码复制到FreeCAD的Python控制台跑一下模型就出现在场景里你也能通过修改代码变量来调整几何。我用这个方式生成过一些测试用的标准零件比如带U型槽的滑块、带沉孔的基座等。效果不能说惊艳但作为概念草图和内部验证是够用的。这条路线的最大优势是不依赖特定平台所有东西都在你自己的机器上数据安全可控而且脚本改起来没有黑盒限制。我把三条路线的差异整理成了一张表方便你按场景选型路线生成方式可编辑性技术成熟度数据合规性适合场景类Zoo架构LLM生成CadQuery脚本后本地编译高脚本即特征树相对成熟开源项目多可控代码可在本地跑标准机械件、概念设计、快速出样大厂黑盒生成直接在B-rep空间生成实体低结果难以局部修改实验室阶段受限于云平台复杂曲面、创意形态探索通用LLM脚本软件LLM生成FreeCAD/OpenSCAD脚本高可逐行改完全可用完全本地化通用工程师、特别适合已有FreeCAD基础的用户3. 实操复盘我说一句“法兰底座”AI给我交付了什么3.1 输入Prompt的设计像写零件需求书一样写描述很多人第一次用text-to-CAD喜欢甩一句特别写意的话“给我一个机器人的连接件。”然后看着AI生成一个看起来酷炫但完全没法用的东西转头就骂工具不行。我的实测经验是prompt的详细程度决定了生成结果的上限。你给AI的信息越像一个认真工程师在写“零件需求书”它给你的回应就越像一个合格的设计师。我总结出的一套有效prompt模板是下面这样明确零件类型是法兰、是支架、是壳体还是轴套明确主尺寸和各特征尺寸外径、长度、孔径、厚度明确特征空间位置孔距、中心距、阵列圆直径明确提出工艺相关要求是否有倒角、是否要沉头孔、壁厚最小多少明确导出格式STEP、STL还是DWG打个具体的例子。我实际用过这样一个prompt“创建一个方形铝制安装基座长度80mm宽度60mm高度15mm。顶面四个角倒R5圆角。基座中心开一个直径20mm通孔。以中心孔轴线为中心在直径40mm的圆周上均匀分布4个直径6.6mm通孔。底面挖一个深度8mm的矩形减重槽长度60mm宽度40mm四角倒R3圆角。导出为STEP。”这听起来啰嗦对吧但正因为每一句话都能映射到具体的几何约束LLM生成的CadQuery脚本才不出错。AI不懂“好看”“结实”“稍微大一点”这种模糊形容词它只认数字和拓扑关系。信息密度越高翻车率越低。3.2 生成后的三项检查尺寸、单位、几何合法性脚本执行完屏幕上出现了模型可别高兴太早。生成三维模型只是第一步紧接着必须做三项检查我每次都执行一次都省不了。第一项是尺寸检查。逐项核对模型里的关键特征是否和需求相符。翻车场景极其经典你要求直径80mmAI理解成半径80mm或者把mm写成了inch整个模型尺寸直接变成2.54倍。这种错误在视觉预览阶段根本发现不了必须用测量工具精确点选。第二项是孔位计算。CAD脚本里的阵列运算不是物理仿真的结果它是纯几何计算。比如我刚才要求“直径40mm圆周上均匀分布4个孔”这个阵列的起始角度、跨距都可能因为浮点数误差出现微小偏差。我实测中碰到过孔位重复、阵列角度错位导致螺栓孔和传感器窗口干涉的问题视觉上根本看不出来一上装配体就暴露。所以对关键孔位我习惯用计算器独立算出期望的极坐标值4个M6孔在40mm圆周上相邻角度90度每个孔的xyz坐标用x 20*cos(40°)这种方式先手算一遍再跟模型对照。第三项是几何合法性。用CadQuery或FreeCAD的Part菜单里的“检查几何”功能确认实体是封闭的、没有碎面、没有非流形边。这步很重要因为它直接决定后面STL切片或者STEP导入CAM时会不会报错。如果检测出开放面或者重叠面别懒得修回脚本里删掉或重建相关特征比在锅里修网格快得多。3.3 导出与二次编辑把AI生成的草稿接进真实工程流三项检查做完接下来就是导出和二次加工。我在Zoo和FreeCAD这边一般直接导出STEP格式这是工程里最通用的“无损交换”格式。STEP文件携带准确的B-rep实体数据导入SolidWorks、Fusion 360或者CATIA都不会变成面片。需要注意一点导入前一定确认软件的默认单位设置。FreeCAD默认mmSolidWorks通常也是mm但个别软件或者插件默认是英寸in。单位错了一个小小的大拇指形状的零件可能直接就变成一个机械巨兽。导入主流CAD软件之后我通常还会做几件AI目前做不到的事添加公差标注比如内孔标H7配合、加表面粗糙度符号、处理出工程图时的视图投影。这部分不是“修模型”而是在“完善交付物”。AI能生成的是几何图纸上的工艺语言必须人来落笔。也正因为如此我从不把text-to-CAD的输出称为“完成品”它只能算作一个精度足够好的设计底稿。4. 生成翻车诊断为什么结果“看着对却又不对”4.1 自然语言的“歧义”会直接变成模型错误前端时间我用text-to-CAD试着生成一个带U型槽的滑块我输入的是“一个长60mm宽30mm高20mm的滑块顶部有U型槽槽深10mm槽宽8mm。”结果AI给我做的槽宽度和深度都没问题但槽的位置不在顶面中心而是歪到了侧边。后来我一想问题出在我自己身上。我只说了“顶部有U型槽”没说“U型槽居中对称”更没说“槽的中心线沿着长度方向居中”。大语言模型不是人它不会主动推断“顶部开槽默认居中”这种潜规则。它只会按字面把所有可能的约束条件都减少到刚刚满足你提到的那些其余全靠“训练统计分布”猜。这个案例给我的教训非常深刻凡是涉及配合、安装、对称这些要求一律得用数值或明确位置来限定不要指望AI懂“常识”。4.2 特征顺序和父子依赖关系一旦错了就全崩UV槽那个问题只是位置错更隐蔽的是特征顺序错乱。有次我生成一个“带八条加强筋的方形底座”AI的脚本把加强筋拉伸放在了底座挖减重槽之前。结果就是它先生成加强筋然后再在底座上切掉一块材料切槽直接把筋的根部切断了。这种错误在屏幕上看起来只是少了一块材料等到分析受力或者做DFM时才意识到加强筋的截面被挖掉了大半整个结构强度从设计层面就废了。对于这类问题我现在的做法是拆开prompt把“先创建底座”“再切除减速重槽”“最后拉伸加强筋”这种步骤顺序直接写进描述。更好的办法是生成后去看脚本检查建模操作的顺序是否有逻辑问题。规则很朴素先主体特征后切减特征最后加附属特征。AI自动生成的顺序不一定遵循这些工程习惯必须人工检查。4.3 制造约束上的“想当然”AI默认的工艺参数很可怕在DFM层面AI的“想当然”更是重灾区。规定壁厚至少2mm但实际上生成出来的筋板最薄处只有0.3mm要求在注塑件上开螺纹孔AI生成的是通孔而不是带锥度的自攻螺纹底孔要求“表面光滑”AI给所有棱角都加了大r圆角结果圆角半径反而让后续加工无法装夹。我一度被这些坑气到想放弃这类工具后来想通了AI根本不理解制造过程它只是把语言里的形容词对应到一些几何操作上。你以为“光滑”是指Ra3.2的表面粗糙度在它那里就变成了加一个两毫米圆角。所以从那次之后我在所有涉及圆角的prompt后面都会强制加上“仅在外露棱边倒角配合面保持直角”这样的事无巨细的要求。4.4 我整理的一份问题排查清单从症状到根因为了让自己和团队不再反复踩坑我整理了一份常见问题排查清单分享出来供你参考症状根因解决路径模型整体尺寸莫名放大/缩小单位混淆mm误作inch等检查脚本里的尺寸变量和单位换算STEP导入时强制指定单位孔位设置偏移或阵列角度不对阵列圆心/起始角未明确定义手工复算PCD和孔位极坐标回脚本修正实体无法切片或导入CAM报错存在开放面、非流形边、重复面用模型检查工具做布尔分析和实体诊断重建相关特征筋类结构根部被切除特征顺序错误切减发生在拉伸前调整脚本内部建模操作顺序先主体后切减再加附属零件拔模角为0出模卡死忽略脱模方向需求在prompt里强制要求拔模角度并在脚本中验算圆角/倒角位置与意图不符自然语言描述里的“光滑”等模糊词被过度解读消除模糊词精确指定倒角位置和半径5. 从“能出模型”到“能上机器”补齐工程化最后一步5.1 公差和表面质量必须人来补AI生成的几何体是理想的数学实体它没有尺寸公差、没有几何公差、没有表面粗糙度要求。但真实制造的每一个零件都必须有这些工艺语言。孔是H7还是H8轴承位是js6还是k6表面要不要磨削这些信息AI标志没法表达在STEP文件里必须在工程图阶段用标注说明。我的做法是AI生成模型完成并检查合格后就把模型拖进CAD出工程图模块手动补标关键配合尺寸的公差并根据加工方式注明表面粗糙度。这部分没有任何捷径懂工艺的人才能干好所以text-to-CAD替代不了有经验的工程师它只是把出草图的耗时压缩了。5.2 DFM检查壁厚、拔模斜度、最小圆角下一步是把模型丢进DFM检查流程。如果你做的是注塑件或压铸件开模前必须检查三个指标最小壁厚是否均匀、拔模斜度是否符合脱模方向、最小圆角是否满足材料流动要求。这些参数取决于具体材料和工艺AI不可能根据你的注塑机吨位和模具钢材去推算。我习惯在生成模型时采用保守目标壁厚均匀2.5mm起步拔模斜度1度起步内部圆角0.5mm以上外部圆角根据外观需求单独指定。这些保守值哪怕后续加工方案改了也不至于让结构出现致命缺陷。注意这不是AI教我的是我在生成后手动回到脚本改动变量再重新编译得到的。恰恰因为脚本化修改这些关键参数的成本低得惊人这也是为什么我坚持走“脚本生成”这条路而不是黑盒模型。5.3 团队协作和历史追溯一套可行的“提示词脚本”仓库把自然语言看作是设计入口之后整个图纸流转的链路也应该跟着变。我在项目里采用了一个内部习惯每条text-to-CAD需求都附带一个提示词说明文档里面写清需求的背景、名词解释、数量级假设以及生成的脚本文件路径。脚本文件本身放进Git仓库和源代码一起版本管理。这样做的好处非常直接三个月后这个零件要改版同事打开Git历史看到的不只是一堆几何特征还有当时“为什么要这样设计”的完整上下文。这件事在传统CAD协作里很难做到因为Fusion 360或SolidWorks虽然也有特征树但没人会认真写设计说明。而text-to-CAD的脚本本身就是一种自文档化的设计过程把这段脚本和提示词绑定就相当于拿到了设计过程的完整录像。6. 一个资深用户的冷静结论什么场景值得上什么场景别凑热闹6.1 我推荐你立刻试试的场景如果你跟我一样经常要出一些标准支撑件、安装支架、壳体底座、板类零件而且耐心有限那么text-to-CAD值得花一个下午认真测试。特别是以下几类情况它是真能改变效率的定制化夹具/治具设计这类零件形状简单但变化多每改一次客户需求就要重画一遍。快速概念验证你在评审会前需要一个模型跟同事说明空间位置关系不需要精细结构。标准件库扩充把螺丝座的孔位、底板的长宽高参数化后批量生成多个规格。3D打印爱好者或小批量数控加工的“够用就行”场景只要几何正确不追求复杂曲面。这些场景的共同点是你需要的模型偏功能而非形态几何信息完全可以靠几句话描述清楚而AI刚好把这部分执行的非常稳定。6.2 我不会把它作为主力工具的任务反过来下面这些任务我不会用text-to-CAD去碰自由曲面造型消费电子外观、汽车内外饰、运动器材手感面、复杂装配体干涉验证涉及上千件零件的总装需要严谨的装配约束和逻辑、高精度注塑模具设计、以及需要大量现有标准件库复用的产品改型。不是说AI做不到而是在这些领域专业软件沉淀的知识体系和设计意图是语言模型难以复刻的。硬把它用在那种场景只会得到一堆修修补补的重工活不如老老实实打开专业CAD按部就班地建模。6.3 我的工作流建议让AI干最快的那段路而不是替你走完全程最后说说我现在的工作流落点。我的实际项目里text-to-CAD已经固定成了一个“起步加速器”角色。接手新任务时我会先根据自己的经验把需求拆成标准零件描述然后用text-to-CAD快速生成一个结构草样再把这个草样导入FreeCAD进行细节调整、装配验证、出图。这么做的好处是我把一两个小时的基础建模压缩到了十分钟。坏处也明显前期生成的模型有时候会出现一些“智障性错误”比如没留避位间隙、倒了个莫名其妙的圆角。所以我从一开始就没打算让它独立完成任务而是把它当作一个能快速响应需求的助手。人负责提需求和做检查AI负责把极耗时间的那段几何构建跑完这个分工是目前最靠谱的协作模式。我个人还有一个很实用的习惯无论用Zoo还是通用LLM生成代码跑通之后我一定会把那段脚本复用模板化。同类型的零件只需要改几个核心尺寸变量就能在半小时内派生出一整个系列。这在传统CAD里需要做系列化零件设计表在text-to-CAD里只是改一行参数的事。省下的时间足够你去认真琢磨公差和工艺了。这个方向的技术迭代还很快但原理已经稳定语言描述进入、脚本编译生成实体、人工检查导出交付。只要你不指望它是灵丹妙药它就能成为你手里一把相当称手的快刀。