
最近机械设计圈子里流传一个新说法不开CAD软件直接把一句话扔给程序就能拿回一个能编辑的零件模型。我第一次听到这个“text-to-cad”方向时第一反应是这不就是文生图换了个壳吗等真正上手试过几轮发现事情没这么简单。它能做、不能做的事边界比看上去要清晰得多坑也比想象中深。这篇把我在实际测试、集成、调错过程中积累的东西整理出来给想入坑的机械工程师和开发者一个相对完整的参考。1. text-to-cad到底在解决什么问题1.1 它与普通的“文本生成3D模型”有什么不同市面上已经有不少输入文字就能出三维模型的工具但绝大多数生成的是Mesh网格模型也就是由成千上万个三角面片拼接出的“外形”。这种模型用于游戏、影视、商品展示绰绰有余但放到CAD环境里就露馅了它没有特征树没有草图约束没有参数驱动你没法把那个孔径从6毫米改成6.5毫米也没法在工程图上标注公差更不能直接丢给CAM去编加工刀路。text-to-cad跑的是另一条赛道。它的目标不是产出外形而是产出真正的CAD数据参数化特征序列、边界表示B-rep、约束关系、孔位阵列、拉伸旋转之类可编辑的建模历史。简单说它想把你脑子里的设计意图直接翻译成一套建模操作命令。我用一个例子说明区别让文生图工具生成“一个带圆孔的金属方块”它给你的是一个看起来像方块、带一个疑似圆孔洞的网格模型换个角度光照甚至能看出破面。而text-to-cad给你的是一条建模历史里面记录着“拉伸一个10×10×10的方块在顶面中心打一个直径6的通孔完全贯穿”。哪种能进生产流程一目了然。1.2 CAD模型为什么难生成CAD模型难生成核心难在三点。第一它必须满足精确的数学描述。CAD里没有“差不多圆”的曲线样条曲线和曲面背后都有完整数学表达。生成器一旦给出数值上轻微的偏差实体检查就报错破面、烂边、拓扑错乱全来了。第二它有严格的拓扑约束。CAD实体要求面与面、边与边、点与点之间有严格连接关系每条边必须恰好被两个面共享除非是边界边顶点要落在边的端点。普通mesh网格可以容忍破损残缺B-rep容不下一丝歧义。第三特征之间有依赖关系。真实建模过程中后一个特征往往依赖前一个特征的几何参照打孔依托于某个面、倒角依托于某些边、阵列依托于某个轴。text-to-cad如果生成的是孤立特征而不是一棵完整的特征树下游就没法修改和维护。所以最理想的输入输出格式不是网格而是类似“边界表示特征树”的数据结构。这类数据有个标准化交换格式叫STEP懂行的人拿到STEP文件在主流CAD软件里重新识别一下就能重建出基础特征。很多text-to-cad工具也直接用这类数据作为训练标签和输出格式这比生成一堆点云靠谱得多。2. 当前主流实现路线与选型思路2.1 路线一以语言模型为基础生成CAD特征序列这是我实际体验后认为最“懂CAD”的一条路线。思路很直观把建模操作序列做成一种“建模语言”每步都是类似“添加草图平面、画矩线、拉伸15毫米、在F面添加直径10的通孔”的指令串然后训一个大规模语言模型去生成这种序列。实现时一般要用到结构化序列表示。常见做法是把CAD模型编码成一系列建模原语的文本描述比如用坐标和轴向定义草绘平面用参数定义截面的几何轮廓用操作类型定义拉伸、旋转、打孔、倒圆角用参照关系连接前后特征。这种方案的优点非常突出生成结果可解释、可编辑、可回退。工程师拿到文件后能直接点开历史特征做修改这正好命中CAD工作流的命门——谁也不想拿到一个打死也改不了参数的实体。缺点也明显。序列生成是逐token进行的一个稍微复杂的模型可能包含成百上千个特征操作序列一长误差就会累积。前一个步骤产生0.1毫米偏差后续所有依赖它的特征全部跟着偏。早期测试中序列长度超过关键阈值之后模型生成的实体常常出现特征缺失或顺序错乱比如先倒角后拉伸导致布尔运算失败这类错误后来靠“约束建模语言”和强化学习中的保真奖励才压下去一些。2.2 路线二扩散模型先生成隐式场再拟合B-rep第二条路线更接近图形学传统用扩散模型在三维空间生成体素或隐式符号距离场SDF表达出一个实体的几何然后用算法从场里提取B-rep边界。这类方案在“外形还原度”上往往表现得更好。它擅长捕捉某种零件家族的整体形态不用像语言模型那样从一长串操作里推导几何生成出来的形状更连贯。骰子、法兰盘、简单外壳这类特征明显的零件它能还原得相当惊艳。但问题埋在“可编辑性”里。扩散模型产出的是几何外壳不是建模历史也没有约束关系。从隐式场里重构出的哪条面是“原设计意图的顶面”都没法保证。就算提取网格后再拟合曲面得到的也只是一堆“长得像”的B-rep面片没有特征依赖、没有尺寸参数、没有设计意图。对设计人员来说这和“拿到一块用陶土捏出来的精确模型”没差别——好看但改不动。2.3 路线三检索匹配与模块化拼接第三条路线思路很务实不做完全生成先检索。模型维护一个零件库输入需求后先从库里找出相似零件再根据文本描述对相似零件做参数化变形改尺寸、增删孔位、加倒角或者把几个标准特征模块按规则组合起来。这条路在工业标准化件上表现奇好。法兰、轴套、简单的支架、标准机箱底座本身就高度参数化规则也明确了当检索调整绰绰有余。它的稳定性和尺寸精确度是三套方案里最高的几乎不会出无厘头的拓扑错误。弱点在于创造力和覆盖度。库里面没有的异形件、创新结构它就麻爪了。它更像一个“智能标准件库”而不是真正的设计助手。但只要你的场景局限在常用机械零件这套方案的工业落地价值反而最大。2.4 三条路线怎么选对比维度序列生成LLM扩散模型拟合检索参数拼接几何还原度中高依赖特征完整性高外形还原最自然高仅在库覆盖范围内可编辑性强输出完整特征树弱基本不可参数化编辑强天然参数化推理速度中长序列生成慢慢采样Fitting都要时间快以查库为主工程可用性中需大量后处理低多用于可视化参考高适合标准化场景实际项目里最常见的是混合方案先用检索找到最接近的匹配项再用序列生成模型对它的局部特征做修改最后用B-rep后处理脚本校验几何合法性。工程上的稳妥解法很少押注单一路线哪个环节成熟就用哪个。3. 实操从一句话到可用的CAD文件3.1 实操前准备本地部署还是调用现有服务动手前先要确定运行方式本地部署一套开源权重模型还是直接调用现有的商业API或在线平台。本地部署的诱惑是私有数据不出门可定制性强、不用按次付费但对硬件有门槛。以我自己的测试环境为例一个7B规模的模型量化后大约需要16GB左右显存做推理生成一个中等复杂度零件耗时从十几秒到几分钟不等;如果要微调那训练的显存需求就得翻着跟头涨。显卡不够的情况下的替代方案是只跑CPU推理但速度慢到让你怀疑人生一个简单的支架都可能要等十分钟。调用现成API则要轻松得多。目前国外有几个在线试玩平台界面友好不传STEP格式的模型直接用但往往有每日生成次数限制国内也有试水的产品接入了大模型能力。对大多数工程师来说先用在线服务快速验证工作流、确认有价值之后再决定要不要私有化部署是比较理性的路径。注意使用任何在线平台前先确认数据协议里的隐私条款设计图纸和产品规格通常属于公司核心资产别为了省事顺手把涉密模型给传上去。这比“生成质量不稳定”问题重要得多。3.2 写提示词把需求“翻译”成建模语言text-to-cad对提示词的敏感度比通用大模型高得多。它本质是“把自然语言翻译成建模指令”的模型你说得越接近建模语言它生成得越准确。你不必写完整的散文但要像给工艺员开任务单一样把关键信息交代清楚。我实测有效的一段提示词是生成一个安装支架底板长100mm宽60mm厚8mm 四角各有一个直径6.5mm的沉头孔沉头直径11mm沉头深4mm通孔贯穿 底板中心向上立一块筋板筋板厚5mm高40mm与底板一体 筋板顶部有一个水平安装面宽40mm深20mm带两个直径5mm的螺纹孔M5孔心距30mm 所有边倒圆角R2。这串描述看起来啰嗦实际上每个信息点都对应一个可执行的建模原语外形、尺寸、特征类型、空间位置、阵列方式、边处理。如果换成“帮我做一个支架结实点的底下开孔装螺丝”输出结果可能会让你找不到北——不是模型笨是信息不够建模。另外我踩过一个典型误区“描述越详细越好”并不总是成立。你把“第二项、第三项要求”都塞进一句话模型可能在长上下文里丢失对早期信息的注意力反而漏了特征。建议的做法是把内容自然分段先整体再局部最后统一收尾声明倒角和圆角。3.3 拿到结果后的CAD侧修复流程目前没有一个模型能保证生成结果直接进车间后处理是必然环节。我自己的标准流程分四步第一步导入检查。拿到STEP或原生格式后先跑一次实体验证。主流CAD软件都有“检查几何体”“完整性检查”一类的命令用来查看有没有坏面、碎边、缝隙。这个步骤只需要一分钟但能帮你筛掉很大一批“硬件废件”。第二步单位校对。很多模型训练数据混用了毫米和英寸。导入后先量一下关键尺寸如果发现一个号称100mm的底板量出来是3.937英寸那就是单位标识错乱重新设置导入单位就行。第三步重建关键约束。生成模型产出的特征树里约束往往“够用但不好用”。例如孔位是靠绝对坐标定位的而不是依靠边线居中等分。处理方式是把关键孔位改成与边线的对齐约束和对称约束并把关键尺寸转成设计参数表里的变量方便后续调整。第四步清理多余几何和冗余特征。序列生成通常不会产生破面但偶尔会留下面内有微小缝隙的实体。需要做的是合并共面、移除未使用的草图、删除重复的圆角定义。这一步做完才算拿到一个能进PDM系统的合格模型。我用一张对照表总结修复重点问题类型典型表现常用处理方式单位错误尺寸差约25.4倍导入时强制指定单位约束缺失孔位靠坐标定义无法随长度变化手动补对称/对齐约束多余特征隐藏的重复草图、独立曲面特征树里清理删除倒角不均圆角半径未按描述统一重建边倒角并统一参数标准件缺失螺纹孔只给了光孔没有螺纹定义换成标准孔定义装饰螺纹4. 高频问题与排查思路实录4.1 几何输出错误破面、自相交、实体验证失败这类问题占我遇到问题的一半左右。典型场景是模型自动生成的孔和筋板太过靠近导致两个特征在几何上发生干涉实体验证直接报错。排查思路是逐步缩小范围。先把整个模型“解剖”成单个特征逐个勾选隐藏其他特征找到报错时具体涉及哪些特征然后检查这两个特征的相对位置尺寸看是不是特征依赖的参考面选错。我发现自相交往往出自“筋板顶面与安装面厚度重合”这类情况解决办法是把筋板高度多给一点让它完全包进后续特征里或者用布尔合并而不是简单的拉伸叠加。4.2 语义理解错误:提示词被“读歪”比较可恶的是模型看起来听懂了、实际理解偏差。比如我要求“四角沉头孔”它给出的却是四个普通通孔我要求“通孔贯穿3mm底板”它只在底板上打了一个1.5mm深的盲孔。这类问题的特征是结果“看着正常”但功能意义上错了。排查时先回到提示词看特征描述是否存在歧义。比如“贯穿”“打通”“到底”这些词模型理解不一定一致更稳的写法是“完全贯穿该特征的所有厚度”。其次要在提示词里写清楚特征类型名沉头孔、埋头孔、螺纹孔是三类完全不同的东西不要用“开孔”一笔带过。经验之谈text-to-cad生成的是结果模型它不理解你嘴里的“预留安装余量”“受力合理”这类工程师的隐含语境。所有功能性要求必须落到几何语言上尺寸、深度、角度、特征名少一个它就可能帮你“自由发挥”。4.3 复现性、隐私与许可证问题超参数和采样随机性带来一个很闹心的问题同一段提示词两次生成结果可能不一样。第一次出的模型可用第二次出的尺寸偏了0.3mm。想在生产里复现结果时这个问题很容易成为拦路虎。想缓解这个问题的常规手段是固定随机种子——在线平台的API或本地推理接口一般都支持设置seed不过这也不保证完全一致因为模型权重更新后行为就会变。更稳妥的做法是把生成成功的案例归档连同它的源提示词、模型版本、seed和完工后的STEP文件一起存进PDM。这本质上是在做“生成过程版本管理”而不是指望模型永远给出确定答案。另外要额外关注开源许可。不同开源项目的模型权重许可范围差异很大有的只允许研究用途不能商用有的则开放商用但要求保留版权声明。上线前把这个确认清楚可以避免后面很被动。4.4 快速排查速查表症状可能原因优先排查顺序实体验证失败特征干涉或拓扑错乱逐个隐藏特征定位 → 检查相对尺寸尺寸成倍错误单位错乱直接量关键尺寸 → 修正导入单位孔位明显偏置约束缺失查看特征树坐标 → 改为边对齐约束特征完全缺失提示词模型能力边界检查提示词是否包含特征名 → 分拆短句两次结果不一致采样随机性固定seed → 归档成功案例生成速度过慢序列过长/显存不足简化提示词 → 量化模型或升级硬件5. 落地场景与当前边界5.1 现在就能用的场景我从实际使用经验来看下面几类场景已经具备落地条件。一是机械标准件快速概念建模。需要法兰、支架、底座、齿轮毛坯的初版外形直接给一句描述一分钟内拿到占位模型用来做总装干涉检查和空间布局非常高效。比从标准件库里一个个调参数要快得多。二是设计评审的前期方案对比。结构评审时经常要在三个方向上各出一个方案。有了text-to-cad上午说需求、中午出方案、下午开会讨论这个节奏变得异常舒服。方案阶段对尺寸精度容忍度高模型的“八九不离十”完全够用。三是教学和培训。用来演示“一个拉伸特征怎么建”“孔特征有哪些类型”远比对着软件菜单一个个点来得直观学生理解建模逻辑时上手更快。四是逆向工程的前置建模。手头有扫描点云但不知道怎么重建CAD时可以用点云转换出的文字描述喂给模型先出一版草模再做正向拟合这在某些工装设计里能节省不少时间。5.2 还不太行的场景说完了能用的再明确一下现阶段别指望的。复杂曲面类零件比如叶轮、进气歧管、自由曲面外壳目前所有方案都表现挣扎。序列生成模型的建模原语以拉伸、旋转、阵列、倒角为主对放样、扫掠等高级曲面操作的支持还在持续完善扩散模型拟合出的曲面又不可编辑形似而神不似。大型装配体更不是它的主场。一张装配图包含几百上千个零件模型既记不住这么多特征依赖输出了也会在拓扑校验阶段挂掉。现阶段老老实实做零件级生成就好。此外尺寸公差高、工序敏感的设计场景比如批量加工件的关键尺寸控制目前不建议依赖生成结果。模型生成的尺寸靠的是概率不是工程计算不会自动考虑材料收缩、加工余量、工艺基准。你把它当“几毫米级”的草稿还好当最终生产模型用就危险了。5.3 下一步与多模态输入的融合我最看好的方向不是纯文本而是“草图文字”“点云文字”的混合输入。真实设计流程里几乎没有“凭空口述一个零件”的需求更多是“我有一张手绘图你帮我把它转成CAD”或者“我有一堆扫描点云你帮我重建成参数化实体”。一旦text-to-cad能接入视觉输入甚至手绘草图它的设计价值会从“玩具”跃升为“生产力工具”。在更前瞻的方向上掺入设计约束DFM规则、成本限制、材料属性和强化学习策略来保证最终生成结果通过可制造性检查也是值得关注的演进路径。生成模型不再是拿概率赌一个“像”而是真的把制造规则内置为核心约束。最后分享我自己的一点体会把text-to-cad当“一个理解能力正常但工艺经验为零的新人”来协作你会顺畅很多。它能把你的话转成建模指令但不会替你做工程判断必须要你把它当成一个极其较真的执行者所有涉及尺寸、特征、约束的事情都写在提示词里它才能不跑偏。我在测试中最惨的失败教训就是默认它“懂行”结果它把一个本该沉进端面的埋头孔做成了通孔还配了一个没有螺纹定义的装饰螺纹线。打那之后我的提示词模板就固定下来开头先写模型类型中间列特征清单最后统一补一句全局性的圆角和单位声明基本没再犯过低级错误。模板放这里你拿着用生成一个[零件大类] [整体外形尺寸]材料默认[金属/塑料] 全局单位为mm所有孔默认通孔 特征列表 1. [主要特征类型尺寸位置] 2. [辅助特征类型尺寸阵列方式] 3. 所有锐边倒角R[数值]如有明确要求。这套流程能保证你从text-to-cad拿到的第一版模型就有七成可用剩下的三成就在CAD里修修补补吧。