text-to-cad这个词第一次看到的人很容易觉得它又是一个“AI生成图片”的变种但真正跑一遍流程就会发现完全不是一回事。它要解决的问题很直接把一段自然语言描述变成带工程语义的CAD模型。你输入“外径40毫米、内径22毫米、厚度6毫米的圆环外圆上有四个直径4毫米的均布通孔”它返回的不是一张好看的渲染图而是一个能下载STEP文件、打开特征树、修改尺寸、拿去仿真或进入加工流程的几何体。过去画这种零件熟练建模师怎么也得十分钟起步现在几十秒就能拿到候选结果。我觉得它最适合三类人想做快速结构方案对比的机械工程师、做3D打印和手板的创客玩家以及想在自家产品里嵌入“文本建模”能力的AI应用开发者。这篇内容我尽量把原理、工具选型、两条实操路径和避坑经验一起聊透。1. 先讲清楚text-to-cad是什么为什么这两年突然热起来1.1 从一句描述到可编辑模型到底省掉了哪几步传统CAD建模的链路大家都很熟先看需求然后在脑海里把文字变成几何再打开软件画草图拉伸、旋转、打孔、倒角最后标注尺寸、检查干涉。真正耗时间的不是鼠标点那几下而是“把语言翻译成几何操作”这个过程。你脑子里得同时装着尺寸、约束、特征顺序、加工余量一个环节想错后面全得推翻。text-to-cad做的事情就是把翻译成本从人身上卸到模型身上。它先用语言模型理解语义再用几何生成模块把语义变成候选实体最后输出带参数特征或至少是干净封闭曲面的结果。人不再从零开始画而是从候选模型里挑一个最接近的然后做参数修正。我实际用了之后最大的感受是它没有让我丢掉建模能力而是把起点提前了。原来面对一个空白草图思路是从无到有现在面对的是AI给的多个方案思路变成“哪个更接近需求、哪些特征要改”。我自己第一次用的时候没抱太大期望想着给它一个法兰盘的描述能出个轮廓就算成功。结果它真的给我生成了一个带孔位阵列的实体我量了一下关键尺寸虽然有偏差但整体比例是对的。那种感觉很像当年第一次用参数化软件时的冲击不是工具变聪明了是工作流被重写了。1.2 三类典型用户和五个高价值场景机械工程师是最直接的用户群。设计前期做结构方案对比时经常要同时出好几版支架、底座、外壳来讨论。过去出一版就要几小时现在把“L形支架带四个安装孔板厚3mm”敲进去等几十秒就有候选模型方案对比的时间成本被压得很低。我自己更常用的是把生成结果当成沟通工具跟供应商或者跨部门同事对齐需求时用一张快速生成的三维图比一段文字描述直观得多。创客和3D打印玩家也绕不开它。很多人做FDM打印时缺的不是打印能力而是建模能力。一个入门的Arduino外壳、一个传感器支架、一个相机转接件用传统CAD学起来有门槛但用自然语言描述反而不难。输入“一个能固定20x20铝型材的相机支架”模型给出底稿导进切片软件就能打。程序员和AI应用开发者是第三类。他们不直接画图但想把“文本到模型”能力接进自己的产品里。这类人更关心API、输出格式、二次开发接口而不是自己手动建模。所以后面的实操部分我会同时给公网工具的用法和本地代码方案照顾两类不同需求。1.3 和AI生图是两码事别用同一个思路去评价AI生图的评价标准是“看起来像”哪怕手指数错了只要风格对就能接受。CAD生成完全不同任何一个破面、一条不闭合的边、一个布尔运算失败都会让模型直接变成废品。给你一句生动的类比让AI画一辆自行车很容易画面里轮子是圆的就行但要生成一辆能骑的自行车轮圈必须闭合、辐条必须连上、链条必须啮合几何上不能有任何裂缝。CAD里没有一个叫“大约”的选项只有“是”和“不是”。这也是很多第一次接触的人容易踩坑的地方。他们在提示词里写“看起来科技感”“工业风”模型确实会给你一堆装饰性特征但那些东西对装配和加工没有任何意义。text-to-cad能处理的是明确几何语义不是美学语义。理解了这一点后面的提示词写法才聊得下去。2. 技术路线全景从文本到CAD不止一条路2.1 路线一端到端生成式一切交给模型端到端方案的思想很直白文本进来经过编码器变成向量再通过生成网络直接输出三维形状。早期研究多集中在分类模型和文本引导的网格生成上后来扩散模型火了Point-E和Shap-E这类项目把整个流程做成“文本→点云/网格”让普通人一句话也能生成三维资产。这类方案在通用物体上效果可观但用在CAD上有一个绕不开的问题输出大多是网格或点云不是带参数特征的实体。要让它适合CAD场景就得用CAD数据集重新训练或微调。公开的ABC数据集、Fusion 360 Gallery这类带参数特征的模型集就是干这个的。模型学会的不只是“猫长什么样”而是“法兰盘的孔位规律”“支架的厚度比例”。微调之后的模型能生成更接近真实机械零件的形状但依然很难保证输出件能直接进加工。它适合的思路是“草案生成”先把形态和大致比例定下来后续再去正式CAD软件里重构参数。而且这类模型最麻烦的一点是幻觉。它会把文本里的尺寸数字当成大概参考而不是严格约束。你说直径40mm它可能给你一个38.4mm的圆。从研究角度不算错因为指标是语义对齐度但从工程角度这不能接受。所以端到端方案的定位要摆正它是灵感生成器不是误差为零的投产工具。2.2 路线二代码翻译式让大模型先写建模脚本还有一条非常务实的路不让模型直接输出几何而是让模型写建模代码。OpenSCAD、CadQuery、FreeCAD的Python API都是目标。大模型对代码的生成能力远比对三维隐式场的控制能力强而且代码天然具备可编辑性。举个例子你要一个法兰盘它可以给你一段OpenSCAD代码里面有外径、内径、孔数的变量。你拿到代码后改参数模型自动更新这比在GUI里一步步点还快。这条路线的优势是参数化、可追溯每个特征都有明确逻辑不像端到端模型那样是黑箱劣势在于复杂几何会让代码的布尔运算出错尤其是曲面和倒角较多的时候生成的代码往往要人工改几轮才能编译通过。我自己现在更偏向后一种路线来做日常零件。它没有云端排队不依赖公网服务完全本地可控。代价是你要会一点代码读写至少得能读懂OpenSCAD里的差集和循环。但对工程师或者有一定编程底子的玩家来说这个门槛比想象中低很多。2.3 当前主流工具横向对比工具/方案输入输出亮点适合场景Text-to-CADZoo.dev自然语言STEP/网格浏览器即开即用输出工业格式快速方案草案、结构沟通OpenAI Point-E / Shap-E自然语言点云/网格通用物体生成研究活跃概念视觉化、通用3D资产生成CadQuery LLM自然语言→Python代码STEP真参数化、可复用程序化建模、零件族设计OpenSCAD LLM自然语言→脚本STL/STEP本地离线、零依赖桌面端创客、快速验证通用3D生成平台文本/图片网格视觉质量高游戏CG资产不建议直接用于CAD选型时先问自己一句拿到模型之后是要看还是要用如果只是看个大概形态端到端工具足够。如果要进CAM、做仿真、跟其他标准件配合那就必须保证输出格式是STEP或可编辑的代码脚本。2.4 为什么CAD方向比通用3D生成难这么多通用3D生成可以容忍不完美CAD不能。第一CAD要求拓扑正确。网格模型可能有几千个三角形但它们必须组成一个封闭流形不能有洞、不能有自交面否则后续实体化必然失败。第二CAD要求可制造性。壁厚不能低于打印极限孔位必须配合公差脱模需要考虑拔模角这些约束普通生成模型很难从语义中自动推导。第三CAD要求参数可编辑。一个没有特征树的网格对机械设计师来说等于一张不能改的图片。最后还有一个现实问题数据。自然图像数据集有上亿张但带参数特征和标注的高质量CAD模型数据集远远没有那么多。工业界的模型又涉及版权和保密很难像开源图片那样自由流通。所以单纯比“训练数据规模”CAD方向天然吃亏。这也是为什么它比隔壁AI生图成熟得慢。3. 实操一用公网Text-to-CAD工具从零生成一个法兰盘3.1 完整流程跑一遍先用最简单的路径感受一下浏览器打开Text-to-CAD的官方页面用账号登录后就能在网页里输入提示词。第一次用的建议直接输入一个最熟悉的零件比如“一个外径80mm、内径40mm、厚度10mm的环形法兰盘有四个直径为8mm的均布螺栓孔”。生成需要排队等待时间从几十秒到几分钟不等取决于服务器负载。生成结果出来后会显示在预览窗口里你可以拖拽旋转、缩放检查。这里有两个选项要注意一是下载格式尽可能选STEP不要选STL二是单位确保输出单位和你自己的软件一致默认是公制毫米但有的工具会提供英寸选项搞错了后期非常痛苦。下载完STEP文件后建议先用FreeCAD或者任意一款你习惯的CAD软件打开检查特征树和基本尺寸。第一次跑通时的感觉是它真的输出了一组孔而且孔的位置是按圆周均布排列的不是随便乱放。这个结果已经能当沟通草案用。但请一定管理好预期这个工具更适合“快速形成候选方案”而不是“一键给你加工级模型”。如果对尺寸精度有要求走后面的代码路线更稳。3.2 提示词工程的关键别写感觉写结构用公网工具能不能出好东西提示词起八成作用。我自己总结了五个要素按优先级排列基本形体、关键尺寸、孔位阵列、边角处理、装配约束。基本形体要写在前面比如“圆环”“L形支架”“矩形外壳”让模型先定大框架。尺寸要带单位、带明确数字不能只写“大一点的孔”要写“直径8mm的孔”。孔位和阵列关系要描述准确“四个均布螺栓孔”和“四个位于四角的安装孔”说的是完全不同的结构。边角处理可以写“外缘倒角1mm”“底边圆角R2”如果不需要就干脆不提。装配约束要尽量写清配合对象比如“通孔用于安装M6螺栓”模型会据此调整孔的尺寸。我试过的最差提示词是“设计一个好看的花瓶支架要现代感强一点”。生成结果是一堆艺术性曲面好看但没法用。改成“一个矩形底座长120mm、宽80mm、高10mm四角各有一个直径5mm的沉头通孔中心有一个直径30mm的圆形安装台”之后得到的结果才是能落地的支架。记住一条铁律把美学词换成几何词把修饰语换成数字和结构关系。3.3 拿到模型之后的快速合法性检查从云端拿到模型不要立刻去打印或加工先花三分钟做合法性检查。第一用标注工具量一遍关键尺寸确认直径、板厚、孔距跟提示词一致偏差超过5%就要考虑重新生成。第二看特征树或层级结构判断这些孔是真正的特征还是表面凹陷后者在后续编辑时会非常麻烦。第三检查单位确认导入你本地软件后是毫米而不是英寸。提示如果发现总体方向没问题但局部不对不要反复修改同一段提示词期待它自己变对。更有效的方式是把描述拆开先把基本形体重生成一版确认形状正确后再分步添加孔位和倒角。一次生成完全正确的概率不高但“先生成底稿再逐步细化”的成功率会高很多。4. 实操二用LLM生成OpenSCAD代码走一条完全可控的轻量路线4.1 为什么我更推荐本地代码方案如果你要把模型真正用起来公网工具往往不够用因为它生成的结果是一个黑箱尺寸有偏差你只能重跑。本地方案则完全不一样模型输出的是源代码每个尺寸都是变量每处错误都能精确定位修改。我是从第二次尝试就直接转向代码方案的原因很现实工作量没有增加可控性却大幅提升。OpenSCAD是免费的参数化建模工具用纯脚本描述几何体。它不需要图形界面拖拽运行后实时渲染一键导出STL或STEP。更关键的是当代大模型对OpenSCAD代码的生成能力相当强因为它的语法简单、库函数稳定、网上示例代码很多。你只需要给模型一段清晰的描述它就能生成一段可编译的脚本。这个方案完全离线不依赖公网服务也没有排队和配额限制。4.2 一个完整的法兰盘示例用之前那个法兰盘需求为例给LLM的提示词可以这样写“用OpenSCAD写一个法兰盘外径D40mm内孔直径d22mm厚度t6mm。六个螺栓孔半径r3.5mm均布在节圆直径bcd30mm上。所有圆用$fn96保证平滑。”模型会给出一段类似下面的代码module flange(D40, d22, t6, n6, bcd30, bolt_r3.5, $fn96) { difference() { cylinder(ht, rD/2); // 中心孔多给0.01mm避免共面问题 translate([0, 0, -0.01]) cylinder(ht0.02, rd/2); // 螺栓孔均布 for (i[0:n-1]) { angle i * 360 / n; translate([bcd/2*cos(angle), bcd/2*sin(angle), -0.01]) cylinder(ht0.02, rbolt_r); } } } flange();把这串代码复制进OpenSCAD编辑器按F5预览F6渲染再导出STL或通过插件转STEP一个参数化法兰盘就生成了。需要注意的是代码里那些“0.01mm”“0.02mm”的偏移量不是随手写的而是为了在差集运算时避免两个圆柱共面导致布尔运算失败。这是CG建模里非常常见的一个细节新手如果不加经常会出现渲染时看不到孔、或导出后模型有碎面的问题。4.3 把代码方案升级成参数化零件族代码方案真正的威力在于它输出的不是“一个零件”而是一个“零件族”。你只要改模块函数里的一个参数整个模型就会自动跟着变。比如把孔数从6改成8整圈孔位自动重新均布把外径从40改成60壁厚比例如果保持不变你甚至可以用变量联动比如 t0.15*D 这样定义。我通常会让LLM按照“可复用模板”的方式输出每个关键尺寸都定义成模块变量每个特征都在模块内部用注释标明用途。这样下次遇到类似零件我不需要重新描述复制旧脚本改几个参数就行。批量生成零件族时这种效率优势更加明显比如要设计五个不同孔数的法兰盘直接脚本循环导出比在GUI里手工复制改尺寸快一个量级。CadQuery是另一个可以关注的库。它是Python原生接口比OpenSCAD更接近工业CAD的“草图拉伸打孔”逻辑输出STEP文件也更标准。如果你本来就熟悉Python直接让LLM生成CadQuery代码可能比OpenSCAD更顺手。但入门门槛稍高OpenSCAD胜在简单适合先把流程跑通。5. 从AI生成到真正能用的零件后处理一步都逃不掉5.1 先分清网格和实体STL和STEP是两套东西不管哪条路线生成的结果先检查输出格式。STL/OBJ这类网格格式本质是三角面片拼成的“外壳”里面是空的。它适合3D打印和渲染因为打印本来就是一层层堆积外壳但到了CNC加工、有限元仿真、装配干涉检查的环节网格会带来大量麻烦因为数据里没有任何实体拓扑信息每个面都是孤立的三角形。STEP/IGES这类模型格式里面是关于几何实体的描述有面、边、顶点的拓扑关系还可能在导入软件后带特征历史。所以AI工具如果能直接输出STEP优先选STEP。如果拿到的只有网格也不要硬着头皮往下走先用FreeCAD的“Part工作台 → 转换为实体”功能做一次实体化尝试。有些复杂的网格无法自动转换这时最快的方法反而是照着网格在CAD软件里重新描一遍把关键尺寸抄过去。看着有点繁琐但往往比重建拓扑更可控。5.2 3D打印场景的修复清单打印场景的检查顺序可以固定下来。第一查壁厚FDM打印通常最小壁厚不能低于1mm薄了切片会直接忽略或打印出来就断。第二查流形性网格必须封闭且边数正确切片器如果报“模型不闭合”“法线反转”大概率是布尔运算残留问题。第三查细节孔道如果太小0.4mm喷嘴就会打穿必要时生成时就把孔径放大到适配打印的公差。我用OpenSCAD方案时几乎不会遇到网格问题因为代码生成的模型天然封闭。但用公网工具生成的STL就经常出现底部缺一块或者孔洞被填充的情况。遇到这种事别慌用Meshlab打开重新计算法线、删掉内部坏面、运行表面修复大部分情况能救回来。终极方案还是回到代码流程能参数化生成的东西就用参数化方法重新生成别在网格修复上耗太多时间。5.3 机加工场景的修复清单如果目标零件需要进CNC或走后续装配检查清单更严格。第一批要查的是公差AI生成的孔可能只是示意实际尺寸要配合标准钻头或铰刀的精度所以加工图上必须按标准公差表重新标注。第二批是拔模角和倒角铸造或注塑件需要拔模角机加工件需要倒角去毛刺这些特征AI很难自动做对需要手工在CAD里补。第三批是装配干涉尤其是有多个零件配合时一个一个单独生成很容易出现“单个都对装配打架”的情况。所以我把AI方案定位成“生成单体零件草案”做装配时一定要导入装配体环境做干涉检查。检查出干涉不要慌回到参数函数里调整尺寸重新生成循环几轮就能得到可装配的零件。这种迭代思路跟传统手工建模一模一样只是每次迭代的时间从一小时变成了几分钟。5.4 我现在的固定工作流聊一下我日常做法。第一步输入提示词一次性生成三到六个候选草案。第二步挑一个最接近的进行实体化或直接保留STEP格式。第三步导入FreeCAD或自己熟悉的CAD软件按实际需求重标尺寸、补倒角、加公差。第四步做装配检查确认配合没问题后再进切片或CAM。整个过程里AI帮我干掉了“从零开始画草稿”的部分而尺寸修正、特征补全、装配验证这些关键判断全部由我做。这个分工目前看是效率最高、风险最低的。6. 常见问题、排查技巧与踩坑实录6.1 问题速查表现象常见原因解决办法输出尺寸和描述差很多端到端模型对数字敏感度不足改用代码方案或在提示词中把尺寸写成变量表达式模型有破面、孔洞布尔运算共面冲突、网格拓扑错误加0.01mm偏移补偿用Meshlab修复重新生成生成的文件打不开格式不兼容或单位错误统一用STEP确认导入单位是毫米模型能看但不能编辑拿到的是网格而非参数特征转实体或退回代码方案提示词描述很丰富但结果很差美学词太多几何约束太少全部换成数字和结构描述生成速度慢、排队久云端负载高本地跑OpenSCAD/CadQuery方案多个零件装配干涉严重AI不适合直接生装配体一次只生成一个零件人工装配约束6.2 三个我反复踩过的坑第一个坑是提示词里带过多风格化修饰。我最初做“电机支架”时写了一句“工业感强、线条流畅”结果模型给了一堆莫名其妙的异形凹槽完全没法装电机。从那以后我把所有跟“风格”沾边的词从提示词里剔掉只留几何和加工约束。第二个坑是一开始为了省事下载了STL后面想转STEP花了两小时也没转干净。几个平台之间格式来回转换原本都没问题的模型硬是被整出破面。现在我的原则很简单能选STEP绝不选STL最后需要网格时再从实体转过去而不是反过来。第三个坑是试图让AI一次性生成整个装配体。我曾输入“一个带盖子的接线盒里面有四个安装柱”结果输出的是一个盒子里塞了四个柱子的抽象雕塑零件之间全干涉。后来我改变策略传感器支架就单独生成支架外壳就单独生成外壳销钉、螺丝这种标准件自己在CAD库里调。装配关系永远是人来定义不要让生成模型理解“配合”它目前理解不了。6.3 我更看好的扩展方向如果已经跑通基础流程可以往三个方向延伸。第一是接入标准件库自己在OpenSCAD或CadQuery里封装一些常用件模板比如“M6螺栓通孔”“压铆螺母柱”“导轨固定槽”提示词直接调用生成精度和效率都会大幅提升。第二是做插件集成部分CAD软件已经可以通过插件调用大模型接口你在SolidWorks或FreeCAD里选中一个面输入文字就能生成特征底座这类融合还处于早期但方向很明确。第三是把生成当成灵感工具而不是终稿工具方案初期用text-to-cad批量产出候选形态从中挑出值得细化的方向再走传统建模流程做工程化。这个用法不炫技但最稳妥。最后再说一个个人体会。我不觉得text-to-cad会取代CAD工程师它更像一个永远不嫌烦的助手帮你把脑子的结构快速变成屏幕上的底稿。真正的价值在于你能在同样的时间里尝试更多方案而方案对比的广度会直接影响设计质量。如果刚开始尝试建议别一上来就折腾复杂装配体先从法兰、支架、外壳这类单件参数化零件跑通流程。少踩几个坑比追求一次生成就完美要实在得多。