
有一次我急着给一个电机支架画三维模型——底板尺寸、四个安装孔、中心凸台带螺纹孔这些在脑子里清清楚楚可我实在不想打开CAD软件从第一个草图开始一锤子一锤子敲。同事瞥了一眼轻飘飘地说了句“你直接让AI生成啊。”我当时心里是不服的。Text-to-CAD这东西看论文、看演示视频的时候确实惊艳可真拿来做正经零件我总感觉它顶多能出个方块。结果那天下午的实验让我对它的看法改变了不少。这篇文章就围绕我实际折腾Text-to-CAD的经历来写。我会尽量把底层原理、工具选型、实测结果和提示词技巧都拆开讲清楚适合刚接触这个方向的产品设计师、机械工程师、创客也包括那些想用文本生成替代重复建模的人。如果你也好奇“一句话到底能不能变成能编辑的CAD模型”这篇文章应该能给你一个相对务实的答案。1. 从“这玩意能出个方盒子”到“能进工作流”我对Text-to-CAD的认知变化1.1 最初我拿它当玩具我第一次接触Text-to-CAD是从一篇讲“用自然语言直接生成CAD命令序列”的论文开始的。演示里输入一句“创建一个带四个孔的底板”模型哗啦哗啦生成了一段命令流最后渲染出来的零件像模像样。当时我的第一反应是这生成的零件真的能改吗能在Fusion或者SolidWorks里编辑特征树吗大概率不能。所以我一直把它归类为“学术演示品”和那种“输入一句话生成一张图”的玩法差不多图个乐子。直到我需要快速出一版电机支架的初始模型。我不是专业结构工程师画一个能看的零件图不难但要把每个孔的定位、凸台的高度、加强筋的位置都精确落到尺寸上还得留出后续改参数的空间在传统CAD里其实是一套固定的熟练功。那个下午我忽然意识到Text-to-CAD真正吸引人的地方不是它“凭空造东西”的能力而是它能把“描述一个零件”的成本压得非常低。1.2 为什么说这个痛点真实存在CAD建模的门槛绝大多数时候不在软件操作而在“把脑子里的空间关系转换成一步一步的操作”。你脑子里知道“底板四角有孔中心有个凸台”但落到软件里要先建草图、标约束、选拉伸面、做布尔运算一步错后面全乱。Text-to-CAD想解决的就是这部分。它把“空间描述”这一人类天然擅长的能力保留下来把“命令序列生成”这种机器擅长的事交给模型。对新手来说这意味着不用先背几十个命令对熟手来说这意味着快速出初始模型、快速试错。我当时做完第一次实验后的体会是它确实不能直接交付生产图纸但作为“从零到第一版”的加速器已经比我想象中成熟太多了。1.3 适合谁、不适合谁先说适合谁。第一类是创客和DIY玩家零件精度要求不高但求快速看到实物效果Text-to-CAD可以大幅缩短从想法到手办/样件的时间。第二类是非机械背景的产品经理或设计师需要给结构工程师提需求与其画一堆不标准的草图不如直接用文字把需求描述清楚再让Text-to-CAD出个示意模型。第三类是资深CAD用户他们完全可以把生成结果当作“可编辑的起点”进去改特征树效率和直接开草图差不多。不适合谁也很明确。如果你做的是精密装配件公差要求在小数点后三位或者你的模型要直接进五轴加工CAM那目前任何Text-to-CAD方案都不能当最终交付至少我实测过的都不行。它更适合“设计前期”和“概念验证”这个边界必须先划清楚。2. 三条技术路线并存的底层差异文本生成CAD不是只有一种做法2.1 路线一端到端命令序列生成第一条路线也是学术界最热衷的方向叫端到端命令序列生成。大致思路是收集大量CAD模型和它们对应的建模历史把每个模型拆解成“草绘命令、拉伸命令、打孔命令”这样的序列再配上文本描述组成训练数据。模型要学会的是给定一句自然语言直接输出一段能还原出该模型的操作序列。这条路线的优点是很“本质”——它直接模拟了人类设计师的建模过程如果理想化地实现生成的模型天然带特征树后期可编辑性最好。缺点也很明显训练数据太难搞。真实生产环境里的CAD历史树往往包含大量无效操作、草绘约束不完整、特征命名混乱清洗成本极高用合成数据生成器倒是快但合成数据的“说话方式”和真实设计习惯差得很远。我实测过几个基于这条路线的研究原型对简单回转体零件效果尚可一碰到带复杂分型面、倒角序列的零件生成结果就很容易崩。2.2 路线二程序化建模代码生成第二条路线是我个人认为目前最实用的方向——程序化建模代码生成。它不直接生成CAD模型而是让大语言模型生成一段建模脚本比如CadQuery、OpenSCAD、FreeCAD的Python宏然后由本地CAD内核去执行这段脚本最终得到实体模型。这条路线之所以实用是因为大语言模型在“自然语言转结构化代码”这件事上表现已经非常强。自然语言描述“在底板上画四个孔”对LLM来说更像是“写一段画四个圆的代码”这恰好是当前大模型最擅长的映射方式。而且输出是代码意味着模型天然是参数化的改一个尺寸变量就能更新整个模型。更妙的是代码本身可读、可审计、可回滚这对工程场景非常重要。我在后文会给出一个完整的CadQuery生成案例大家可以直观感受一下这条路线的成熟度。2.3 路线三多模态转译与重建第三条路线是绕过CAD内核的多模态路线。流程一般是先用文生图模型根据描述生成一个轴测视图或三视图再用图像转3D模型工具重建成网格最后想办法把网格转成可编辑的实体模型。听起来最“科幻”但我用下来的感受是目前这条路线最不适合精密设计。文生图模型生成的图像很有说服力但重建回来的网格尺寸精度无法保证特征边缘会糊掉转成STEP实体模型之后经常出现破面、非流形几何。它真正的用武之地在概念设计你想快速看一下“这个东西大概长什么样”可以用它出个视觉效果极佳的概念模型但别指望它的孔位是准的。如果需求只是PPT汇报、方案比对这条路线反而是最快的。2.4 三条路线的对比与取舍我自己看这三条路线有一个很直白的类比。端到端命令序列生成相当于请了一位按你口述来操作CAD的实习生理论上能画出和设计师一样的历史树但这位实习生目前听不太懂人话。程序化建模代码生成相当于请了一位会写脚本的程序员他不直接碰CAD但写出来的脚本能自动建模输出稳定、可复现是目前最靠谱的。多模态转译重建相当于请了一位概念画师出图极快极好看但你要的是工程图不是艺术图交付物本质不一样。技术路线输出形式尺寸精度可编辑性上手门槛当前成熟度端到端命令序列B-rep实体特征命令中等较高低实验阶段程序化代码生成CAD脚本/宏高高中可用阶段多模态转译重建网格/低精度实体低低低概念展示用所以在实际项目里我不会一开始就问“哪个工具最好”而是先问“我要交付什么”。要可编辑、要改尺寸走程序化代码生成要快速看造型走多模态要看论文里的未来趋势才关心端到端路线。3. 实测四类方案同一个需求四份“答卷”谁更接近可用的模型3.1 测试需求一个有真实约束的零件为了量化对比我设计了一个非常具体的测试需求让所有方案生成同一个零件“一个方形的电机安装座。底板长150毫米、宽80毫米、厚6毫米。底板四角各有一个6毫米的通孔孔心距离底板边缘10毫米。底板中心上方有一个直径50毫米、高20毫米的圆柱形凸台凸台顶面有四个均匀分布的M5螺纹孔螺纹孔所在分度圆直径30毫米。底板短边方向的两侧各有两个加强筋加强筋厚度4毫米连接底板和凸台侧面。”这个零件不复杂但包含了板类特征、阵列孔、圆形凸台、螺纹孔、加强筋基本覆盖了日常设计的常见需求。我用同一个描述跑了四条路线记录耗时、输出形式和修改体验。3.2 方案ACadQuery代码生成路线CadQuery是一个基于Python和OpenCASCADE的脚本建模库我一直觉得它是当前和LLM配合得最好的建模接口。原因很简单它的语法是“从某个面开始向左画一个圆拉伸到某个高度”这种操作流式描述对LLM来说几乎零翻译成本。我用的提示词是“请用CadQuery生成下面这个零件的模型所有单位毫米使用workplane和运算逻辑。”模型返回的代码核心部分长这样import cadquery as cq # 底板 base cq.Workplane(XY).box(150, 80, 6, centered(True, True, False)) # 四角通孔 base base.faces(Z).workplane() \ .pushPoints([(55, 30), (-55, 30), (55, -30), (-55, -30)]) \ .hole(6) # 中心凸台 base base.faces(Z).workplane() \ .circle(25).extrude(20) # 凸台顶面螺纹孔 base base.faces(Z).workplane() \ .pushPoints([(0, 15), (15, 0), (0, -15), (-15, 0)]) \ .circle(2.5).cutBlind(-6, taper0) # 加强筋单侧示意 base base.faces(Y).workplane() \ .moveTo(0, 3) \ .lineTo(25, 20).lineTo(0, 20).close() \ .extrude(4)执行之后得到的模型尺寸完全符合要求特征树也清晰。最让我满意的是它的可修改性我想把底板改成180毫米长只需要改box函数里的第一个参数想让螺纹孔变成四个均匀分布直接改pushPoints的坐标即可。这就是代码生成路线的核心竞争力——它不是“生成了一张静态的图”而是“生成了一份活的设计”。3.3 方案BOpenSCAD直接文本生成OpenSCAD是另一类工具它的建模思路是CSG构造实体几何用球、立方体、圆柱做并集、差集、交集。这种完全靠代码拼装的建模方式对LLM来说同样友好因为本质上就是写一段带布尔运算的数学表达式。我让同一个模型走OpenSCAD路线生成的代码长这样module motor_mount() { difference() { union() { // 底板 cube([150, 80, 6], centertrue); // 凸台 translate([0, 0, 3]) cylinder(h20, d50); // 加强筋简化 translate([0, -12, 3]) cube([4, 24, 20]); } // 四角通孔 for (x [-55, 55], y [-30, 30]) { translate([x, y, 0]) cylinder(h10, d6, centertrue); } // 螺纹孔示意 for (angle [0:90:270]) { rotate([0, 0, angle]) translate([15, 0, 3]) cylinder(h10, d5, centertrue); } } } motor_mount();这段代码生成的模型更“雕塑化”适合那些以布尔运算为主的零件。它的优点是代码量很短逻辑一眼能看懂缺点是建模思路和现代CAD特征树不太兼容后期如果要在SolidWorks里继续编辑基本等于重画。我在实测里更愿意把它当作“快速验证造型”的工具而不是“可交付建模”的工具。3.4 方案C在线AI建模工具我又试了一类在线AI建模工具这类工具的交互通常是输入文字描述平台在云端生成模型然后在网页端展示可编辑的特征列表。实话实说这类工具的完成度比我想象中高。同一个电机安装座需求它给出的特征树包括“拉伸-底板”“打孔-四角”“拉伸-凸台”“阵列-螺纹孔”层级关系和命名都挺规范。但问题出在两处一是对尺寸约束的响应不够稳定我曾尝试把凸台高度从20毫米改成30毫米结果生成的底板尺寸也跟着变了说明模型在某些情况下会自己“脑补”关联二是可导出性导出的STEP文件能打开但特征树已经拍平进去之后无法再按原生特征编辑。如果你手头没有本地建模环境又想在最短时间内看到文字描述对应的三维效果这类工具是很好的起点。但只要有后续修改需求我建议还是把导出的模型当作参考而不是基座。3.5 方案D文生图-图生模型兜底最后我试了多模态兜底路线先用文生图工具生成一张轴测图再用重构建模工具转成网格。这个流程跑下来倒是很快但结果最有“观赏性”也最不“严肃”。生成的模型从视觉上看几乎没有破绽凸台、孔、加强筋的位置关系都对但一旦我拖拽缩放发现孔的边缘在网格上是波浪形的凸台的圆也不是真圆。我尝试把网格转成STEP实体结果软件报了一堆非流形几何错误修补花了半个多小时最终得到的模型仍然没法直接开模或者标记尺寸。我的结论是这条路线目前的价值在于“把文字变成视觉概念”适合放在设计决策的最前端比如给客户看多个方案的长相。一旦进入工程阶段它就得让位给代码生成路线。3.6 实测结果汇总方案耗时尺寸准确度特征可编辑性单位处理最终可用度CadQuery代码约50秒含调试高强参数化明确高OpenSCAD代码约40秒中高中可改参数需手动确认中高在线AI建模约1分钟中弱特征平铺偶有偏差中文生图-图生模型约2分钟低极弱网格转实体困难基本无序低这个表格基本就是我那天下午实验的结论。如果有耐心四条路线我都建议自己跑一遍。感受一下“哪个环节卡住、哪个环节顺畅”比看任何评测都更能帮你判断该把Text-to-CAD放在工作流的哪个位置。4. 提示词就是设计输入怎么写一段合格的Text-to-CAD描述4.1 失败案例一句完整句子不等于有效描述很多人试用Text-to-CAD输入的是这样一句话“帮我做一个电机安装座要结实一点底部有孔可以固定上面要能放电机。”这句话在人类设计师听来完全没问题但模型拿到的信息量其实非常稀薄没有尺寸、没有位置约束、没有具体特征类型。“结实一点”这种主观描述更让模型无从下手。实测中这种描述的生成结果往往是一块形状奇怪的实体孔位、壁厚全靠模型“猜”。这不是模型笨而是你把设计表达权完全交给了它。4.2 有效描述的五要素经过多次调试我把有效的Text-to-CAD描述拆成五个要素几何主体、关键尺寸、位置约束、特征类型、单位与输出格式。几何主体回答“这个零件主要由哪些体块构成”比如“一块底板加一个圆柱凸台”。关键尺寸要落到位底板长宽高、凸台直径高度不能只写“大”和“小”。位置约束描述特征之间的关系比如“孔心距边缘10毫米”“凸台在底板中心”。特征类型要给出明确建模语义比如“通孔”“沉头孔”“螺纹孔”“加强筋”而不是笼统的“孔”和“筋”。最后单位与输出格式必须写明“毫米”“STEP”“参数化代码”避免模型自行猜测。4.3 一个可以直接套用的提示词模板我在实测中发现下面这个模板的命中率非常高覆盖了上述五个要素而且结构稳定请用[CadQuery/OpenSCAD/其他]生成一个[零件名称]模型。 整体结构[几何主体概括]。 底板[长×宽×厚]材料面朝上中心位于原点。 关键特征 - [特征1][位置描述]尺寸[具体数值][类型通孔/螺纹孔/沉头孔] - [特征2][位置描述]尺寸[具体数值][类型] - [特征3]从[基准面]拉伸[高度]与[其他特征]保持[距离/对称关系] 单位毫米。 输出要求[可执行代码/STEP文件/参数化脚本]所有尺寸使用变量定义。把电机安装座套进这个模板效果立竿见影。模型不再需要猜测“结实一点”是什么意思它拿到的是一份完整但简洁的设计规格书。写提示词的关键不是堆形容词而是把设计意图翻译成“模型能够执行的约束”。4.4 单位、公差和制造方式要不要写进去我的建议是单位必须写公差和制造方式要分场景写。模型默认单位不统一的问题在实测里非常突出——同一个模型有的工具默认毫米有的默认英寸不写清楚生成的底板尺寸直接差25.4倍这是一个足以让整个零件报废的坑。公差和制造方式铸造、机加工、3D打印建议在概念验证阶段先不写因为当前大多数Text-to-CAD方案对GDT符号的理解还很有限写多了反而可能把特征搞乱。但如果你准备用生成的代码做参数化模板制造方式可以作为注释写进代码里方便后续维护的人理解设计意图。这里分享一个我的习惯所有描述里凡是涉及直径、厚度、孔距的数值我都会用一个统一的变量表列在最前面后面的提示词全部引用变量。这样不仅生成代码时更清晰后续我手动改参数也只需要改一处。5. 别让AI替你画图让它替你起步Text-to-CAD在工作流里的正确位置5.1 明确边界哪些活适合它干我踩过最大的坑是试图让Text-to-CAD一次性完成所有设计。事实是它目前最擅长的是“从零到一”不是“从一到十”。所谓从零到一就是快速获得一个带主要特征的初始模型作为设计讨论的载体。而复杂装配关系、运动仿真、有限元分析这些都需要在传统CAD环境里完成。具体来说适合Text-to-CAD干的活包括概念模型快速表达、多方案造型对比、零件外形可视化、给下游工程师提供“带尺寸的草稿”。不适合的包括严格按ASME Y14.5标注公差的零件、需要复杂曲面造型的工业设计件、涉及大量标准件装配关系的总成。把这些边界划清楚你才不会对它产生不切实际的期待。5.2 生成之后的重建与检查流程即使生成效果很好我也不会直接把结果投入下一步流程。我的做法是先做一个“视觉检查”旋转模型、剖切看内部结构确认所有特征都在该在的位置然后做“尺寸抽查”至少测量底板边界、孔心距、凸台高度这三类关键尺寸确认单位一致最后做“特征树审查”把生成代码里的特征逐一和需求文本对照发现多余或缺失的特征及时调整。这套流程听起来繁琐但一次完整的检查通常不超过十分钟。比起拿到一个有隐患的模型直接往下走省下来的返工时间是不可估量的。我自己就因为在第一步偷懒漏掉过一个加强筋的厚度错误导致后续仿真计算全废从头跑了一遍。5.3 踩坑记录单位、倒角、特征识别单位问题前面已经说过这里再补充一个细节当模型输出是STEP时单位出错的后果非常隐蔽。你在查看器里看不出任何异常但一切入到CAM软件刀具路径会全部错乱。我现在的习惯是生成结果先看文件头信息里的单位声明而不是直接信任界面上显示的数字。第二个高频坑是倒角。Text-to-CAD特别喜欢在边界上“自由发挥”倒角我甚至遇到过模型在非必要边上了R1倒角结果干涉了装配的案例。如果你对倒角有明确要求一定要在提示词里写明“除指定特征外禁止添加任何倒角或圆角”如果没有要求生成后也要专门检查一遍所有边界。第三个坑是特征识别偏差。比如“螺纹孔”有的方案生成的只是一个圆柱孔没有螺纹线有的还会自动加上螺旋扫掠导致计算量爆炸。文本里明确写“M5螺纹孔”和“直径5mm的通孔”是两种诉求不要混用。5.4 组合技Text-to-CAD 参数化重绘最后分享一个我目前最常用的组合技让Text-to-CAD生成初始模型然后把它当作“设计参考”在主流CAD里用参数化方式重新绘制一遍。听起来好像绕路但实际效率非常高。因为Text-to-CAD生成的代码尤其是CadQuery这类已经帮我确定了特征顺序底板拉伸、打孔、凸台、加强筋。我拿着这个顺序去CAD里重绘几乎不用思考建模步骤直接照抄。相比从零开始想“先做什么后做什么”这种模式像是一边看着答案一边做题速度飞快。而且这种组合技还有一个额外好处重绘过程中我会自然地对每个特征做一次“为什么存在”的审视。有些生成结果里冗余的特征重绘时就直接删掉了有些尺寸关系在文本里没写清楚重绘时也能趁机补全。最终的参数化模型质量和完全手工建模几乎无差别但省掉的时间可能有30%到40%。写在最后我的实际体会折腾了这一圈我最想说的其实是Text-to-CAD真正厉害的不是让你少画图而是让你少做“无效思考”。传统建模中大量精力花在“怎么把一个想法转化成软件操作”上Text-to-CAD把这一层抹掉了让你可以专注于“这个零件该有什么特征、特征之间什么关系”这些更本质的问题。它也远远没到可以替代工程师的程度生成结果里的错误、脑补、单位混乱都需要一个有经验的人去把关。如果你刚开始接触这个方向我建议直接走程序化代码生成路线选CadQuery或者OpenSCAD都行先用我上面的提示词模板跑通一个简单零件再逐渐增加特征。你会发现当你把提示词写得越来越像“设计规格书”时模型的输出质量会有非常明显的提升。这个过程中踩过的坑、摸索出来的模板本身就是你自己最有价值的建模资产。