
前阵子社群里有朋友问了我一个问题现在火得一塌糊涂的text-to-cad到底是行业噱头还是真能落地我当时没直接回答先反问了一句如果生成的模型不能编辑、不能进CAM、不能出工程图你敢拿它去车间下料吗对方愣了一下。这正是text-to-cad和大众熟知的text-to-3d比如一键生成手办模型、游戏场景资产最本质的区别。前者要的是能进设计流程的精确模型后者只要看着像、用来展示就行。精度要求、数据结构、下游工具链完全不同。我这两年一直在跟踪这个方向也把几个主流开源方案拉下来真刀真枪跑过。今天就以实际项目经验为线索把text-to-cad背后的技术路线、模型选型、提示词设计、踩坑实录全部摊开来讲。无论你是机械工程师想提效还是算法同学想入局这篇都值得读完。1. 先搞清楚text-to-cad到底在解决什么问题1.1 CAD建模的最后一公里不是画图而是把意图翻译成特征CAD软件发展了半个世纪核心交互方式依然是人用鼠标键盘把几何操作一步步告诉软件。画一个法兰盘你要先建草图、画圆、拉伸、打孔、倒角几十步操作半个多小时。这中间真正烧脑的不是怎么操作软件而是我脑子里想的是止口配合、密封面粗糙度、螺栓分布圆直径怎么把这一整套设计意图拆成特征序列。text-to-cad想干掉的就是这个翻译过程。它把我想做一个带四个安装孔的矩形支架长120宽80厚5四角倒R5圆角孔中心距边10mm这样的自然语言直接翻译成一串CAD建模指令。翻译的结果不是一张图片不是一组渲染好看的面片网格而是一段可执行、可修改、可再加工的建模脚本。这正是它和AI绘画、AI生成游戏素材最大的分水岭。你可以用Stable Diffusion生成一张像真的一样的法兰盘渲染图但那张图没有任何几何精度可言不能测量、不能装配、不能进数控加工。工业场景需要的是闭环文本到脚本脚本到模型模型到图纸图纸到加工。text-to-cad当前最务实的定位就是打通文本和脚本之间的这第一环。1.2 为什么2024年这个方向才突然爆发很多人以为text-to-cad是最近才有的事。其实用自然语言生成CAD模型的尝试在参数化设计时代就有雏形但当时只能做从菜单里选模板填参数的半自动方案本质上还是人在手动配置。真正的转折点是代码大模型的成熟。CAD软件里的参数化建模过程无论是SolidWorks的API宏、历史树操作序列还是CadQuery、OpenSCAD这类程序化建模框架本质上都可以写成代码。而代码恰恰是当前大模型最擅长的输出形式。2023年底Zoo开源的Text-to-CAD模型就是在LLaMA基础上微调把自然语言直接映射成CadQuery脚本同期Text2CAD论文进一步提出了大规模文本-CAD指令数据集把草图-拉伸-打孔-布尔这类特征序列变成机器可学习的符号序列。于是整个技术闭环突然被打通了大模型有强大的语言理解能力程序化CAD框架有完美的代码-模型对应关系中间缺的只是一个翻译训练的过程。这个窗口期就是2023年底到现在。谁先积累了高质量的训练数据谁能把生成质量打磨到生产可用谁就能吃到工业软件AI化这波红利。1.3 text-to-3d和text-to-cad一字之差天壤之别我遇到太多人把这两者混为一谈。这里必须掰开揉碎讲清楚。text-to-3d面向的是可视化、游戏资产、影视预演、电商展示。它的输出是三角网格mesh由成千上万个三角形拼接逼近物体表面。网格模型长得再精细本质上是一张蒙皮里面是空的没有实体特性没有参数没有特征树。你没法在CAD软件里给它加一个孔就像你不能在一张照片上摸出凹凸。text-to-cad面向的是工程设计、制造、仿真。它的输出是边界表示B-rep实体模型或参数化建模脚本包含几何拓扑信息面、边、环、体以及建模特征的历史记录哪个是拉伸、哪个是打孔、哪个是倒角。有了这套信息你可以修改模型、可以出工程图标注公差、可以做有限元网格划分、可以生成数控加工程序。说句大白话text-to-3d造的是雕塑text-to-cad造的是零件。雕塑只需要形似零件必须精准到微米级。2. 技术路线全景拆解从代码生成到直接预测几何2.1 路线一程序化建模脚本生成目前最成熟、最接地气这条路的代表就是Zoo的Text-to-CAD以及一系列基于CadQuery、OpenSCAD微调的大模型。思路极其优雅CAD模型本质上可以用一段命令式脚本精确描述模型的工作就是把用户的自然语言变成这段脚本。就像GitHub Copilot把注释变成代码一样把需求描述变成建模脚本。这条路最大的优势是输出天然可编辑。生成的CadQuery脚本里你可以改一个尺寸变量模型自动重建。生成的STEP文件进入SolidWorks、国产CAD软件后也是标准实体模型。而且当前代码大模型的先验知识很强大它天生知道法兰盘要有螺栓孔、轴承座要有加强筋、支架要减重这些工程常识只要训练数据里有足够多对应关系泛化能力非常可观。缺点也很明显生成上限被建模框架的表达能力锁死。CadQuery能表达的造型范围是参数化建模框架的上限但事实上工业零件绝大多数就是由拉伸、旋转、扫掠、抽壳、布尔这些基础特征构成的覆盖度比想象中高很多。2.2 路线二直接预测网格或隐式场学术火热、落地尴尬这条路和text-to-3d共用很多技术底子本质上是把扩散模型的生成空间从图像像素换成物体表面。模型直接输出体素场、隐式符号距离场SDF或者直接预测B-rep的拓扑结构。Point-E等早期工作开了这条路后来大量论文跟进。优势是几何表达自由度高能生成非常复杂的自由曲面造型不受参数化特征模板限制。但落地时问题重重输出的网格需要用逆向工程软件重新拟合曲面才能转成实体转换过程精度损失大、自动化困难。就算转换成功了模型也只有几何形状没有特征参数下游修改等于从头再来。这条路线我认为短期更适合做概念设计阶段的形状探索离真正的制造闭环还远。2.3 路线三检索和装配式生成解决标准件场景很多时候用户想要的不是一个全新零件而是从类似库里找一个最接近的改几个参数。这种需求用大规模预训练模型有点杀鸡用牛刀传统CAD插件里的标准件库、智能装配向导其实已经解决得很好。新兴的AI方案会在此基础上增加自然语言检索输入描述先从模型库检索出候选再用语言模型调整个别尺寸参数。优点是结果极其可靠因为每个推荐模型都经过工程验证。缺点是只适合已经有成熟模型库的企业对新零件设计帮助有限。它更多是辅助选型而非辅助创新。2.4 路线四直接预测B-rep拓扑序列前沿理论的圣杯这是学术界目前最兴奋的方向。把CAD建模过程看作一个序列生成问题草图几何控制点序列、拉伸方向序列、布尔操作序列这些要素有序排列成一个操作指令序列然后像训练机器翻译模型一样训练大模型让模型直接输出B-rep的建模指令序列。它的野心比程序化脚本生成更大不再依赖CadQuery这类现成的建模框架而是从底层模拟原生CAD内核的建模逻辑。如果这条路走通生成的模型会像资深工程师亲手建的一样特征树干净、历史记录清晰、参数关系正确。难点在于建模序列的表示学习非常难同一个零件有无数种建模方法不同工程师建出来的特征树天差地别怎么让模型学到最优建模策略极其困难。此外真实工程数据尤其是带完整特征树的原始建模文件太稀缺了企业数据都在保险柜里公开数据集规模远远不够。目前还处于论文阶段。2.5 选型建议不同角色怎么选我按是否要进入制造流程这个标准做了一个个人经验总结如果你的目标是快速做外形方案、客户展示、投标渲染第二条路网格生成效率最高能用最少的力气看到大致形态。如果目标是进入真实设计流程要出图、要改尺寸、要下厂加工第一条路脚本生成是当前唯一务实的选择。如果企业的业务是大量标准件、通用件选型第三条路投入产出比最高别盲目上大模型。3. 从零到一动手实操把一句话变成可编辑CAD模型3.1 环境准备别急着上GPU先跑通CPU推理很多人一上来就纠结我要几张A100其实完全没必要。以Zoo开源的Text-to-CAD模型为例它用的是微调后的LLaMA架构量化版本的模型在16GB内存的普通开发机上就能跑CPU推理。步骤很直接从GitHub拉取仓库安装依赖主要是transformers、加速库、CadQuery下载量化权重然后写一个几十行的推理脚本。全流程跑通大约半小时比折腾显卡省心太多。真正需要GPU的是你想自己微调模型用CAD指令数据集做全参数微调的时候那时再考虑部署CUDA环境。但大多数人其实用不到这一步直接用官方预训练权重就够呛。我实测最舒服的姿势是在Windows下装WSL2然后在Linux环境里跑推理CadQuery的STL/STEP导出还有代码高亮调试都顺滑很多。如果实在不想碰Linux直接在Windows下用VS Code跑Python脚本也行差距不大。3.2 提示词设计生成质量的半壁江山这条可能是整个项目里最值钱的经验。用text-to-cad提示词的颗粒度直接决定结果的可用性。最开始我和大多数人一样觉得说得越像人话越好写了一句make a bracket出来的东西倒是也像个支架但尺寸完全随机。后来我试了三组不同颗粒度的提示词对比非常明显第一组模糊描述make a mounting bracket with holes。生成结果形状大致是支架但尺寸随机、孔位随便毫无工程可用性。第二组功能描述a light aluminum bracket for mounting a servo motor, with four screw holes。结果结构合理性提升有加强筋、有安装面痕迹但具体尺寸依然不可控。第三组参数化描述A flat rectangular mounting bracket, 100 mm long, 60 mm wide, 5 mm thick, with four 8 mm diameter through holes, located 10 mm from each corner, plus 5 mm fillets on the four outer corners。结果一个设计意图完整的、可直接改参数的支架所有关键尺寸都锁住了。从那以后我养成了一个习惯凡是能用数字描述的特征绝不用形容词。把厚一点改成5mm厚把间距合适改成孔中心距边10mm。大模型本质上是一个概率分布形容词带来的是方差数字带来的是约束。具体提示词我沉淀了一个通用模板现在一直在用明确零件类型 → 给出总尺寸 → 给出关键特征及数量、尺寸 → 明确特征的位置关系 → 补充圆角、倒角、孔等细节。比如Create a circular flange, outer diameter 80 mm, inner bore 30 mm, thickness 12 mm, with six 6 mm through holes evenly spaced on a 60 mm bolt circle, and 1 mm chamfers on the outer and inner edges.每个信息点都是模型能锁定的锚模糊空间的压缩是生成高质量零件的核心。3.3 实用案例一个怎么都不过时的安装支架我选一个最经典的矩形支架来做完整演示这个零件简单但覆盖了text-to-cad最核心的建模能力拉伸、打孔、圆角、材料参数。最终提示词就一句话A flat aluminum mounting bracket, 120 mm by 80 mm, 6 mm thick, with four 8 mm diameter through holes at the four corners, each hole center 10 mm from the adjacent edges, all four outer corners rounded with a 5 mm radius.给模型生成的CadQuery脚本抽出来核心逻辑其实就是三步先建一个120×80×6的长方体实体然后在四个角点定位挖出四个直径8的贯通孔最后对四角做半径5的圆角。整段脚本不超过30行非常干净。这里要特别夸一下程序化脚本生成路线的价值这段脚本生成后我把厚度6改成了8重新运行脚本模型自动重建孔的位置和圆角都保持在相对关系正确的情况下。这就是可编辑性的真正含义。你把这段脚本丢给同事对方改一行就能适配新需求这在传统AI生成方案里想都不敢想。3.4 从代码到三维模型导出和再编辑的四种路径生成CadQuery脚本之后模型的走向有四种常见路径我分别说一下使用体验。第一种是直接在CadQuery内置的查看器里预览。最轻量适合快速检查形状对不对。第二种是导出STEP格式。这是CAD界硬通货SolidWorks、CATIA、FreeCAD、国产中望CAD都能直接打开。STEP文件被打开后就是标准实体模型能测量、能出工程图。第三种是导出STL格式。适合做3D打印切片、有限元前处理网格但失去参数化信息。第四种是反向生成CAD原生特征。目前只能做到将CadQuery脚本在CAD软件内部重建为原生参数化特征树中间还有不少技术堵点一些商业插件正在做类似能力但尚未完全成熟。我个人建议凡是准备下厂加工的模型一律导出STEP它是精度和兼容性的最佳平衡点。3.5 模型推理速度的一些实测数据群里总有人问速度和成本我把常规配置下的实测数据列出来供参考在16GB内存的M系列芯片机器上用量化模型CPU推理生成一个中等复杂支架大约耗时15到30秒。在入门级GPURTX 4060级别上速度能压缩到5到10秒。生成代码如果出错需要反复自纠错的情况下时间会相应延长到分钟级。这个速度对工程试探阶段完全够用毕竟人手工建一个像样的支架也要十几分钟。真正要加速要么用更强的GPU要么并发跑多个推理任务选最优结果。4. 常见问题排查实录不是模型不行是你没调对4.1 问题速查表先收藏再说我把实际使用中高频踩到的坑整理成一张速查表按出现频率排序问题现象根因分析处理建议生成了报错的代码模型输出了CadQuery不存在的方法或错误语法打开报错信息从报错位置向上排查手动修正偶尔是版本API差异用新版CadQuery重试尺寸完全不对比如要求100mm实际生成了1000mm模型内部单位约定和提示词不一致默认走了英寸或毫米混用提示词里显式声明单位比如dimensions are in millimeters并用连字符明确数字与单位孔位置歪了或者漏生成提示词中位置关系描述太抽象模型没有准确理解10mm from each edge的含义把所有位置信息改成明确的锚点描述必要时多走一步让模型先生成孔再布尔取差模型生成了圆角但圆角半径错误圆角特征在训练数据里往往和视觉特征关联弱模型容易根据经验猜一个值模板中显式给出fillet/radius及数值不要依赖模型的审美生成速度过慢或长时间无响应CPU推理重复采样模型自纠错无限循环限制最大生成token数、降低采样次数、设置输出超时优先用GPU推理模型结构合理但加工不可行比如薄壁件过薄模型缺少制造约束先验训练数据没有覆盖制造可行性生成完成后加一道薄壁检查薄于许可值立即重新生成提示词中补充manufacturable, min wall thickness 2mm4.2 定位Bug的三个层次如果生成的代码能运行但结果不对我的排查路径一般分三步走。第一步验证纯几何输入条件是否满足。比如孔数量对不对、孔中心距边界的距离对不对、主体尺寸对不对。对照提示词逐项打勾这一步能过滤掉一半的问题。第二步检查特征执行顺序。CadQuery里建模顺序改变会导致完全不同的结果比如你先倒角再打孔和先打孔再倒角孔口的倒角效果就是两种。遇到圆角、倒角相关的异常优先检查顺序。第三步检查参数的单位和数据类型。有时候模型把直径当半径用了把板厚当成高度用了这种错误人眼很难一眼看出来需要测量模型关键尺寸来反向定位。4.3 用输出样例检验生成质量而不是看起来像最后分享一个非常实用的经验教训永远不要相信渲染视图。模型的线框、着色视图好看不代表几何正确。我见过不少翻车现场视图里完美对称的零件量一下孔间距一边是38.2mm另一边是39.8mm。原因可能是模型生成的脚本里用了浮点误差累积也可能是提示词里给了不对称的描述。所以我现在固定一套质检流程生成脚本后不急着看视图先用代码输出所有关键尺寸主体长宽高、孔直径、间距、圆角半径然后用断言assert检查它们是否符合提示词要求。不符合就立刻丢弃重生成省得后续被软绵绵的视觉假象迷惑。这套流程本质上把文本到CAD从一次玄学生成变成可量化的工程校验。最后的一些额外心得如果你问我text-to-cad离取代设计师还有多远我的答案是远得很。但它离变成设计师手边最强副驾驶的距离已经非常近了。一次意外经历让我印象很深我让模型生成一个异形支架故意在提示词里漏掉了倒角需求结果模型自动在应力集中的根部加了加强肋。那一刻我忽然明白这个工具已经不只是听懂人话它在某些情况下还能补齐人类忘掉说出口的话因为它的训练数据里包含了海量工程常识。我现在的建议是别把text-to-cad当成一个需要惊叹的科技新闻把它当成一个需要投入使用的日常工具。从最不起眼的支架、垫片、法兰入手跑通一两个用例把提示词的颗粒度打磨成自己团队的模板然后你会在一次次的生成-检查-修改循环里找到最适合自己业务的打开方式。这个过程不需要等模型再更新多少版本现在就可以开始了。