1. 一句话就能出建模文件text-to-cad 到底在做什么过去大半年我一直在持续跟踪一个被很多人当成科幻 Demo的方向text-to-cad。简单说就是输入一段自然语言描述让系统直接生成一个可编辑的三维 CAD 模型文件——注意是真正能给下游用的 CAD 模型不是渲染图不是网格玩具而是带参数、能修改、能进制造流程的实体模型。这个方向的诱惑力实在太大。做过机械设计、建模、3D 打印的人都知道传统 CAD 的门槛主要不在画而在想你得先把脑子里那个零件的拓扑关系、尺寸约束、制造方式全部理顺再在软件里一步步画草图、拉实体、倒角、阵列。新手卡在界面操作上老手也逃不过大量重复劳动。text-to-cad 想做的事情就是把语言描述直接翻译成建模操作序列让人能把更多精力放在设计意图本身而不是软件命令上。我关注它还有个现实原因现在的三维内容生产需求正在暴涨。3D 打印爱好者要夹具、要备用件产品设计师要做概念方案机械工程师要出非标零件电商要商品模型游戏和仿真要低成本几何资产。过去这些需求要么找专人建模要么自己啃软件成本都很高。如果 text-to-cad 能解决从 0 到 1的草图阶段哪怕后面还需要人工打磨时间和成本也能压下来一大截。所以这篇内容不是一个学术综述而是我从一个长期使用者的角度把 text-to-cad 这个方向从技术逻辑、工具选型、实操流程到踩坑经验完整拆一遍。无论你是机械工程师、创客、3D 打印玩家还是做 AI 应用的开发者下面这些内容应该都能让你少走弯路。2. 和文生图相比text-to-cad 难在哪2.1 从看起来像到真的能用文生图爆火之后很多人会想当然地觉得文生 CAD 无非是加一条输出三维格式的约束。结果真正上手才发现两者难度完全不在一个量级。文生图的核心目标是视觉语义。你生成一只蓝色水杯图里的杯子哪怕高光、反射、透视有点怪只要整体观感对用户大概率能接受。但 CAD 模型不是观感问题它要求的是几何正确性孔必须是贯通的倒角不能破坏相邻面两个零件装配在一起不能有干涉。通俗点说文生图是在画一幅画而 CAD 是从字面上盖一座房子——画错一扇窗户顶多难看盖错一根承重梁是要出事故的。还有一个隐蔽但致命的差别可编辑性。你拿文生图模型生成一张图改起来靠的是重新生成或 P 图但工程场景里你几乎不可能接受每次微调尺寸都要从头生成。设计师必须能拿到一个参数化模型把 50mm 改成 52mm然后整个关联特征自动更新。这个要求直接把技术难度拉高了一个维度。2.2 几何合法性、语义对应和参数化三座大山把这两个差异拆细text-to-cad 要翻的其实是三座山。第一座是几何合法性。模型生成的结果必须是干净的实体表面封闭、无自交、无悬空边、流形完整。生成点云或者网格已经是难事把它们变成能用于 CAM计算机辅助制造和仿真的 B-Rep边界表示实体模型更是难上加难。换个角度看AI 画个错很难被量化但 CAD 模型是否合法性可以通过布尔运算、实体检查一目了然地判定系统没有蒙混过关的机会。第二座是语义到特征的对应。自然语言是极其模糊的一个带法兰的支架——这句话没有尺寸、没有孔位、没有板厚人类设计师能靠经验脑补模型却要从训练数据里找出最可能的映射。更麻烦的是机械领域的术语高度结构化M6 螺纹孔腰型槽沉头孔这些概念不仅包含几何还包含标准和工程惯例。模型不懂这些生成出来的东西就是形似而神不似的装饰品。第三座是参数化表达。CAD 流派中直接建模Direct Modeling虽然好用但真正适合工程迭代的仍是参数化建模——特征树、约束、变量全部保留。这就要求模型输出不止一个结果而是一套可解释的建模步骤。当前很多模型选择输出代码比如 CadQuery、OpenSCAD 脚本本质上就是让代码承担建模步骤的载体这已经是实践中最接近工程需求的妥协方案。我把这三座山的难度做个对照大家感受会更直观维度文生图text-to-cad评判标准视觉相似、美观几何正确、可制造、可修改错误后果重画一张加工报废、装配干涉数据表达像素矩阵RGBB-Rep、特征树、参数约束可编辑性基本不可编辑必须参数化工程标准无螺纹、公差、标准件、配合关系模型验证人工肉眼布尔运算、干涉检测、有限元3. 技术路线现在的主流做法和背后的逻辑3.1 路线一生成网格和点云再做后处理最像文生图式的思路是用扩散模型直接生成三维体素、点云或者带符号距离场SDF再把结果 Marching Cubes 成网格模型。这条路线在生物形态、艺术模型、游戏资产上有不少成功案例但放到工程 CAD 语境里有个致命问题网格转 CAD 非常痛苦。你要么把网格当作造型参考重新逆向建模要么做自动曲面拟合两者成本都高得离谱。我给这条路的定位是从 0 到 0.5。它能帮你快速看到大概长什么样但离可用工程文件还很远。普通读者如果只是想摆个 3D 打印摆件它勉强够用希望改尺寸、加孔位、出工程图还是趁早换路线。3.2 路线二让大模型直接写建模代码这是目前我见过最接近落地、也确实被多个产品采用的方向。思路很直白CAD 建模本来就可以用代码描述CadQuery、OpenSCAD、Build123d 都是成熟的程序化建模库。那么何必让模型直接生成复杂的 B-Rep 呢先让大语言模型把自然语言翻译成一段建模代码再把代码交给解释器执行得到的就是一个保留了建模逻辑的参数化模型。这个思路的精妙之处在于它把问题降维了。LLM 擅长代码生成而 CAD 代码又天然带有语义和参数信息——修改尺寸就是改一个变量增加孔位就是调一个循环参数。用户甚至可以直接阅读和修改生成的脚本实现真正意义上的可控性。我在本地试过用通用大模型配合 CadQuery 生成简单的法兰盘、支架只要提示词给得足够具体生成的代码可以直接跑出正确实体那一刻确实有打开新世界的感觉。当然这条路线最大的瓶颈是模型对 CAD 库 API 的熟悉程度。通用模型没训练过足够多 CadQuery 代码时生成的代码会频繁报错但只要针对 CAD 代码做微调效果就能立刻上一个台阶。这也是我判断现阶段代码生成比几何生成更有工程价值的原因。3.3 路线三程序化 CAD 与规则引擎结合还有一条不那么AI 味但工程上非常稳的路线先用规则引擎把常见的零件族法兰、支架、外壳、齿轮参数化再用自然语言解析器把用户描述映射到参数集。它不试图端到端生成而是做限定领域的翻译。这条路线的好处是可靠、可预期适合标准件、型材件这类高度结构化的对象。坏处也明显只能处理预先定义好的模板遇到非常规设计就束手无策。对我个人而言它是工具箱里最稳的一把扳手能解决不少实际工作但撑不起我对通用建模的全部期待。4. 实操把一个零件从文字变成可编辑模型4.1 工具选型建议先说工具。目前市面上的 text-to-cad 工具大体分三类在线商业产品、开源模型、本地通用模型程序化建模库组合。我自己的挑选标准有三个能不能输出可编辑源文件、生成的失败率是否可控、是否支持常见 CAD 格式导出。商业在线工具的优势是开箱即用通常直接给出 STEP、STL、IGES 等格式劣势是免费额度少黑盒输出难以深度调参。开源模型的优势是可定制但部署成本高对硬件要求不低。如果你的目的是快速验证效果我建议先走通用 LLM CadQuery这条几乎零成本的路线——本地装好环境用现成的大模型 API 或开源模型就能完成一个闭环。我给出了这几条路线的一般对比方案可编辑性上手成本可控性适合人群在线 text-to-cad 工具中等导出 STEP/STL最低弱产品经理、3D 打印玩家开源生成模型低多为网格高中研究者、算法工程师LLM CadQuery高脚本即模型低强工程师、开发者4.2 一个能落地的提示词模板很多人拿到 text-to-cad 工具后第一反应就是甩一句话帮我生成一个支架。然后就抱怨效果差。这其实不是模型蠢而是提示词信息量严重不足。传统建模里你要确定基准面、确定尺寸、确定特征顺序AI 建模也一样没有这些信息它只能靠猜。我自己写提示词有一套固定模板基本要素包括整体形状、外部尺寸、壁厚或板厚、孔的类型和位置、倒角/圆角要求、材料或加工方式、明确单位。举一个我实际用来生成安装板的例子生成一个铝合金安装板整体为长方体长 120mm宽 80mm厚 10mm。四个角各有一个直径 6.5mm 的通孔孔中心到相邻边缘的距离都是 10mm。底面中心有一个直径 30mm、深 5mm 的沉孔。所有棱边倒角 1mm。拿这个提示词去测在线工具和 LLM 的表现都会比一个安装板好出一个量级因为可猜测的模糊空间已经基本被消除。如果模型还支持按特征分解我会拆成两步先生成主体再提示在已有主体上叠加以下孔位特征……这样成功率还能再往上走。4.3 用 CadQuery 代码把描述变成参数模型为了让大家更直观理解代码生成 CAD到底怎么闭环我贴一段基于 CadQuery 的示例。CadQuery 是 Python 写的一个程序化建模库生成的是 STEP 等标准 CAD 格式可以直接丢进 FreeCAD、Fusion 360 做后续修改。import cadquery as cq # 安装板主体 result ( cq.Workplane(XY) .box(120, 80, 10, centeredTrue) .edges().fillet(1) # 所有棱边倒角 1mm ) # 四角通孔 result ( result.faces(Z).workplane() .pushPoints([(-50, -30), (50, -30), (-50, 30), (50, 30)]) .hole(6.5) ) # 底面中心沉孔 result ( result.faces(Z).workplane() .center(0, 0) .cboreHole(30, 5, 6.5) ) # 导出 STEP cq.exporters.export(result, mounting_plate.step)这段代码的建模逻辑是先生成 120×80×10 的板子然后对所有棱边倒 1mm 圆角推算出四角孔位置后打 6.5mm 通孔最后在底面中心打一个直径 30mm、深度 5mm 的沉孔。整个过程完全参数化——你只要改box()里的数字孔位、孔距会自动跟着变。用 LLM 来生成这类代码等于让 AI 去写一个几乎没有歧义的 Python 脚本。它不是直接从文本映射到三角形网格而是完成了文本 → 建模指令序列 → 几何实体的完整翻译。这也是我一直强调的想要可控的 text-to-cad优先找能输出代码的工具而不是只吐网格的工具。5. 实战中发现的问题和排查技巧5.1 五类高频翻车现场我在反复测试中总结出五类最常见的失败模式你可以直接对号入座。第一类单位混乱。这是最坑的。模型有时生成 120 英寸的板有时把 5mm 和 5cm 混用。排查方法是在提示词里把所有数值强制带上单位并在提示词末尾加一句所有尺寸单位均为毫米。第二类特征位置错误。比如四角孔算出来的坐标把孔打到了板外或者阵列数量少算一个。这往往是模型进行坐标推算时出错解决办法是把相对位置关系写得更明确——孔中心距离左侧边缘 20mm、距离上边缘 20mm而不是只写四个角。第三类布尔运算失败。生成代码后实体变成多实体合并后留下残缺面。这类情况通常需要人工检查特征树的布尔操作必要时把先打孔再倒角的顺序调整为先倒角再打孔。第四类语义幻觉。模型一本正经地引用了不存在的标准件库函数或者对沉头孔采用了错误的标准角度。这个最棘手只能靠建立自己的提示词库、固定术语来降低概率。第五类过度设计。模型会自作主张加上凹槽、凸台、装饰性网格把工件整得又重又难加工。为此我在提示词里经常强制加不得包含任何额外的装饰特征。5.2 我总结的提示词书写约定踩了这么多坑之后我把自己的提示词习惯整理成了一套不受具体工具限制的约定先给形状再给尺寸再给特征形状定基调尺寸定范围特征决定加工内容。使用标准工程术语写通孔沉孔螺纹孔腰型槽而不是圆洞螺丝口。指定基准面或放置方式例如这个模型底面朝下放置所有孔位基于顶面定位。把数值写成绝对值而不是比例关系直接写 50mm不要写较长的边。加工方式最优先说明这是 3D 打印件和这是 CNC 铣削件模型生成的倒角、圆角策略会完全不同。这些约定本质上做了一件事把 AI 的自由发挥空间压到最低。你在提示词里留的模糊空间越多AI 替你脑补的虚构细节就越多出错的概率也越高。设计者做专业建模也是一样的逻辑——约束越多歧义越少。6. 边界、场景和下一步值得做的事6.1 现在最适合尝试的应用场景回归到实际问题text-to-cad 现在到底能用在哪我自己的判断是凡是结构简单、尺寸明确、标准件属性强的场景它已经能产生实际生产力。一是非标零件和夹具的快速出图。工厂里大量板类、块类、支架类零件结构不复杂但每次都手工建模很浪费时间。用 text-to-cad 先把主体生成出来再在专业软件里做微调一个零件能省下十几分钟到半小时。二是 3D 打印的一次性部件。打印玩具、外壳、支架时用户不追求严格的工程配合重点是尺寸大致对、孔位能对上。text-to-cad 出的 STEP 模型转成 STL 直接切片效率提升肉眼可见。三是设计前期的方案探索。我见过不少产品设计师拿 text-to-cad 给自己快速出感受比例的概念体块这个阶段不需要精确尺寸只需要快速迭代大量形态方案AI 在这个环节的价值是碾压式的。四是知识门槛的降低。非机械背景的创客想做一个零件过去必须先学会建模软件现在只需要能把需求讲清楚然后拿生成结果请专业工程师做评审。这个门槛的下降长期看比效率提升的意义更大。6.2 暂时别指望它能解决的事有些事情我建议你现在别往 text-to-cad 上押注。复杂的装配体设计——十几个零件、复杂的配合关系、运动机构这类任务连人脑都要反复推敲当前 AI 很难一步到位。还有精密配合件比如需要 H7/g6 公差等级的轴孔配合AI 缺乏对配合关系、公差带的显式建模能力硬要它做也只能做个形似。此外任何需要有限元分析和强度校核的设计都不能让 AI 直接交付终稿——它没有受力概念你让它生成一个能承受 500N 拉力的支架它只能输出一个看起来差不多的样子却不保证真的能扛住。总体上说text-to-cad 的定位是设计意图的快速翻译器而不是替代工程师的终极 CAD 系统。现阶段最健康的使用方式是把它放在工作流的前半段先用它完成大量重复性、标准化的基础建模把人的精力省给真正需要经验、判断和创造性的部分。就我个人这几个月的体会来说text-to-cad 给我最大的冲击不是它有多聪明而是它逼着我重新审视了建模这件事的本质——我过去以为困难的是软件操作后来发现把设计意图表达清楚本身就是一项可以拆解、可以训练的技能。你要是也想上手试一试我的建议很简单别再等一个完美的工具了先选一个能输出 CadQuery 脚本的模型拿你手头最常画的那个零件做测试大概率会回来感谢我的。