
最近有个朋友找我救火客户发来一个三通管的需求要尽快出一个3D模型报价。他手头只有一段一百多字的文字描述连个像样的草图都没有。要在过去我肯定得打开CAD软件从基准面开始画草图、加约束、拉伸、打孔折腾大半天。这次我试了试用text-to-cad的思路把那段文字直接丢给大模型让它生成一段CadQuery脚本再跑出实体模型。虽然中间改了几轮但整体速度确实快了很多。这个经历让我意识到text-to-cad已经从论文里的概念逐渐变成了能实际干活的工具。text-to-cad一句话概括就是用自然语言描述一个三维模型让AI生成可编辑的CAD模型或能构建模型的脚本。它瞄准的不是画图这个动作而是把设计意图翻译成几何操作的核心问题。无论你是机械工程师、产品设计师还是偶尔需要做模型的创客只要还在跟三维建模打交道这个东西都有资格进入你的工具箱。这篇文章我会从技术原理、实操过程、踩坑经验和工程落地方案四个维度把我这段时间折腾text-to-cad的真实记录完整分享出来。1. 当一句话需求开始挑战传统建模流程1.1 传统参数化建模的高门槛与低效率我从SolidWorks入门后来用了十几年Creo和FreeCAD太清楚传统参数化建模的繁琐了。画一个带法兰的三通管你需要先新建零件选择基准面画中心线画旋转轮廓再旋转切除内部空腔然后拉伸法兰、画螺栓孔圆形阵列、倒角……每一步都依赖快捷键、菜单层级和对约束关系的理解。新手光是把草图完全定义这个概念搞明白就得花几个星期。更麻烦的是客户的原始需求往往不是精确的尺寸表而是类似这种样子的三通接口带法兰孔位按标准来这类模糊描述。工程师拿到这种需求得先自己脑补一个模型再动手画。整个过程的设计意图传递严重依赖人的经验和空间想象力沟通成本极高。1.2 text-to-cad的本质设计意图到几何操作的自动翻译text-to-cad真正要解决的不是建模本身而是读懂需求并拆解成建模操作这个环节。它把自然语言描述中的实体法兰、肋板、孔、属性厚度、直径、数量和空间关系平行、同轴、等距抽取出来映射成一系列CAD内核能执行的几何操作比如拉伸、旋转、布尔运算、阵列。理解这一点很重要因为市面上的工具虽然都叫text-to-cad但底层逻辑完全不同。有的生成一个网格文件STL有的生成参数化脚本有的直接生成B-rep实体。它们的可编辑性、精度和工作流整合难度天差地别。你如果只是想要个效果图那么网格文件就够了但如果要出工程图、做数控加工或者做装配分析那必须拿到带参数和特征的实体模型。所以选择哪种text-to-cad方案本质上取决于你下游要用模型来干什么。2. 拆开黑盒三类主流技术路线和它们各自的脾气2.1 代码生成派让语言模型写脚本CAD内核负责执行这条路线的代表做法是把大语言模型和CadQuery、OpenSCAD这类程序化建模库绑定。大模型不直接生成几何体而是生成一段Python脚本或OpenSCAD代码再由解析器执行代码调用CAD内核计算实体。优点非常明显输出结果天生是参数化的尺寸、特征都写在脚本里出一万个模型也能随时改。而且代码可以被版本管理工具追踪适合团队协作。缺点是建模能力受限于脚本库的表达范围。CadQuery擅长机械零件、钣金、螺纹这类规则几何但你要生成一个有机曲面、一个雕塑造型它就无能为力了。这个路线的提示词设计必须有编程思维。你不能只说给我一个花瓶最好说用旋转体命令轮廓点由以下列表定义……否则大模型大概率会写出一段语法正确但几何错误的东西。我后面会详细说提示词怎么调。2.2 原生生成派直接预测B-rep或网格几何体另一条路线是把三维几何生成当图像生成来做。学术界比较有代表性的工作比如多模态大模型直接解码出体素、点云、隐式场或者网格。这类方法输入文本输出常见的STL或OBJ文件。优点是能生成任意形状包括自由曲面、手办摆件、抽象雕塑这是脚本参数化很难实现的。缺点是输出结果通常是非参数化的网格缺少特征树和设计历史想改一个孔的直径基本等于重做。而且网格质量参差不齐拓扑错误、破面、非流形边很常见拿到CAD软件里经常直接崩溃或无法精确测量。如果你只是做概念展示、3D打印摆件这条路线的工具可以用。但如果你要做机械结构设计原生生成派目前还只能当灵感来源——看一眼形状然后自己在CAD里重画。在制造领域里网格模型和B-rep模型的鸿沟远比外行人想的要大。2.3 混合派语义解析加模板参数化组装第三类路线介于前两者之间可以理解为用语义解析器从文本中抽取意图再从预先定义的特征模板库里组装模型。比如说用户描述带6个孔的圆形法兰系统就先识别出法兰这个语义概念然后调用法兰模板把直径、厚度、孔数、螺栓圆直径填进模板参数。这种方式最接近人画图时的思维方式先用标准件/常见结构打底再往里填尺寸。优点是生成可靠、特征规范不会出现拓扑错误缺点是模板之外的内容没有创造力遇到非标形状基本就干瞪眼了。它在实际BIM和机械设计软件里用得比较多很多软件商所说的AI辅助建模其实就是这个思路。对于用户来说它的学习成本最低但因为限制了特征范围所以不适合所有场景。不管哪条路线现在都在快速进化。针对机械设计场景代码生成派目前最靠谱因为它保住了可编辑这条命根子针对消费品、文创场景原生生成派视觉效果更好针对标准件、管道、建筑构件模板混合派效率最高。所以没有哪个绝对最好只有哪个更适合你要干的事。3. 一次真实的text-to-cad实操从文字到法兰盘模型3.1 环境准备我选了哪条路线为什么为了写这篇文章我专门搭了一个最小可复现的环境。我选择的是代码生成派用一个大语言模型的API这个很普遍我可以直接通过官方接口调用配合CadQuery作为几何引擎。为什么选这条路线有三个原因。第一CadQuery生成的模型是带特征的实体可以用FreeCAD直接打开也能导出STEP文件后续做装配和制造都没问题。第二脚本可修改我可以通过迭代提示词快速调整。第三CadQuery在Python生态里安装简单pip install cadquery就完事不需要商业许可证。环境清单大致如下Python 3.11CadQuery 2.4大模型API我选用的是某在线大模型接口支持联网工具调用但text-to-cad这里不需要联网可视化直接用VTK或者把STEP拖进FreeCAD检查需要提醒的是大模型API有上下文长度限制复杂零件描述太长会被截断。我的做法是把描述拆成总体形状和特征列表两部分分批喂给模型最后再让它合成完整脚本。3.2 提示词工程如何把模糊需求变成机器能懂的约束第一次尝试时我给模型的是这种提示词创建一个法兰盘外径100内径50厚度20有6个螺栓孔。模型生成了一段看似合理的CadQuery代码但运行后我傻眼了螺栓孔直接在法兰端面上打穿没有任何沉头而且螺栓孔的圆周分布位置是默认从0度开始的导致与我预想的孔位对不上。这暴露出一个核心问题自然语言里的省略信息模型会按照它自己的默认值脑补而这些默认值往往不符合你的加工标准。经过几轮尝试我整理出了一套模板大家可以直接抄作业以毫米为单位创建名为flange的零件。 第一步在XY平面上拉伸一个圆柱外径100内径50高度20拉伸方向为Z正方向。 第二步在圆柱顶面创建6个通孔直径10分布在直径80的螺栓圆上第一个孔位于X正方向角度按逆时针均匀分布。 第三步对所有锐边添加1mm倒角排除螺栓孔内边。关键点有三个明确单位、明确基准哪个平面、哪个方向、明确特征的定位基准螺栓圆直径和起始角度。这跟给新来的设计助理交代任务是同一个逻辑你说得越具体他画出来就越接近你要的东西。3.3 结果生成与验证不能只看渲染图跑脚本生成STEP文件后我把它导入FreeCAD做了三件事验证。用测量工具核对最大外径精确到小数点后三位确认不是视觉上的差不多检查特征树确保每个孔都是独立特征而不是一个合并的网格做了一次截面检查确认通孔从顶面贯穿到底面没有内部残留这步看起来基础但特别容易被跳过。不少text-to-cad工具自带浏览器预览那个预览用的WebGL渲染器对几何做了简化有的甚至直接显示网格你看着没问题细看全是坑。所以我的习惯是无论什么工具生成的模型进入正式流程前必须经过原生CAD内核验证一遍。这个习惯在后续项目里帮我避开过不少返工。4. 实操两周后我总结的五个高频坑4.1 单位混乱是最大的暗雷大语言模型在单位上的表现非常不稳定。有时你说厚度20它当成英寸结果生成一个508毫米的巨型法兰有时它用公制输入但内部计算用英寸输出就完全错乱。解决的办法是在提示词里刻意强调并且把关键尺寸写全不要用大约左右这类词。我还试过在脚本开头强制加一句UNITS mm的注释并在每个尺寸参数后标注# mm这样大幅降低了模型单位脑补的概率。如果你要跟客户对接模型交付前一定要在CAD软件里用分析工具检查物理属性尤其是体积、表面积和质心如果这些数量级不对十有八九是单位出问题了。4.2 倒角和圆角的位置与顺序倒角看起来是小事但对加工影响很大。AI生成的倒角常常出现在它觉得好看的地方而不是你需要的功能位置。比如法兰的密封面需要保留直角结果AI给整个外轮廓倒了一圈圆角导致密封面失效。我的建议是把倒角、圆角指令和主体特征分开放到提示词最后并且明确排除哪些面。如果你用CadQuery还可以在脚本里选定面集合用faces筛选器精确控制。不要图省事让AI自己判断倒角范围它判断不了你的装配工况。4.3 草图平面和拉伸方向AI对上下左右没有直觉让大模型生成一个L型支架它可能把第一段草图放在XY平面拉伸方向沿Z轴正方向但第二段本应在XY平面内弯折的草图它可能也沿Z轴拉伸了结果根本不是L型而是一个阶梯柱。空间关系是自然语言里最难表达的维度。应对套路有两个第一种是在提示词里用草图在XY平面拉伸方向为Z正半轴这种几何语言精确描述第二种是接受首版结果的歪然后用脚本修反正参数化脚本改起来快。我反复修改了几次后干脆总结了一句话别让AI猜空间方位你直接把方位喂给它。4.4 标准件和特征数据库的缺失工业设计里很多结构不是凭空画的而是调用标准件库比如GB/T螺栓、密封圈、轴用卡簧槽。text-to-cad模型没有这些标准库的概念它理解卡簧槽就是一个凹槽但具体槽宽、槽深、倒角半径这些国标参数它并不会帮你自动套用。我在测试时让它生成一个带O型圈槽的轴端它给出的槽宽是5mm实际根据GB/T 3452.1内径80的轴用O型圈槽宽应该是3.55mm左右。这类问题的根源是训练数据里缺少标准手册的字段语义模型只是学到了凹槽圆环的形状关联学不到精确的规格表。所以text-to-cad适合做结构草图但涉及标准件和装配公差时最后仍需要工程师查表修正。这不是AI不够聪明而是工程标准本身就游离在自然语言文本之外。4.5 参数化失效生成的模型改不了尺寸这是最坑的一个。很多宣称text-to-cad的在线工具生成的就是一个三角网格看起来能下载STEP实际只是网格包裹。你拿回CAD想改个直径会发现没有特征树没有任何可编辑参数只能退化成哑巴实体。甚至有些更狠直接给你一个STLCAD软件打开后连实体都不是。我的预期管理是能输出STEP且能被识别为实体模型才算可用的CAD模型。如果你拿到的STL那它就是设计参考不是工程交付物。判断方法很简单用FreeCAD或者任何专业CAD打开点一下模型看能不能选中一个面并测量面积如果能至少还是实体如果只能选到网格面那就不能用在装配和CAM里。5. 如何把text-to-cad塞进真实工作流而不是供起来5.1 它最适合的环节概念设计、方案比选和快速验证把text-to-cad当正式建模工具用现阶段必然要骂娘。但把它当概念设计加速器体验完全不一样。比如接非标自动化设备的单子客户需求经常是我们需要一个带观察窗的防护罩尺寸大概600x400x300窗口200x150材质亚克力。传统做法是建一个公模草模再拆分成钣金件。用text-to-cad我让AI直接生成一个初步的六面体防护罩带窗口切除和底座折弯然后导进SolidWorks里细化钣金参数整个过程压缩了大概四十分钟。做方案比选尤其占便宜你先让AI生成三个不同形态的底座方案A型、B型、C型渲染图一摆客户选哪个你再在选中的那个基础上精细建模。这不叫抢设计师饭碗这叫把前期试错的成本砸下来。5.2 从生成模型到生成制造方案还有几道坎text-to-cad即使生成完美几何体离制造仍然有距离。一是公差标注CAD模型里的公差信息是语义级的不是几何级的AI生成STP时根本不会附带GDT符号。二是表面粗糙度模型里没有这个属性需要工艺人员在图纸上补。三是工艺可行性AI不知道你厂里的机床有多大行程不知道你用的棒料直径是哪种规格它生成的壁厚可能在强度上没问题但加工出来会震刀。所以我现在的工作流是把text-to-cad的输出定位为带着设计意图的半成品。几何结构有了材料、公差、表面处理和工艺方案这些必须由工程师补全。与其抱怨AI不生成这些不如把它当两个月薪八千的新人画图员画完草图你总得自己拿主意的。这样心态就平衡了而且出活速度快很多。5.3 人机分工的边界哪些环节必须人来管根据我这两个月的实测有几件事建议永远不要交给AI至少现阶段不要。涉及安全法规和强制标准的零件结构压力容器、承重连接件不要直接使用生成结果必须有持证工程师复核与装配体强相关的配合尺寸不要用AI初值必须基于配合件实际公差计算需要仿真的模型不要从网格生成必须重建为实体后再做有限元或CFD反过来适合AI做的是快速生成包容空间、特征布局草图、通用钣金外壳、曲面造型的概念稿、以及标准化文档转参数化模板。这个分工我用了两周最大的感受是不用再为了一个初步方案去死磕草图的完全定义了。把那些重复的、低认知的操作交给脚本和语言模型把真正需要工程判断的部分留在自己手里这比争论AI能不能替代工程师有意义得多。最后再分享一个我实际用出来的小技巧如果你经常用text-to-cad建立一个属于你自己的提示词-脚本对库。每次生成出满意的脚本就把提示词连脚本一起存成模板下次遇到类似零件直接改参数而不是重新让AI从头生成。我现在这个库里已经有法兰、支架、齿轮箱壳体、钣金折弯件、管接头等十几种常用模板。用一次提取一次时间越久你的text-to-cad就越来越像你的私人参数化零件库而不是一个每次都要重新调教的陌生模型。这可能是目前这个阶段把text-to-cad落地到工程实践里最实在的经验了。