
周五下午原本安排的是给一批样品做支撑座这东西说白了就是一个底座板加两个立筋外加四个螺纹孔。放到往常我至少要在软件里折腾一下午——先拉几个草图、加约束、拉伸切除、再打孔阵列。但这次我试着用自然语言直接生成一句话描述完零件的样子模型初步轮廓不到半分钟就出来了虽然不能直接拿去加工但用来做方案评审和结构预演效率完全是另一个量级。这就是 text-to-cad 的典型使用方式不是替代软件而是替代软件里那些繁琐的前期操作。我把它理解成“从需求描述到基础几何体”的转化器目前主流的做法是在语言模型后面挂一个程序化建模的后端——语言负责理解你的意图程序负责把意图变成可编辑、可修改、带特征树的实体模型。这篇文章不打算堆概念而是从我的实际使用体验出发聊聊这个方向到底解决了什么问题、核心原理拆开看是什么样、能用的边界在哪里以及真正落地时你会撞上哪些坑。适合读这篇文章的人大概就是三类一类是做机械结构和产品设计的朋友想知道这玩意儿能不能帮自己省时间一类是做三维可视化或 3D 打印的玩家想找个渠道快速把脑子里的东西变成可以输出的模型还有一类是搞 AI 应用开发的想搞清楚这类工具背后的技术栈到底是什么自己能不能在项目里复现一条类似的链路。1. 从一句“我要一个支架”到一颗真实螺栓这条链路是怎么走通的最开始接触 text-to-cad 这个概念时我脑子里是打问号的——自然语言这么模糊的东西怎么可能生成出精确到毫米的机械零件试过几个方案之后我才意识到它走的路和我想象的不太一样。它不是在做一个无所不能的“全能生成器”而是在做一个“意图翻译器”把你说的话拆解成参数化建模引擎能执行的指令序列。先看一个最简单的例子。我输入“生成一个 L 形支架长 80宽 60高 40厚度 5底部开两个直径 8 的安装孔孔距 50。”这套流程落地时大致会经过四个步骤。第一步是意图解析模型把“L 形”“厚度”“安装孔”“孔距”这些关键词抽出来对应到建模语义里的草图形状、拉伸高度、打孔位置和约束关系。第二步是参数化组装生成一个带拓扑信息的中间表征比如一张“约束图”节点是面、边、孔边是尺寸约束和几何关系。第三步是建模内核执行约束图被翻译成真实的建模指令像“在底面上新建草图”“画两个圆”“添加距离约束”“拉伸切除”。最后一步是结果输出导出成 STEP 或原生格式文件。这个过程中最微妙的地方在于端到端生成和程序化生成的差异。纯粹端到端的扩散模型好比一个画画的人你让他画一个杯子他能画出像素级的杯子图片但这个杯子没有厚度、没有容积、不能倒水。而 text-to-cad 要在后端挂一个真正的建模内核相当于你让一个师傅去车一个杯子他必须严格按照直径、深度和壁厚来操作容不得半点含糊。所以目前业界的主流方案几乎都把自然语言理解放在前面、程序化几何内核放在后面用语言模型去驱动内核而不是让语言模型直接“变”出几何。这就有了一个关键结论text-to-cad 能做到“精确”是因为它把模糊性过滤在了几何内核之外。自然语言负责不确定性参数化内核负责确定性两者中间做了一层“翻译约束求解”。我跑同一个需求跑了十几次每次生成的模型细节可能有差异但关键尺寸不会漂移。比如上面这个 L 形支架每次导出的孔距都会严格保持在 50这就是后端参数化逻辑的功劳。当然这里也有个使用上的前提你的描述里得给够关键尺寸和相对关系。如果你只说“一个支架”它也能生成但生成出来的基本上是它从训练数据里学到的“平均支架”大概率满足不了你的装配需求。这一点特别像早年用渲染软件的预设材质——你拖一个“金属”材质上去看起来像金属但永远不是你要的那块金属。2. 自然语言到约束几何核心模型架构与三维表达方式大多数人对 text-to-cad 的认知停留在“这是 GPT 的一个应用”层面实际上它的技术栈比这深得多核心集中在两个问题上语言模型怎样理解三维空间的描述以及生成的三维信息用什么形式表达才能既保留语义又方便后端处理第一个问题绕不开空间关系推理。普通语言模型训练时看到的文本是扁平的但 CAD 描述是强空间性的“孔的圆心在底面的中心”“筋板垂直于顶面且与侧边对齐”这类描述需要模型内部有一个“空间常识”的隐式表征。业界目前的解决办法之一是在微调阶段使用带标注的合成数据把自然语言描述和对应的程序化建模脚本配对让模型在大量样例里学会从文本反推几何逻辑。我在本地跑过一个开源的小模型它的训练集里包含了数万对“描述-脚本”效果比通用大模型直接零样本推理明显稳定尤其在孔位、阵列这类规则特征的表达上错误率低很多。第二个问题更有意思——生成的三维信息到底用什么表达市面上大概有四种路线文本到代码直接生成 OpenSCAD 脚本或 CadQuery 脚本。优点是可编辑性强、逻辑透明缺点是脚本不一定能被所有 CAD 平台直接识别。文本到体素/点云适合可视化场景但离工程模型差距大没有拓扑和特征树信息基本不可编辑。文本到网格能出渲染模型导出 STL 3D 打印可以但进不了参数化设计流程。文本到约束图结构化的带有工程语义能直接导入到建模内核做布尔运算和参数调整是目前工程化走得最远的路线。从我个人的实践看如果只是做 3D 打印的原型件网格和脚本路线都够用。但如果要做能和现有零件装配、能进加工流程的东西约束图路线几乎是唯一靠谱的选择。因为装配要的是面和面的贴合关系CNC 要的是特征树和尺寸链这些信息只有在参数化表征里才存在。这也解释了为什么目前大部分工程向的 text-to-cad 工具输出的不是模型文件而是“带参数历史记录的模型文件”。跑到这一步还有一个不可回避的技术细节——约束求解的鲁棒性。建模内核在执行约束图时其实是在求解一组非线性方程组平行、垂直、重合、相切、同心等等。约束冲突是家常便饭比如你既要求孔位在中心又要求孔位距离边缘 5 毫米但板的宽度恰好是 10 毫米结果可能就无解了。处理这种问题有的系统靠“约束优先级”有的靠“自动松弛”有的干脆报错让你改参数。实际操作里我的经验是在描述里主动留出余量别把尺寸卡死在边界上不然生成链路经常会在最后一步翻车。3. 生成结果离能用的模型还有多少距离边界与绕不过去的代差我见过不少人对这类工具抱有不切实际的期待觉得它应该像一个会说人话的建模插件——你说“给我一个减速器箱体”它咔咔就把带轴承孔和密封槽的箱体端出来。现实比这骨感得多。text-to-cad 目前最擅长的领域是那些可以用少量特征描述清楚的机械零件比如支架、底座、法兰、钣金件、带孔板、简单壳体但一旦涉及复杂的曲面造型、多实体联动、拓扑变化的造型过程它就会明显吃力。我梳理了一个“能力分层”的表方便你对照自己手头的需求属于哪一层层次典型任务当前可靠度我的评价第一层拉伸体孔特征阵列较高可以直接用于方案阶段偶尔能用于简单加工件第二层钣金折弯筋板圆角过渡中等轮廓能出来但折弯系数、圆角次序经常要手工修第三层扫掠、放样、曲面混合偏低生成的“形”接近但面质量很难直接用于加工第四层装配体级生成多零件配合关系极低目前基本不考虑各零件生成后还是要手工装配这个表不是我拍脑袋写的是从我跑过的几十个真实需求里总结的。第一层里的“拉伸体孔特征”之所以可靠是因为这类需求词汇量少、语义明确、拓扑简单模型的训练数据里到处都是第四层不可靠是因为“配合”本身是一个超越单个模型的全局优化问题需要同时保证多个零件之间的尺寸协调这对当前这种“逐件生成”的工具形态来说还太难。另一个绕不开的问题是“设计意图”的丢失。用传统方法建一个带孔的法兰孔的位置可能来自强度计算可能来自配合标准这些“为什么”会沉淀在建模历史和草图约束里。text-to-cad 生成的模型只有结果没有背后的推导。它知道法兰上要开四个孔但不知道这四个孔是为了和对面法兰对齐还是为了减重还是为了穿过螺栓。这意味着拿到生成结果后你还是得手动把缺失的设计约束补回去——对于一些标准化程度高的零件这个工作量和从零建模差不多。所以在我的流程里这类工具的角色非常明确它是“草图阶段的加速器”和“方案探索的脚手架”不是“设计终端的替代品”。我会用它对一个需求快速生成 5 到 10 个变体方案各角度的结构形态一目了然选定方向后再基于生成的初始模型亲自完善约束、补全工艺特征、加入材料属性和制造信息。这个用法避免了“它生成什么我就要什么”的被动感反而是我主导它它帮我探路。4. 从生成模型到可打印实体导出、修模与制造环节的实战如果你以为模型生成出来就算完那就太早了。我在实际项目里碰到的麻烦超过一半集中在“生成模型怎么变成实物”这一步。不是说文本生成环节做得不好而是生成的结果天然带有“建模理想态”的倾向一来不管公差二来不照顾制造工艺直接拿去生成刀路或切片大概率要出问题。先说 3D 打印这条线。用 text-to-cad 生成一个带有薄壁特征的零件壁厚 1.2 毫米打印参数里层高 0.2 毫米这意味着壁厚只有 6 层强度勉勉强强。但有些生成结果会在薄壁区域莫名其妙多出一圈倒角或者把孔做成锥度——这些在屏幕上看是“更圆润了”切片软件里就是灾难轻则出现悬垂塌陷重则内部产生无法排出的空腔。我的对策是生成模型后第一时间检查特征树里的圆角操作把非关键的圆角一律干掉再把所有的孔位直径加 0.2 毫米的补偿量然后导出 STL。这一步用脚本可以自动化不值得手工逐项做。再说 CNC 加工线。有一次我生成一个带腰型槽的安装板文本描述里我特意写了“腰型槽两端半圆弧”生成结果里也确实有半圆弧但问题在于它的实现方式是扫描体而不是真正的槽特征。这导致加工仿真阶段一切正常到后处理生成刀路时系统识别不出这个槽的加工策略只能按型腔硬铣浪费时间还容易震刀。后来我总结出一个经验拿到生成结果后先看特征树的结构如果发现只有“拉伸”“扫码”这类基础特征、缺失“槽”“孔”等加工语义就得手工重建关键特征哪怕几何一模一样也要重建。加工编程认的是特征语义不是纯几何外观。这里值得多提一句工具链的问题。如今不少 text-to-cad 工具支持直接导出 STEP 格式这是好事因为 STEP 是中性格式绝大多数 CAD 平台都能识别。但要注意导出 STEP 时有很大概率把参数化信息丢掉变成“死”实体——形状能动但历史树全没了。我的习惯是优先导出原生格式如果工具只支持 STEP那就在导入后用“特征识别”功能把关键特征恢复出来。这个过程不完美但至少能把生成结果重新变成可以参数化调节的活模型。最后是公差与配合的实际调整。生成模型是所有尺寸都在名义值上的“完美模型”。但真实制造里直径 10 的孔配合直径 10 的轴不是能装进去的关系得有一个间隙。所以每次生成完我都会用检查清单过一遍哪里是要有配合关系的哪里是需要留余量的哪里是螺纹孔需要底孔直径而非公称直径的。这个检查清单是我被坑了几次之后才总结出来的现在已经成为固定动作每次生成模型后先跑一遍再往下走。5. 一次完整的实操复盘从中文需求描述到可装配的底座模型光讲方法论不够过瘾我完整跑一个真实需求给你看你就知道整套链路是怎么回事了。需求描述一个带法兰的电机安装底座底座主体是长方体长度 120宽度 80高度 15。主体底面四角各有一个直径 9 的安装孔孔距长度方向 100宽度方向 60安装孔要沉孔沉孔直径 16、深度 3。主体顶面中心有一个边长为 60 的正方形凸台高度 10凸台四角有四个直径 6、深度 12 的螺纹底孔。这个描述信息量相当完整我把尺寸都给死了意图也明确。用 text-to-cad 工具生成的实际过程里第一步是它对整段描述做了语义拆分自动识别出“长方体主体”“阵列安装孔”“沉孔”“凸台”“螺纹底孔”这些特征类型。第二步是构建约束图底面的安装孔之间建立了“等距”约束顶面凸台和主体之间建立了“同心”约束。我观察到的输出记录显示它把“四个螺纹底孔”理解成了“直径 6、深度 12 的孔”加“M6 螺纹标注”几何执行是正确的。整个生成耗时不到一分钟。但拿到模型后我做了三个调整沉孔的深度语义上有点模糊我预期是沉孔本身深度 3它做成了总深 3 含通孔所以我手动改了沉孔定义。语义词歧导致的常见问题四角的安装孔之间没有建立对称约束虽然位置尺寸精确但我往里加了对称约束防止后续调宽度时孔位不对称。约束完备性的手工补充底孔在凸台上生成的位置是正确的但缺乏与凸台边界的相对定位约束添加了两条位置约束保证凸台尺寸变化时孔位跟着变。参数关联修正调整完成后我给这个模型加了材料属性铝合金 6061导出了 STEP 和中间格式放进装配体和原有的电机模型做了干涉检查。配合关系里凸台的四个孔正好对上电机的安装孔公差间隙按 H7/g6 处理把孔直径改成 6.3。整个过程里真正手工花时间的不是建模而是“语义校正”和“约束补全”加起来半小时左右。对比以前从零画这个底座至少省了三分之二的时间。但这里我也必须说一句公道话省时间的很大一部分原因是这个零件足够规矩特征类型全是 text-to-cad 最擅长的“打孔、拉伸、阵列”。如果你换成一个不规则的曲面壳体或者一个薄壁异形件生成环节可能就要反复改描述、反复调省下来的时间会全部赔回去。所以这个工具适合什么需求、不适合什么需求用几次之后心里就清楚了。6. 把它放进真实工作流和现有建模习惯的配合方式工具用多了你会发现一个规律决定 text-to-cad 价值的往往不是它本身的生成质量而是你把它放在流程的哪个位置。放错了它是个玩具放对了它是效率杠杆。目前最主流的工作方式我给它取名“生成-评估-重构”三步法。第一步用自然语言快速生成一个或几个初始方案这个阶段不追求完美只求“像”。第二步从生成的模型中提取关键尺寸和质量信息对照需求做评估哪些部分是对的哪些部分理解偏了。第三步把评估结果反馈回描述语言或者直接在建模环境里手工重构核心特征。有些工具支持把修正后的模型作为“参考样例”喂回去形成自我迭代但多数情况下你还是要在 CAD 环境里亲手改。这个三步法的核心是把生成结果当成“高密度草稿”而不是“半成品”。无论是哪种工具形态最后输出的都应该是一个“可参数化”的模型而不是一堆网格。检验方法很简单打开特征树看能不能改一个尺寸让整个模型更新如果能说明你在一个正确的技术路线上如果不能基本可以判断模型是一座没法改的雕塑。这个标准可以帮你过滤掉市面上大量只做“文本到网格”的伪 text-to-cad。关于具体的选型我自己的经验是按需求场景来选而不是按名气来选场景推荐路线原因快速出概念模型做方案沟通文本到脚本方案脚本即历史改参数方便可视化也快3D 打印原型件不考虑后期装配文本到网格方案导出 STL 直接切片的链路最短机械零件设计需要进装配体和加工文本到约束图方案保留特征语义配合导入导出和加工编程批量化参数化零件族文本到脚本模板化改造组件化的脚本利于后续批量替换尺寸延迟等待这件事也值得一说。生成一个简单零件多数工具能在几秒到 30 秒内完成生成复杂零件可能需要数分钟而且生成过程中会消耗大量计算资源。如果你的工作流里需要频繁迭代建议把描述拆成“固定框架变量槽位”的结构比如“框架是底座凸台安装孔变量是长度、宽度、高度、孔距”。这样同一框架只需要做一次生成后续只改变量效率曲线平滑很多。还有一些看似琐碎但很影响体验的环节坐标系朝向、单位制、默认材料、图层颜色。生成结果里这些信息经常是“默认值”导入大装配体时可能会出现单位不一致导致的十的六次方级尺寸偏差。我的习惯是拿到生成结果的第一时间就检查单位、坐标系和材料属性再存盘。这些细节不值一提但忘了设置的话后面所有环节都会加倍返还给你。我在这个方向上也踩过不少坑回头想想最值得分享的一条经验是永远不要让生成模型“直接流”到下游。中间哪怕只是做一次人工检查也会替你挡掉大量返工。使用 text-to-cad 的姿势越“重”收益反而越大——这听起来反直觉但确实是我用下来的真实体会。现在的我已经习惯了拿到生成结果后先花几分钟看特征树、补约束、修正语义再把它变成真正属于我的设计资产。这条流程走顺了之后text-to-cad 就从“偶尔玩玩的新鲜工具”变成了“设计系统里稳定输出的一块拼图”。