ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

text-to-CAD实战:从自然语言到可制造三维模型的完整指南

text-to-CAD实战:从自然语言到可制造三维模型的完整指南 在CAD这个圈子里我见过太多人把“用自然语言直接生成三维模型”这件事想得太轻松。两年前我刚开始尝试text-to-CAD工作流的时候第一印象其实是失望输入“给我一个M8六角螺母”输出的却是一堆表面坑坑洼洼的网格碎片没有螺纹参数也没有尺寸约束放进切片软件里连支撑布局都很难规划。后来我才慢慢意识到这份失望的根源是我把CAD当成了“三维版图片生成”。而CAD的核心从来不是“长得像”而是“可制造、可修改、可复用”。这篇文章我想从自己的实测经验出发把text-to-CAD背后的原理、当前真实能做到的边界以及提示词怎么写才更稳的经验完整梳理一遍给正在观望的你一份不带滤镜的参考。这个方向确实还没到“一句话自动出图”的理想状态但只要工作流选对了它完全能成为设计前期的强力助手。1. 先对齐认知CAD难就难在“看起来像”远远不够1.1 图像生成是填像素CAD是搭工程关系为什么通用大模型在写文章、画插画上表现惊艳一到CAD这里就频频翻车一个很重要的原因是自然语言生成图像本质上是在二维画布上填充像素像素之间没有严格的空间约束哪怕某个区域拟合得不够干净人眼也未必能察觉。而CAD模型面对的是制造和装配场景孔轴配合间隙、壁厚、拔模角、干涉检查每一项都可能直接决定这个模型能不能被加工出来。打个比方图像生成像是让AI画一幅风景画画歪一栋楼观感上顶多觉得“这个风格很抽象”。CAD生成则像让AI帮你搭一个书架如果两块层板的尺寸差了两毫米你放书的体验就是完全不同的。CAD文件背后是一整套参数关系和工程语义比如“这个孔必须和对面那个孔同轴”“这个圆角的半径必须小于止口宽度”而这些关系在自然语言里往往只是几个词模型很难只凭几个关键词把它们完整复用出来。1.2 我用实测验证过AI做出来的东西“看起来对”不等于“能用”早先我用一个开源脚本建模工具做过一次实验提示词是“设计一个带四个安装孔和中心轴的电机支架”。大模型很快生成了一段结构完整的脚本工具运行后也确实出现了一个支架造型四个孔在视觉上基本对称。但当我把它导出的实体放到测量环境里检查时问题全部暴露中心轴的名义直径是8毫米实际曲面却分布在8.02到8.06毫米之间既不是严格的圆柱也没有任何公差标注四个安装孔的位置虽然对称但中心距和实际要安装的电机端盖完全对不上。这次经历给我最大的启发不是“AI不行”而是我一开始的预期错了。text-to-CAD当前阶段的定位应该是“概念雏形生成器”而不是“最终图纸输出器”。它的价值在于几秒钟内给出一个符合大致外形和结构逻辑的起点最终的尺寸链闭合、公差校核、装配验证仍然需要工程师用自己的专业判断去收尾。把预期放在正确的位置上之后选工具、写提示词、检查结果才会顺手很多。2. 三条技术路线拆解脚本、网格、参数化特征各管一段text-to-CAD这个词其实覆盖了三种完全不同的技术路线而每条路线的能力、局限和适用场景都不一样。很多人在网上看到的“AI建模神器翻车合集”往往就是拿网格生成流程去干参数化建模的活结果当然不理想。所以先花点时间把三条路线理清楚比盲目追新工具重要得多。2.1 路线一通用大模型直接写建模脚本这条路最直观也最容易被DIY玩家上手。做法是让通用大模型充当程序员根据你的自然语言描述生成一段能够创建三维几何的脚本比如OpenSCAD的CSG脚本或者FreeCAD的Python宏。你把这代脚本粘贴进对应工具里运行就能得到模型。这条路的优势是零额外依赖、结果可编程、可反复修改。缺点则是模型对CAD API的理解深度参差不齐生成的脚本经常出现参数错误、引用不存在的特征需要多次迭代调试。不过因为脚本本身是文本修改成本相对低多试几次通常能稳定产出简单零件。我看见很多第一次接触的人在第一次报错之后就放弃了其实只要把报错信息原样丢回给模型通常一两轮就能修好。2.2 路线二用扩散模型直接生成三维网格如果你听说过“文本生成3D模型”大概率体验过这条路。它通常使用多视图扩散或点云扩散从文本直接输出一个网格化的三维对象再经过重建算法变成可导入的模型格式。这种方式的视觉表现力很强特别适合生成有机形态、艺术造型比如概念车外观、雕塑、游戏道具。但它最大的问题在于生成结果是“一张数位捏合的皮”没有参数化历史也没有可编辑的特征树想修改某个尺寸几乎等于重新建模。叠加网格转CAD时非流形几何、噪声曲面也经常让后续加工工具抓狂。所以这条路更适合看效果、做展示离“可直接制造”还有明显距离。如果你只是想做一张产品概念图它完全够用但别指望它能进入工程BOM。2.3 路线三LLM当指挥官参数化建模引擎当执行者这是目前工业界视角下最接近“真CAD”的方向。系统里内置一套构造实体几何或特征建模引擎LLM负责把用户意图解析成一系列建模指令比如“新建一个矩形拉伸”“在顶端加一个圆角”“在左下角挖一个贯通孔”然后由引擎按指令执行最终生成带完整特征历史的B-rep实体模型。因为输出保留了特征树和参数用户可以像对待正常CAD文件一样继续编辑、加约束、做装配。这已经是目前最接近“用自然语言驱动CAD”的形态代价是实现难度高工具数量少提示词的微小偏差也可能导致一连串特征顺序错误非常考验模型的指令解析能力。目前这个方向主要还是停留在科研原型和少数垂直工具里但我觉得它的进化速度会比前两条路线快得多。2.4 三条路线怎么选我用下面这个表把我实测后的判断列出来方便你对号入座对比维度脚本生成路线网格生成路线参数化特征路线输出结果是否可编辑是改脚本否重新生成是特征树齐全制造友好程度中高取决于API低高适合造型风格规则机械件自由曲面、有机形态规则机械件、产品结构件上手门槛中偏低最低目前最高典型坑点API理解偏差、脚本报错非流形网格、无尺寸控制工具少提示词要求高你选哪条路线不取决于谁听起来更先进而取决于交付物最终要拿去干什么。做展示选第二条做快速验证选第一条做可迭代的工程模型再麻烦也得合计第三条的门路。3. 我实测过的三种工作流以及它们各自的脾气理论讲完上实操。下面三种工作流是我在过去一段时间里反复跑的我把详细步骤、观察到的现象和容易踩的坑都记录下来方便你直接复用。3.1 用OpenSCAD脚本生成小型零件最快上手OpenSCAD是一个以脚本为核心的开源建模工具天然适合和对话式大模型配合。我的基本流程是先把需求描述给模型要求它输出CSG脚本并明确指定单位、尺寸变量和渲染模块。接着把脚本粘贴进OpenSCAD预览出问题再让模型根据报错修改。实测发现针对“带若干孔的回转体”“角码类钣金件”这类规则特征模型基本一次就能生成可用外形。但你最好在提示词里明确变量名比如“全程使用变量base_w和base_h不允许修改为其他名字”这样后续调整尺寸只需要改变量不需要重写特征。另外一定要求脚本加注释模型在生成代码时保留注释的习惯直接影响你排查几何逻辑的效率。有一个坑需要重点提醒OpenSCAD的CSG运算在布尔交叠操作上特别考验精度如果孔位刚好卡在两个特征的边界上很容易出现非流形结果。我的处理办法是让孔稍微穿过整个实体厚度比如在描述里写明“贯通”而不是用“沉到表面”这样能避免悬空裁剪导致报错。3.2 用FreeCAD的Python宏做参数化修改兼顾修改性如果你的目标不只是快速看造型而是希望后续能调整尺寸、复用特征FreeCAD的Python API是一条更合适的路。我通常让模型生成一个完整的宏脚本里面封装好一个建模型的函数参数以函数入参的形式暴露出来这样后续修改参数不需要动几十行的几何代码。实测中遇到频率最高的问题有两个。一个是API版本差异造成的属性名报错比如不同版本里某个对象的访问接口名称不一样解决方式是让模型参考当前版本的官方文档描述而不是凭记忆硬写。另一个是坐标变换容易出错尤其是涉及旋转零件、基于平面创建草图这类操作模型经常把坐标轴方向理解反。我的习惯是在描述里明确“坐标系原点在零件左下角、Y轴沿高度方向”并让模型在脚本开头打印出关键点的坐标方便人工核对。3.3 用网格生成流程做概念验证速度优先但别下生产线第三种我实际跑得不多因为它的定位比较特殊。通常用于客户沟通、方案比选阶段比如快速生成几种不同外形风格的机箱外观给客户选方向。这个流程的核心是“用秒级生成换认知成本”让非技术背景的人能在方案初期直接看到3D效果而不是等半天建模。但必须强调这类流程产出的模型一旦进入制造环节往往需要专业的逆向重建或参数化重绘换算下来总成本未必低。如果你最终要的是可交付的加工图纸起点就选择带参数化历史的路线不要在网格模型上浪费太多修复时间。我曾经为了网格模型修了半天破面最后发现还不如重新用脚本建一次来得快。3.4 我给三条工作流的最终定位综合来看我目前倾向这样分配快速验证概念用OpenSCAD脚本因为它轻、快、能迭代需要持续修改和维护模型用FreeCAD宏因为参数暴露得清晰需要表现力强的效果图则临时动用网格生成但只把它当作视觉参考不当作工程交付。记住一个原则工具链的选择不是看谁生成的模型更好看而是看你最终要拿着模型去做什么。先把使用场景想清楚再决定选哪套流程顺序不能反。4. 提示词才是被你忽略的工程图纸从翻车到可用的进化记录同一个text-to-CAD工具有人输入一句“做个齿轮”得到废模有人输入一段详细描述得到能直接打样的小零件差别全在提示词。在文本生成图像的时代提示词是艺术到了CAD领域提示词必须回归工程它要写清楚的不只是“长什么样”还有“怎么造、能用在哪、和谁配合”。4.1 一个提示词从翻车到可用需要补上什么我们拿“做一个齿轮”来演示进化过程。第一版提示词“做一个标准直齿轮。”输出模型理解成“一个圆盘带一些齿”齿数、模数、压力角完全没有依据看起来像动画道具。这个结果本质上是模型在“猜”齿轮而不是在设计齿轮因为你根本没有给出任何约束。于是我改成“生成一个模数为2、齿数为24的标准直齿圆柱齿轮齿形按渐开线近似绘制顶圆直径52毫米齿根圆直径43毫米中心孔直径10毫米并在中心孔内加一个宽度5毫米的键槽。”输出齿形特征立刻对了测量顶圆和齿根圆几乎命中中心孔和键槽的布尔运算也成功。第二个版本为什么成功因为它把制约几何的关键尺寸全部锁死。模数和齿数决定了齿轮的核心比例顶圆、齿根圆直接给了加工基准中心孔与键槽定义了装配关系。这串看似枯燥的数字才是CAD建模真正需要的信息。4.2 写提示词前逐项自查的六个要素我总结了一个自查清单每次写提示词之前按顺序过一遍能规避绝大部分低级问题制造方式明确“这是要3D打印、CNC铣削还是注塑件”。制造方式决定拔模角、圆角、壁厚等工艺参数模型不会自动猜。单位体系写明“全部使用毫米、角度使用度”防止模型在公制和英制之间来回横跳。关键尺寸链把相互制约的尺寸一次性给出不要让模型推断。比如“轴承孔径25毫米轴肩直径30毫米轴肩长度12毫米”模型就能画出合理级联关系。约束关系用文字明说“这个孔与那个孔同心”“这些凸台高度必须相等”。仅仅靠位置坐标描述模型很容易丢失关系语义。工艺要素倒角半径、圆角大小、螺纹规格能给的都当面给不要让模型自由发挥。输出格式指定要CSG脚本、Python宏还是STEP文件。模型只有在明确交付物时才能组织合理的结构。4.3 不要迷信“模型会主动追着你问”很多工具的演示片会渲染AI主动询问用户“需要什么材质”的场面但现实中的text-to-CAD工作流里模型很少主动追问缺失信息更常见的是它默认一个“典型值”然后继续生成。你要是没写螺纹规格它给你一个直径对的孔但完全没有螺纹特征最后你自己还得补加工标记。所以把“信息完整性”当成自己的责任而不是模型的义务。一步步往提示词里补参数、补关系的过程本质上就是在把自己脑海里的设计约束显性化。这个过程本身也有助于你发现自己对零件需求的理解是否足够清晰。5. 落到实际项目值得用的场景与别抱期望的场景道理说了一堆最后还是要回到项目现场。我结合自己的使用经验把text-to-CAD当前阶段适合与不适合的场景各列三类供你对照自己的项目判断。5.1 目前最适合的四类场景第一概念验证与方案比选。项目前期需要快速验证几种结构外形用text-to-CAD花十分钟生成三套不同形态的雏形比从零建模效率高得多。我习惯同时生成三到五个方案导成图片贴在沟通文档里比画草图直观也比上手精模快。第二标准件与参数化族库生成。像法兰盘、轴承座、遮光罩、支架这类特征高度规律化的零件最能把text-to-CAD的优势放大一次生成后还能通过改参数复制出全系列。你只要把族库参数表整理好后面的重复劳动几乎为零。第三教学演示。让学生看到“一句描述如何映射为三维特征”对理解建模逻辑、培养参数化思维都有帮助。前提是模型输出一定要保留特征历史而不是纯网格。没有特征树的演示学生学到的只是依赖感不是方法论。第四导入旧数据前的结构预判。做逆向工程的初筛阶段可以用它估算目标模型的总体尺寸和特征分布缩短点云分类的时间。这项我最近用得多配合传统逆向工具工作效率提升非常明显。5.2 暂时别抱期望的三类场景第一精密配合的装配体。轴孔配合公差要求微米级text-to-CAD当前的输出很难稳定控制配合类型装配体更是常常丢失零件间的约束关系。强行使用的结果就是你把时间从建模省下来又原封不动花在了装配检查和返工上。第二A级曲面和复杂自由形态。汽车外观、消费类电子外壳那种对曲面连续性极敏感的设计网格生成路线的质量远远不达标。你让模型做一个连续曲面它给你的往往是拼接痕迹明显的多面体后续光顺工作量极大。第三仿真驱动设计。涉及有限元分析、拓扑优化结果的模型重建其几何往往高度不规则而且对网格质量有严格指标靠自然语言描述根本无法覆盖。这类工作必须跑专业求解器和逆向重建流程。我这么说不是在泼冷水而是希望大家把工具放在它擅长的地方。一名设计师真正的竞争力不在于能不能用AI生成模型而在于他知道什么时候该用AI、什么时候该绕开AI。5.3 我对人机分工的实操原则我现在的工作习惯是AI负责“铺路”我负责“修路”。也就是让模型先把基础轮廓、重复特征、系列化零件搭出来然后我来做尺寸链复核、装配关系整理和工艺性调整。模型输出后至少要经过三项人工检查几何尺寸与原始需求逐项比对、布尔运算后的实体质量检查、文档标注完整性检查。这三项做完模型结果才敢进入下一步。这套流程帮我节省了大约三到四成的重复建模时间同时把风险控制在可控范围。如果你一上来就让AI全自动交付图纸大概率会踩到我前面说的各种坑但如果你全程手工作业又等于放弃了这个工具的价值。分寸感是在试错中试出来的。6. 几个落地细节是教程里通常不提的实战经验技术路线和工作流都聊完了最后补几个在实战中容易被忽略的细节。这些细节没有写在任何官方文档里但直接影响你能不能把text-to-CAD稳定用起来。第一一定要给生成过程留“版本意识”。脚本生成路线里模型每一次交互都可能改掉你之前锁定的尺寸变量所以在对话里明确“不要修改已定义变量只新增特征”能避免很多来回返工。FreeCAD宏这种形式尤其适合配一个版本管理仓库每次调整都留一次提交记录出了异常能快速回滚到可用状态。第二验证模型时别只看屏幕上的三维渲染。我习惯把生成的模型直接切一层剖面检查内部空腔、加强筋和孔道的连接是否合理。三维显示里看着顺眼的造型剖面里经常藏着隐形缺陷反之剖面一打开很多问题一眼就能看出来。手建模型时可以偷懒不做剖面检查但面对AI生成的结果这步几乎应该成为默认动作。第三关于我自己的节奏我最看好的不是模型直接画出大而全的产品而是“一句话生成特征链、专业软件再做精细加工”这种有分工的流水线。前端的语言模型越来越会解析意图后端的参数化引擎越来越标准两者之间的接口层才是接下来真正的机会点。哪怕是做工程设计的普通工程师如果能提前把提示词写作、脚本调试、特征历史检查这几项基本功练好在工具进化到你完全不用管细节的那一天之前你都已经在用它在节约时间了。我自己的体会是text-to-CAD最迷人的地方不是它马上能替代任何人而是它第一次让“想法”到“几何”之间的反馈回路变得如此短。你描述得越具体它给你的越接近可用的东西而你描述的能力恰恰又是一个工程师核心功底的另一种体现。这个方向值得持续盯但更值得现在就动手试几下。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进