给我做一个四孔法兰支架外径80中心孔20四个安装孔6.5均布在直径60的圆周上厚度8。这句话放在两年前大概率只会得到一种回应自己打开CAD软件从新建草图开始一个约束一个约束地画。而现在把它原封不动丢给text-to-cad工具几秒钟之后你就能拿到一个可以继续编辑的STEP文件尺寸对得上、孔位均匀虽然圆角和倒角还得碰点运气。text-to-cad这个词这两年被反复提起但我发现大多数人对于它的理解还停留在文字生成了三维模型这个模糊印象上甚至把文生图、文生网格模型和文生CAD混为一谈。这篇就把text-to-cad彻底拆开讲它解决的根本问题是什么、两条主流技术路线怎么选、实测生成一个零件要经历哪些环节以及它离真正进入设计生产流程还差哪几步。不管你是机械工程师、产品设计师还是刚接触AI辅助设计的新手读完之后你至少能准确判断一件事这个工具放在你自己的流程里到底该放在哪个位置。1. 文生3D和文生CAD是两码事网格模型为什么进不了车间很多人第一次接触text-to-cad时脑子里对照的是那些文生3D工具输入一只戴帽子的猫输出一个可以旋转查看的三维网格。这类工具确实热闹但严格讲它和工程意义上的CAD差了十万八千里。搞清楚这个区别是理解text-to-cad所有后续话题的前提。1.1 STL网格模型和STEP实体模型到底差在哪文生3D工具输出的通常是STL、OBJ这类网格文件。网格的本质是一堆三角面片拼出来的外壳它只有顶点坐标和法线方向没有面与面之间的拓扑关系更没有任何工程语义。拿来3D打印个手办、游戏里当个资产、或者渲染看个外形完全够用但如果你问它这个孔的直径公差是多少这个面能不能作为装配基准它答不上来因为它根本不知道什么是孔、什么是面。CAD模型则完全不同。工程上通用的CAD文件走的是边界表示法也就是B-rep面、边、顶点之间是有明确的拓扑关系的几何表面用精确的数学曲面方程描述而不是一堆三角形的近似。这直接决定了下游能不能做NC加工、能不能做有限元仿真、能不能出工程图。1.2 特征树和参数CAD的灵魂不在外观在历史比几何表示更关键的一点是CAD模型自带历史也就是特征树。一颗法兰螺钉在建模软件里不是一堆曲面的合集而是一串操作记录先拉伸一个圆柱、再打一个中心孔、再阵列四个小孔、最后倒角。你改一个参数整棵树往下重算模型就跟着更新。这就是参数化设计。文生3D的网格模型没有这个历史。哪怕它长得再像CAD你也没法双击它的某个特征去改尺寸。而text-to-cad的目的恰恰是要生成这种带特征、可编辑、能被下游直接消费的模型——而不是一张勉强可看的图片。1.3 两种产物的对比一张表说清楚维度文生3D网格模型文生CAD参数模型常见输出STL、OBJ、GLBSTEP、OpenSCAD、CadQuery代码几何表示三角面片近似精确B-rep实体工程精度无公差概念可到小数点后毫米级可编辑性基本不可编辑参数可改、特征可追溯下游用途预览、渲染、业余3D打印加工、仿真、出图、再设计所以再听到text-to-cad你得意识到它瞄准的是制造端和工程端而不是视觉端。它要给工程师省掉的是从文字想法到第一个可用的三维模型这段最枯燥的冷启动时间。2. 两条技术路线分岔口LLM写代码建模 vs 端到端生成B-rep明确了目标之后接下来的问题就是怎么从自然语言走到一个精确的实体模型目前市面上的text-to-cad工具技术路线基本分成两大类。理解这两条路你才知道手上工具输出的结果为什么是这个样子。2.1 路线ALLM生成代码CAD内核负责算实体——为什么最稳这是目前落地最多、成功率最高的路线。思路很简单让大语言模型不直接生成几何而是生成一段建模代码——用CadQuery、OpenSCAD这类程序化建模库去描述这个零件然后由本地或云端的几何内核去执行这段代码算出真正的B-rep实体。为什么这条路稳因为编程语言本身就是结构化、强约束的。LLM经过大规模代码训练写代码的能力远比直接画几何拓扑可靠。你让模型凭空想象一个法兰盘的所有面它很容易在拓扑闭合上出错但让它调用circle().extrude().hole()这种成熟API它只要把参数写对几何正确性由CAD内核保证。2.2 路线B端到端直接输出B-rep——为什么难另一条更激进的路线是训练专门的模型从自然语言直接输出B-rep/STEP文件比如Zoo开源的text-to-cad系列模型走的就是这个方向。这类模型不需要中间代码层看起来更智能、端到端。但难点也摆在那B-rep不是像素它是几十个面、边、顶点之间的相互约束关系。模型推理时要保证所有面闭合、没有裂缝、没有退化几何这在数学上是组合爆炸级别的问题。就算跑通了工程师拿到STEP文件后一旦想要改参数就得回CAD软件里把特征重建一遍——因为模型直接输出的是结果而不是历史。2.3 两条路线的选型逻辑填空 vs 写作文打个比方路线A像填空题代码框架是给定的LLM负责把数字和调用关系填对错了局部改改就行。路线B像写作文自由度大、上限高但跑题、漏细节的概率也高。所以我的选型建议很直接如果你要的是快速拿到一个能进CAD继续修的模型优先用代码生成路线输出CadQuery/OpenSCAD代码再转STEP如果你要的是一句话直接出一个STEP可以试试端到端服务但要有心理预期——生成的零件可能需要修复几何或者需要回到CAD里重新做参数化。3. 实测一句话生成四孔法兰支架从Prompt到STEP的完整记录光谈原理容易飘落地的坑才是这篇文章最值钱的部分。下面是我完整跑通的一个案例——用自然语言让text-to-cad生成一个四孔法兰盘并把每一步的输入、输出和问题都记录下来。3.1 工具准备在线服务和本地开源两条路实测前先说工具。在线服务最省事比如Zoo的Text-to-CAD平台界面就是一个输入框提交自然语言之后能返回CadQuery、OpenSCAD或者直接导出的STEP文件。它的底层逻辑属于AI生成代码后端CAD内核计算体验上很接近给了句话收到一个文件。如果你有数据保密要求、或者想完全掌控流程可以走本地开源路线装一个CadQuery库和Jupyter环境再通过本地推理框架跑一个开源代码模型比如Qwen2.5-Coder这类来生成CadQuery代码剩下的计算全部在本地完成。这条路初期配置成本略高但胜在可控、可二次修改。3.2 提示词三次迭代从做一个法兰到能用的法兰第一次输入我只写了做一个法兰。结果生成的代码勉强能跑出一个圆盘完全没有孔、没有厚度逻辑倒角更是想都别想。问题在于提示词没有给出任何约束模型只能按统计概率猜。第二次输入我补上了关键尺寸做一个法兰外径80毫米中心孔直径20毫米四个安装孔直径6.5毫米均匀分布在直径60毫米的圆周上厚度8毫米。这次结果好了很多孔的个数、位置、直径都对上了中心孔也打出来了。但有两个问题模型没加倒角而且代码里所有尺寸都是硬编码的数字没有定义成变量——也就是说这不是真正的参数化模型。第三次输入我在提示词里明确要求了结构和变量用CadQuery生成一个法兰盘。将所有尺寸定义为变量外径80毫米中心孔直径20毫米厚度8毫米四个直径6.5毫米的安装孔均匀分布在直径60毫米的分布圆上最后给顶部边缘和孔的边缘添加0.3毫米的倒角。输出完整代码。这次得到了下面这样基本可用的结果import cadquery as cq # 定义可变参数 flange_od 80.0 # 法兰外径 center_id 20.0 # 中心孔直径 flange_thk 8.0 # 法兰厚度 bolt_pcd 60.0 # 安装孔分布圆直径 bolt_dia 6.5 # 安装孔直径 chamfer_size 0.3 # 倒角尺寸 result ( cq.Workplane(XY) .circle(flange_od / 2) .extrude(flange_thk) .faces(Z) .workplane() .hole(center_id) .circle(bolt_pcd / 2, forConstructionTrue) .vertices() .hole(bolt_dia) ) result result.edges(Z).chamfer(chamfer_size) cq.exporters.export(result, flange.step)3.3 拿到代码之后的检查与修复流程不要天真地以为生成完就能直接用。我的习惯是走一遍渲染预览-参数检查-逻辑检查三件套。先在Jupyter里把代码跑一遍用CadQuery的show()方法做三维预览。第一眼看外形圆盘厚度对不对孔位是不是均布然后检查变量把所有尺寸定义从头到尾读一遍确认外径、孔距、倒角这几个关键数字没有贴错位置——AI生成的代码偶尔会把法兰外径和分布圆直径写反。最后看建模逻辑拉伸方向、打孔基准面、倒角作用边。我这次生成的代码在倒角这一步应用到了顶部外缘但如果没有特别指定孔的边缘也要倒角模型默认只处理外轮廓。这个细节在实际零件中会影响装配手感必须人工补上。补完代码后调cq.exporters.export()导出STEP文件。3.4 导出STEP并在CAD软件里验证导出STEP只是第一步真正验证要把文件丢进FreeCAD、SolidWorks或者在线STEP查看器里再打开。我实测的流程是导入后测量最大外径、中心孔直径、安装孔间距和设计值逐一比对再检查特征树看看软件能不能识别出拉伸和打孔这些特征。这里有个重要的经验如果STEP文件是从端到端模型直接生成的CAD软件可能只能看到一个死实体特征树是空的如果是代码生成的特征识别通常会顺利得多。这也是为什么我更推荐代码生成路线——它留给你的不仅是一个几何还是一条可以继续改的来路。4. 参数化、公差和设计意图AI最难补的工程课几何对了只是及格。真正把text-to-cad放进工程流程时你会撞上三道墙语言的歧义、公差的缺失、参数化的深度。这一节讲的就是这三堵墙怎么绕。4.1 语言里的隐性假设同一个支架有几十种含义文字是人类最模糊的交流方式。你说做一个支架工程师脑补的是管道支架还是手机支架还是发动机支架是塑料件还是钣金件是受力件还是装饰件这些背景信息根本没写进文字里LLM只能从训练数据的统计分布里猜一个最常见的意思。所以提示词里必须把工程语境交代清楚。我自己常用的做法是按功能外形尺寸加工方式四个维度写功能法兰盘、轴承座、电机安装座外形圆形、矩形、带加强筋尺寸所有直径、厚度、孔位、数量加工方式车削、铣削、3D打印不同工艺对倒角、拔模角的要求完全不同这四要素写全生成结果的可控性会提升一个量级。4.2 公差和基准生成的是几何不是图纸text-to-cad给你的是一堆精确到小数点后几位的数字但这不代表它给了你公差。工程图纸上的关键信息——直径公差、位置度、平面度、基准符号——基本都不在这个流程里。生成模型输出的是理想几何而不是可制造的零件定义。这个预期必须建立好text-to-cad目前替代的是你从想法到三维草图这段工作它替代不了标注一张合格工程图的职责。AI生成的STEP进去你仍然要在CAD里补公差、定基准、出二维视图。好消息是几何准确的话这部分工作已经比从零开始建模型轻松太多了。4.3 参数化不只是能改尺寸还要能联动我前面说把所有尺寸定义为变量只是参数化的第一步。真正的参数化是联动把法兰外径从80改成120四个安装孔是不是还均匀分布在60的圆周上厚度变了倒角是不是还保持比例孔距离边缘太近有没有触发工艺警告这些约束关系代码里是可以写出来的比如把分布圆直径定义成外径的某个比例而不是写死60。但LLM默认不会主动这么干除非你在提示词里明确要求所有尺寸定义为变量并让关键尺寸之间保持比例关系。实测下来加上这句话之后生成的代码参数化水平会明显上一个台阶——这正是从一次性的模型到能反复用的模板的分水岭。5. 生成结果进产线格式转换、几何检查与什么时候能用的边界很多人demo玩得开心一接触到实际加工就发现处处是坑。这一节说清楚从Demo到产线中间还隔着哪几道工序。5.1 为什么STEP是进产线的硬门槛text-to-cad生成的结果可以直接导出STL如果你只是要个外观件拿去3D打印STL确实省事。但只要你涉及CNC加工、模具设计、装配仿真就必须换STEP。原因很实际CAM软件需要实体拓扑去生成刀路模流分析需要精确的闭合实体去做网格划分下游同事需要STEP放到自己的CAD软件里继续编辑。就算工具给了STEP你还要留意它是原生B-rep还是从网格拟合出来的伪实体。个别端到端模型为了省事实际输出的是网格转STEP那种文件导入CAD后一测量全是小平面根本无法用于工程。怎么判断导入CAD后用检查几何功能如果系统提示大量面由近似平面组成基本可以断定是伪实体直接重跑或者换代码生成路线。5.2 三步几何合法性检查肉眼看着对不算对AI生成的CAD模型最阴险的坑是看起来完美拓扑上夭折。我总结了一套三步检查法测量检查导入CAD实际测量外径、孔距、厚度确认和设计值一致。内核检查用软件的几何检查工具如FreeCAD的Shape Check、SolidWorks的检查看有没有自由边、退化面、缝隙。布尔运算测试把模型和一个简单方块做一次差集。如果布尔运算报错或崩溃说明拓扑有严重问题这文件不能进CAM。按我的经验端到端生成的模型大约每三四个就有一个需要几何修复代码生成路线的失败率低得多但偶尔也会因为代码里的布尔操作顺序问题产生不可靠实体。把这三步变成肌肉记忆能省掉大量下游返工。5.3 哪些场景真能提效哪些场景别硬上真能提效的场景有标准件快速生成、概念方案多轮对比、教学演示模型、夹具和支撑件的粗稿。这些场景的共同特点是要快、要够用、后续反正要改。别硬上的场景包括有安全认证要求的承力件、需要复杂自由曲面的工业设计件、需要严格装配约束和运动学关系的部件。这些场景对精度和设计意图的要求远超当前text-to-cad的能力边界。我现在的习惯是把text-to-cad放在设计流程最前面当想法加速器头脑风暴阶段用AI快速把脑子里的方案变成看得见摸得着的三维模型选定方向之后再由工程师导入正式CAD做标准化修正。等于把最费时的手工草图阶段压缩掉了其余流程一分没省但整体效率提升非常明显。6. 提示词、工作流与工具清单我踩过坑之后留下的建议最后一部分把我实操中攒下的经验打包成可直接抄作业的建议。这些都不是什么高深原理但每一条都是真金白银换来的。6.1 提示词的四条铁律第一单位写清楚毫米就是毫米英寸就是英寸别让模型猜。第二凡是数量相关的词都改成数字四个孔要写4个孔间隔均匀要写均匀分布在直径60毫米的圆周上。第三明确指定建模策略用CadQuery生成OpenSCAD代码这种话直接告诉模型用什么工具比让它自己选靠谱得多。第四把添加倒角添加圆角加加强筋这类特征要求写进提示词因为模型默认倾向于只做主形体不做细节。6.2 把text-to-cad当超级草图员搭好迭代循环我见过不少人用一次就放弃因为生成的东西没法直接用。问题出在预期text-to-cad不是给你一个成品工程师而是一个超级草图员。它画得快、不怕烦、不会累但你需要像带新人一样给它反馈。我建议你建立这样的循环生成→检查→修改提示词→再生成每次只改动一个维度。比如这次发现倒角缺失就只补倒角描述下次发现孔位不匀就只修正分布圆的表达方式。这样迭代三五轮结果会从能看推进到能用。另外务必把每次的提示词和输出文件存好用命名规范管理起来。迭代到满意的版本后回看历史版本的失败原因其实是最清晰的需求说明书。6.3 工具清单和我的默认选择按使用场景整理一份清单都是这个方向上主流的选择场景我的选择说明在线快速生成Zoo Text-to-CAD 等在线服务输入自然语言可导出CadQuery/OpenSCAD/STEP本地代码生成CadQuery 本地开源代码模型数据不出本机可编程可控建模脚本语言CadQuery其次OpenSCADCadQuery的Python API对AI更友好OpenSCAD适合纯几何逻辑预览调试Jupyter CadQuery渲染迭代速度快适合边改边看验证导入FreeCAD或SolidWorks检查特征树、测量、布尔测试我个人的默认组合是在线服务跑第一版快速找方向本地CadQuery跑第二版做参数化收敛最后导入FreeCAD做几何合法性检查。这套组合至今帮我稳定地把AI生成时间压缩在十分之一以内。最后分享一个我认为最宝贵的经验text-to-cad能不能在你的流程里扎根不取决于生成模型有多聪明而取决于你的提示词工程有多扎实。每一次迭代都是在教AI理解你的设计习惯就像带新人一样前期多花一点时间把需求讲透后期省下的时间是几何级的。这套思路值得每个想把AI放进设计流程里的人认真试试。
阅读完成 · 觉得有帮助?