1. 从一句话到三维模型text-to-cad 到底在解决什么问题第一次听到 “text-to-cad” 这个说法我脑子里蹦出来的画面是对着电脑敲一句“给我画一个 80×60×10 的法兰盘中心开 30 的通孔四角打 M6 沉头孔”然后 CAD 里就自动长出了这个零件。这个画面放在五年前还属于科幻但放到今天它已经是一条能跑通的技术链路了。所谓 text-to-cad本质上是把自然语言描述转换成结构化几何数据再输出成 CAD 能识别的格式比如 STEP、STL、GLB 这些。它解决的核心痛点很直接大量非专业建模的人产品经理、结构工程师的上下游、做 3D 打印的创客、做电商展示的运营脑子里有形状但手上不会用 SolidWorks、Fusion 360、中望 CAD 这些工具从“想法”到“模型”之间隔着一整套建模技能。我身边就有很典型的例子。一个做机械配件外贸的朋友客户发来一段英文描述加一张手绘草图他需要快速出一个 STEP 文件给客户确认外形。以前的做法是丢给兼职建模的人一来一回半天没了。现在他尝试用 text-to-cad 的思路把描述整理成结构化提示词先生成一个粗略的 STL 看形状确认没问题再转成 STEP 做精确尺寸。整个流程从半天压缩到十几分钟。这就是 text-to-cad 最真实的价值场景快速原型、形状验证、批量变体生成而不是替代高精度工程建模。需要说清楚的是text-to-cad 目前的能力边界很明确。它擅长的是参数化、规则化、形状相对简单的零件比如支架、法兰、齿轮毛坯、外壳、连接件、简单的装配体。对于复杂曲面、自由造型、需要大量工程约束的装配它还很吃力。所以把它定位成“建模助手”而不是“建模替代者”心态就对了。这篇文章我会把整条链路拆开讲从文本怎么变成几何参数到选什么格式输出再到实际跑一遍完整流程最后把我踩过的坑和排查经验都摊开说。不管你是刚接触 CAD 的新手还是想给自己的工具链加一个自动化入口的老手都能找到能直接抄作业的部分。2. 核心原理拆解文本是怎么一步步变成三维模型的2.1 文本到几何的三层转换逻辑很多人以为 text-to-cad 是“AI 直接画图”其实中间隔了好几层。我把它拆成三层来看理解了这个分层后面选工具、调参数、排查问题都会清晰很多。第一层是语义解析层。自然语言进来先要抽出关键信息这是什么类型的零件、有哪些尺寸、有哪些特征孔、槽、倒角、圆角、有没有阵列、有没有对称约束。比如“一个 100×50×5 的板四角各一个直径 6 的通孔孔中心距边缘 10mm”解析出来就是基体是长方体尺寸 100/50/5特征是在四个角位置打四个圆柱孔直径 6位置由边距 10 决定。这一层现在主流做法是用大语言模型做信息抽取输出成 JSON 或者类似的结构化描述。第二层是参数化建模层。结构化描述进来要映射成 CAD 的建模操作序列。还是上面那块板操作序列就是创建草图 → 画矩形 → 标注尺寸 → 拉伸 5mm → 在草图上画四个圆 → 标注位置和直径 → 拉伸切除。这一层是 text-to-cad 真正的核心因为它决定了生成出来的模型是不是“可编辑、可参数化”的。如果只是生成一个网格那第二层可以偷懒但如果要输出 STEP 这种精确边界表示B-rep就必须老老实实走参数化建模。第三层是格式输出层。建模完成得到的是内存里的几何对象要序列化成具体文件格式。STEP 走的是精确 B-repSTL 走的是三角网格GLB 走的是带材质的渲染网格。这三者的取舍后面会专门讲。提示判断一个 text-to-cad 方案好不好关键看第二层。只做第一层和第三层的方案生成的是“一次性网格”改一个尺寸就得重新生成做好第二层的方案生成的是“参数化模型”改尺寸只需要改参数。2.2 为什么参数化建模是分水岭我早期试过一些纯网格生成的方案输入一句话出来一个 STL看起来挺像那么回事。但问题很快就暴露了客户说“孔从 6 改成 8”我没法在模型上直接改只能重新描述一遍再生成而且每次生成的网格拓扑还不一样根本没法做后续的装配和工程图。这就是没有参数化建模的代价。参数化建模的好处在于模型本身携带了“设计意图”。孔的位置是“距边缘 10mm”而不是“坐标 (10,10)”。当你把板宽从 100 改成 120孔的位置会自动跟着边缘走而不是留在原地。这种“意图保留”是工程建模的灵魂也是 text-to-cad 能不能真正进入工程流程的关键。实现参数化的常见做法是用一个脚本化的 CAD 内核来承接第二层。比如用 Python 调用 CAD 的 API把解析出来的参数喂进去让内核去执行建模操作。这样生成出来的模型天然就是参数化的导出 STEP 之后在 SolidWorks、中望 CAD 里打开特征树是完整的尺寸是可以双击修改的。这一点非常重要因为很多下游流程比如出工程图、做 CAM 加工、做有限元分析都依赖参数化模型。2.3 三种输出格式的定位与取舍STEP、STL、GLB 这三个格式热词里都出现了它们各自解决不同的问题选错了会很难受。我用一张表把它们的核心差异列清楚。格式几何表示是否参数化典型用途文件体积可编辑性STEP精确 B-rep是保留特征工程建模、CAM、装配中等高可改尺寸STL三角网格否3D 打印、快速预览大高精度时低只能整体缩放GLB网格材质否网页展示、AR/VR中等低偏渲染选型的逻辑很简单要进工程流程就选 STEP要打印或快速看形状就选 STL要在网页或移动端展示就选 GLB。我自己的习惯是先用 STL 快速生成一版看形状对不对确认之后再走参数化路径生成 STEP。这样迭代快不会在形状还没定的时候就在精确建模上耗时间。这里有个细节值得说STL 的精度是靠三角面片密度控制的。同样一个圆柱面片给少了就是个多边形棱柱给多了文件巨大。一般 3D 打印用 0.1mm 的弦高公差就够了做视觉预览 0.5mm 也行。而 STEP 不存在这个问题它用解析曲面表示圆柱无论怎么放大都是光滑的。这也是为什么工程上最终交付一定要 STEP。3. 实操全流程从一句描述到可用的 STEP 文件3.1 环境准备与工具选型要把这条链路跑通你需要三样东西一个能做参数化建模的 CAD 内核、一个负责文本解析的模型、一个把两者串起来的脚本环境。我实测下来比较稳的组合是这样的。CAD 内核方面如果追求开源和可编程可以用基于 Python 的建模库它能生成精确 B-rep 并导出 STEP 和 STL。如果团队已经在用商业 CAD比如中望 CAD 或者 SolidWorks也可以用它们的 API 来做好处是生成的模型和现有工作流无缝衔接。我个人的建议是原型阶段用开源库快速验证生产阶段再考虑和现有 CAD 体系集成。文本解析方面用一个大语言模型做信息抽取就够了关键是要给它一个明确的输出 schema让它把自然语言填进固定的字段里。不要让它自由发挥否则输出格式每次都不一样后面没法程序化处理。脚本环境就是 Python装好建模库和模型调用库写一个主流程把三步串起来。整个环境在一台普通开发机上就能跑不需要什么特殊硬件。3.2 第一步把自然语言整理成结构化参数这一步是整个流程的地基做不好后面全白搭。我的经验是不要直接把用户的原话丢给模型而是先做一次“规范化”。比如用户说“帮我搞个板子大概巴掌大四个角打孔”这种描述信息量太低模型只能瞎猜。正确的做法是引导用户补充关键尺寸或者用一套模板来收集信息。我常用的一套零件描述模板长这样{ part_type: plate, base: { shape: rectangle, length: 100, width: 50, thickness: 5 }, features: [ { type: hole, pattern: rectangular, count: 4, diameter: 6, edge_offset_x: 10, edge_offset_y: 10, through: true } ], units: mm }有了这个 schema模型的任务就变成“把描述填进字段”而不是“自由生成”准确率会高很多。实测下来对于规则零件字段抽取的准确率能到九成以上剩下的靠人工核对一遍就行。注意单位一定要显式声明。我踩过一次坑模型默认用了英寸生成出来的零件尺寸差了 25 倍打印出来直接报废。所有尺寸字段都带上单位或者全局声明一次。3.3 第二步参数到建模操作的映射拿到结构化参数之后就要把它翻译成建模操作。这一步是纯代码逻辑不需要 AI 参与反而更可靠。以那块带四孔的板为例操作序列是这样的在 XY 平面创建草图画一个矩形标注长 100、宽 50矩形中心对齐原点拉伸草图厚度 5mm得到基体在基体上表面创建新草图画四个圆直径 6位置由边距 10mm 确定拉伸切除贯穿整个厚度用建模库写出来大概是这样import cadquery as cq result ( cq.Workplane(XY) .rect(100, 50) .extrude(5) .faces(Z) .workplane() .rect(100 - 2*10, 50 - 2*10, forConstructionTrue) .vertices() .hole(6) ) cq.exporters.export(result, plate.step) cq.exporters.export(result, plate.stl)这段代码跑完你就同时得到了 STEP 和 STL 两个文件。STEP 拿去工程软件里继续编辑STL 拿去切片打印。整个过程从参数到文件几秒钟的事。这里的关键点是建模操作要写成可复用的函数而不是一次性脚本。因为实际项目里你会反复生成同一类零件只是尺寸不同。把“带孔板”封装成一个函数输入长宽厚和孔参数输出模型这样批量生成变体的时候就非常轻松。热词里有个“python批量对cad修改”说的就是这个思路用脚本批量驱动 CAD效率比手工改高几个数量级。3.4 第三步导出与验证导出这一步看似简单其实有几个坑。STEP 导出的时候要注意版本不同 CAD 软件对 STEP 版本的支持不一样一般用 AP214 兼容性最好。STL 导出的时候要注意公差设置公差太小文件巨大太大形状失真。我的经验值是3D 打印用 0.05mm 到 0.1mm视觉预览用 0.3mm 到 0.5mm。导出之后一定要验证。验证分两个层面几何正确性和文件可读性。几何正确性就是打开模型看一眼尺寸对不对、特征全不全、有没有破面。文件可读性就是拿目标软件实际打开一次比如 STEP 用中望 CAD 或 SolidWorks 打开STL 用切片软件打开GLB 用浏览器打开。我遇到过导出的 STEP 在某些软件里特征树丢失的情况就是因为导出时没保留特征信息只导出了最终几何体。这种问题不实际打开一次是发现不了的。提示批量生成的时候写一个自动校验脚本检查每个输出文件的体积是否在合理范围、能否被解析库正常读取。体积为 0 或者异常小的文件基本就是生成失败了提前拦下来能省很多事。4. 常见问题与排查技巧实录4.1 生成模型尺寸不对或比例失调这是最常见的问题八成出在单位或者参数解析上。排查顺序是这样的先看结构化参数里的数值对不对再看单位声明有没有被正确应用最后看建模代码里有没有做单位换算。我遇到过一次模型解析出来长度是 100但建模库默认单位是米结果生成了一个 100 米的板子导出 STL 之后文件大到打不开。解决办法就是在建模入口处统一做一次单位归一化所有尺寸进来先转成毫米再进建模流程。还有一种情况是比例失调比如孔的位置跑到了板子外面。这通常是约束逻辑写错了。孔的位置如果是“距边缘 10mm”那当板子尺寸变化时孔的位置要跟着变。如果代码里写死了绝对坐标板子一缩小孔就出去了。所以位置参数一定要用相对约束来表达而不是绝对坐标。4.2 导出的 STEP 在 CAD 软件里打不开或特征丢失STEP 打不开常见原因是导出时用了不兼容的 schema或者文件本身写坏了。先换一个 schema 版本试试AP203 和 AP214 都试一遍。如果还是不行用文本编辑器打开 STEP 文件看头部正常的 STEP 文件开头应该是 ISO-10303-21如果开头就是乱码说明导出过程就失败了。特征丢失是另一个层面的问题。有些建模库导出 STEP 时默认只导出最终几何体不导出特征树。这样在 CAD 软件里打开虽然形状对但没法改尺寸。解决办法是确认建模库是否支持“带特征的 STEP 导出”或者改用支持特征保留的导出选项。如果实在不行那就接受它是个“死模型”需要改尺寸时回到脚本改参数重新生成。4.3 STL 文件太大或打印出来表面粗糙STL 的体积和表面质量是一对矛盾。文件太大通常是公差设得太小三角面片过密。文件小但表面粗糙是公差太大。调节的方法就是改弦高公差这一个参数从 0.5 往下调调到 0.1 左右一般就平衡了。另外STL 是纯网格没有单位信息切片软件打开时会问你是毫米还是英寸选错了尺寸就全错。所以导出 STL 的时候最好在文件名里带上尺寸信息比如 plate_100x50x5.stl避免混淆。4.4 批量生成时部分文件失败批量跑的时候最怕的是跑到一半某个文件失败整个流程中断。我的做法是把每个零件的生成包在异常捕获里失败的记录下来继续跑最后统一看失败清单。失败原因通常是某组参数不合法比如孔径大于板宽、厚度为负数。所以在生成之前加一道参数校验把明显不合法的参数拦下来能减少很多中途失败。下面这张表是我整理的常见问题速查遇到问题可以直接对照。现象可能原因排查动作解决方式尺寸差 25.4 倍单位混淆英寸/毫米检查单位声明入口统一转毫米孔跑到零件外位置用了绝对坐标检查约束逻辑改用相对边距约束STEP 打不开schema 不兼容看文件头换 AP214 重导特征树丢失导出未保留特征在 CAD 里看特征树换导出选项或接受死模型STL 巨大公差过小看文件体积弦高调到 0.1mm批量中途失败参数不合法看失败清单加参数校验前置拦截4.5 几个我踩过的坑和独家心得第一个坑是中文描述里的数字歧义。“四个孔”和“4 个孔”模型都能懂但“打四个 6 的孔”里的“6”是直径还是半径模型经常猜错。我的做法是在模板里强制写清楚“diameter”不要用模糊表达。第二个坑是阵列方向。矩形阵列和环形阵列的描述很容易混生成出来孔的位置完全不对。解决办法是在 schema 里把阵列类型做成枚举值不让模型自由发挥。第三个心得是先生成低精度预览再生成高精度成品。形状没确认之前用低精度 STL 快速迭代确认之后再走 STEP 精确路径。这样能省大量时间尤其是参数反复调整的阶段。第四个心得是保留每次生成的参数记录。我会把每次输入的参数和输出文件路径记到一个日志里这样后面要复现某个版本直接查日志就行不用凭记忆重新描述。这个习惯在批量生成变体的时候特别有用。5. 格式转换与下游衔接STEP、STL、GLB 怎么配合用5.1 STL 转 STEP 的现实与局限热词里有“sw中stl转stp”说明很多人有这个需求。这里必须说清楚一个事实STL 转 STEP 在数学上是“逆向重建”不是简单换格式。STL 是三角网格STEP 是精确曲面从网格反推曲面需要做曲面拟合这个过程会丢失精度而且对于复杂形状拟合出来的曲面往往不理想。所以如果你的目标是得到可编辑的参数化模型正确的做法是从一开始就走参数化路径生成 STEP而不是先生成 STL 再转。STL 转 STEP 只适合那种“只有一个网格文件没有原始参数”的补救场景而且要有心理准备转出来的模型质量参差不齐。如果确实需要转常见的做法是用网格处理软件先做网格修复和简化再用逆向工程工具做曲面拟合最后导出 STEP。整个流程比较重适合单个重要零件不适合批量。5.2 GLB 在展示场景的独特价值GLB 这个格式在工程圈讨论得少但在展示圈是主力。它把网格和材质打包在一起浏览器和移动端都能直接加载做产品展示、AR 预览非常方便。text-to-cad 生成模型之后如果目的是给客户看外形导出 GLB 比 STL 体验好得多因为 GLB 带材质和颜色看起来更像成品。我的做法是同一个模型同时导出 STEP 和 GLBSTEP 给工程GLB 给展示各取所需。5.3 和现有 CAD 工作流的衔接text-to-cad 生成的东西最终要汇入现有的设计流程。如果团队用的是中望 CAD 或者 SolidWorks那 STEP 就是最好的桥梁因为 STEP 是通用的精确几何交换格式几乎所有 CAD 都支持。导入之后可以在现有软件里继续加特征、出工程图、做装配。如果团队用的是脚本化的工作流那直接生成模型对象更高效省去导入导出。这里有个衔接细节text-to-cad 生成的模型坐标系和现有项目的坐标系可能不一致。导入之后第一件事是检查原点和方向必要时做一次变换对齐。我遇到过生成的零件方向反了装配的时候怎么都对不上排查半天才发现是坐标系问题。所以导入之后先对齐坐标系再往下做。6. 把 text-to-cad 用出价值的几个实战建议6.1 从规则零件切入别一上来就啃硬骨头text-to-cad 最适合的场景是规则零件板、轴、套、支架、法兰、简单外壳。这些零件特征明确、参数清晰生成成功率高。我建议新手从“带孔板”这种最简单的开始跑通整条链路建立信心再逐步加复杂度。一上来就让它生成复杂曲面或者多零件装配大概率受挫然后误以为这个技术不成熟。其实不是技术不行是场景选错了。6.2 把提示词当成接口文档来写很多人把提示词当成“跟 AI 聊天”写得很随意。但在 text-to-cad 场景里提示词更像是“接口调用参数”应该结构化、明确、无歧义。我习惯把常用的零件描述做成模板每次填参数就行不重新组织语言。这样不仅准确率高而且可复现。模板化之后甚至可以让非技术人员按模板填参数然后一键生成这才是 text-to-cad 真正的效率释放点。6.3 建立自己的零件参数库跑一段时间之后你会发现很多零件是重复的只是尺寸不同。这时候把常用零件做成参数化模板库价值就出来了。比如“标准法兰”一个模板输入外径、内径、螺栓孔数量和分布圆直径就能生成一系列变体。热词里的“python批量对cad修改”本质上就是这个思路的延伸。有了参数库生成一百个变体和生成一个的工作量差不多这是手工建模完全做不到的。6.4 验证环节不能省不管生成多快验证环节一定要保留。我的流程是生成 → 自动校验文件完整性 → 人工抽查关键尺寸 → 目标软件实际打开一次。这四步走完基本不会出大问题。省掉验证后面返工的成本远高于验证的成本。尤其是批量生成的时候一个参数错误可能导致几百个文件全废前置校验能救命。6.5 关于精度和效率的平衡最后说一个体会text-to-cad 不是精度越高越好而是匹配场景的精度最好。做形状验证低精度快速迭代做最终交付高精度精确生成。把精度当成一个可调参数根据阶段来定而不是一刀切。我见过有人为了追求“完美”每个模型都按最高精度生成结果迭代速度慢得没法用。工具是拿来提效的别被工具绑架。这套流程我跑了小半年从最开始的手忙脚乱到现在基本能稳定输出最大的感受是text-to-cad 的价值不在于“替代建模”而在于“把建模能力 democratize”。让不会 CAD 的人也能快速把想法变成模型让会 CAD 的人从重复劳动里解放出来。它现在的边界很清楚规则零件、快速原型、批量变体这三个场景它能打得很好。超出这个范围还是老老实实上专业建模。把工具用在它擅长的地方才是真正的效率。
阅读完成 · 觉得有帮助?