资讯动态

text-to-cad:从一句话到可加工的三维实体模型

发布时间:2026/10/27 4:02:04 来源:尧图企业网站定制
把一句大白话变成能加工的三维零件——这是我对text-to-cad最简单粗暴的概括。我第一次在某个工具的输入框里随手敲了一句“一个80mm×50mm×6mm的底板四角各开一个Ø6通孔”几秒钟后拿到一个STEP文件时说实话愣了几秒。这种事以前意味着打开CAD软件、新建草图、画中心线、标尺寸、拉伸、切除、倒角一套流程下来至少二十分钟现在它成了一个语言问题。text-to-cad解决的核心问题是把设计意图直接翻译成三维实体模型你描述形状、尺寸和特征模型负责把它转成可编辑、可导出、可做制造检查的实体几何。它和文生图、文生视频最大的区别在于输出不是像素也不是三角形网格而是带工程语义的B-Rep实体这一条让它在机械设计、3D打印、工装夹具、概念验证这些场景里都有真实落点。这篇文章我会按原理—实操—踩坑—边界的顺序展开不堆术语但底层逻辑会尽量说透。它适合三类人想评估AI CAD工具是否值得引入的工程师正在做AI工业软件选型的技术负责人以及想搞明白“一句话建模”到底是怎么做到的新手。1. 先搞清楚text-to-cad到底在解决什么问题1.1 从一句人话到一个实体零件的完整链路打开一个text-to-cad产品通常会看到一个大输入框旁边写着类似“描述一个零件例如带四个安装孔的L形托架”。输入之后后台链路按我对这类工具的通用理解大致分四步语义解析把自然语言拆成设计意图包括形状类型、关键尺寸、特征位置、布尔操作。生成建模指令模型输出一段结构化的命令序列对应草图、拉伸、切槽、倒角、阵列这些CAD操作。几何内核执行指令交给内核比如OpenCascade、Parasolid这类底层几何引擎生成真正的B-Rep实体。导出预览把实体转成STEP、STL、OBJ等格式浏览器里预览并让用户下载。用大白话解释模型不是一个把文字变图像的画师而是一个听口音行事的老排版师傅——你告诉他版心、行距、字号他啪嗒啪嗒排出整版。text-to-cad的模型听的不是排版参数而是草图、拉伸、切槽、倒角这些特征操作。这也是text-to-cad和文生3D最根本的分岔路。文生3D在一个“长得像”的网格上停下来但CAD要求的是精确、闭合、可被下游软件识别的实体。网格是一堆三角形“面片外包”没有边长、孔径、厚度这种工程含义B-Rep则是带着拓扑关系和几何曲面的实体描述能直接进CAE、CAM、3D打印切片软件。所以把text-to-cad看作“生成模型”是不够准确的更准确的说法是它在生成一个建模过程而不仅仅是一个结果。这解释了为什么很多产品会附带“特征列表”或“建模历史”也解释了为什么它天然适合做参数化改动——改一个数字相当于改了过程里的一步而不是推倒重来。1.2 为什么现在才轮到CAD被“文本化”文生图从2022年就爆发了text-to-cad直到最近两年才被批量讨论。这个延迟不是偶然而是三个硬门槛叠加的结果。第一是数据。CAD模型不像图片网上没有海量成对的“文字描述→建模指令”。开源领域虽然有Fusion 360 Gallery、ABC这类CAD数据集但它们覆盖的特征类型、设计风格和“文字标注”质量参差不齐。要训练一个能稳定输出建模指令的模型光有模型文件还不够还得有对应的特征历史甚至得有人把特征历史线性化成命令序列——这是很重的数据工程。第二是精度。生成图片时“看起来不错”就能糊弄过去生成CAD时差0.5毫米就是废件。模型输出的每一个坐标、半径、深度都必须落在几何内核能执行的范围内容错率极低。第三是验证。模型生成一段文字很容易但要验证这段文字能不能被内核执行、执行后是不是一个闭合实体、能不能被下游软件正常打开需要一套完整的校验链路。没有这条链路AI生成的永远只是“看起来像设计说明书”的废话。现在这批工具之所以能跑起来是因为LLM编码能力、开源几何内核、云端API这三块拼图同时成熟了。这也解释了早期text-to-cad产品为什么只能稳定处理板、块、托架、法兰这类机械件——因为能被稳定验证、能拿到特征历史数据的对象首先就是它们。这不是这代模型的上限而是数据与验证链路当前的真实边界。2. 核心原理拆解语言模型到底在生成什么2.1 两条主流路线写代码和写建模指令text-to-cad的实现路线大致分两类理解它们对选型很有帮助。一条是“代码生成路线”。让通用LLM直接写CadQuery、OpenSCAD、FreeCAD Python这类脚本再由脚本调用内核生成模型。这条路的好处是起步门槛低——通用大模型的代码能力已经很强不需要专门准备CAD训练集。坏处是代码容易出错模型可能写出坐标系越界、参数类型错误、特征链碰撞的脚本只有真正执行时才会暴露。而且通用模型对某个CAD库的API细节理解有限经常写出“看起来很正确但一跑就报错”的代码。另一条是“专用建模指令路线”。用一个在CAD指令语料上微调过的模型直接输出一套定制DSL比如plane(XY)、circle(center(40,25), r3)、extrude(6, cutTrue)这种命令再由自研或封装好的几何内核解析执行。Zoo的text-to-cad、若干研究论文里的Text2CAD方案都朝这个方向走。优点是执行更可控、可以做合法性校验坏处是要自己造数据集、自己写DSL和内核适配工程量大得多。我把两条路线的差异整理成一张表方便直接对照维度代码生成路线专用建模指令路线对通用LLM的依赖高直接让LLM写脚本低用专用微调模型数据集成本普通代码语料可用需要自建CAD指令语料执行稳定性中等脚本错误频发较高可在内核侧校验参数化能力强代码天然带参数取决于DSL设计适合人群开发者、二次开发产品级落地、企业集成两条路最后都要落在一个能产出B-Rep的几何内核上。模型只负责出“施工图”内核才是“施工队”。这也是为什么很多text-to-cad公司最后都自己写了或封装了内核——没有内核AI生成的文字永远只是文字。2.2 训练数据与几何语义对齐训练一个text-to-cad模型核心资产是成对的“自然语言→CAD指令序列”数据。构造这类数据通常有三种手段。一是从开源CAD数据集里抽取特征历史把一棵包含草图、约束、布尔运算的特征树线性化成一条指令序列。Fusion 360 Gallery里大量参数化模型就是这么用的模型的历史记录天然就是一套带顺序的建模步骤。二是用LLM给三维模型写文本描述也就是反过来做caption。模型文件已经有了指令序列也有了缺的只是“人话版描述”这一步现在可以用通用LLM批量完成。效果看运气质量高的描述能给出尺寸和相对位置质量低的就只是一句“一个带孔的板”。三是人工清洗和增强。把指令序列里不符合工程习惯的部分修正掉补充同义表达增加多轮对话里的增量修改样本——比如“把厚度从5mm改成8mm”这种后续指令。你会发现一个有趣的闭环最早的text-to-cad数据一部分恰恰是靠通用LLM生成的。所以训练集里出现大量“一个带台阶的轴”“一个带孔的板”这类模板化对象不是巧合——因为这些最适合自动化批量标注也最能被几何内核稳定复现。这里所说的“几何语义对齐”本质上就是模型要学会把“四角各开一个Ø6通孔”映射到“在四个坐标点画圆并执行布尔差”这个操作序列。文本是稀疏的指令是稠密的模型要补全的信息比它看到的文字多得多。2.3 “合法实体”不等于“有设计意图”这是评估text-to-cad产品时最容易被忽视的一点。同样一个STEP文件可能是参数化特征树导出的也可能是把空壳倒出来的“死”实体。参数化模型里有历史记录有命名参数后续可以改一个孔径整个特征树自动重算静态B-Rep则只是一块实心的几何外壳想改尺寸只能整个重新生成。text-to-cad产品里两类都存在有的产品甚至同一批结果里既有参数化的也有静态的取决于模型当时走了哪条推断路径。我在实际评估工具时会第一时间确认一件事生成结果能不能在本地CAD里编辑特征还是只能当作一个固定模型引用。这个差距直接影响工作流——如果只是想做概念预览静态B-Rep完全够用如果要接进产品研发参数化能力就是硬指标否则一个小改动会变成一次新的AI生成循环。3. 实操五分钟跑通一个零件生成3.1 工具选型按场景选入口text-to-cad的入口现在大致有三类我把各自的适用情况列一下。第一类是在线Playground比如Zoo的text-to-cad页面。适合快速验证想法、演示给同事看不需要安装任何环境输入一段话就能下载文件。缺点是交互和批处理能力有限不适合串进正式设计流程。第二类是云端API适合产品集成。企业内部工具或自动化流水线可以把文本生成CAD做成一个后端接口传入设计参数、返回STEP文件。这种玩法对并发、成本、失败重试都要做工程兜底。第三类是本地开源方案用CadQuery或OpenSCAD配合通用LLM自己搭一条最小链路。适合开发者自己实验也适合学习原理。下面3.3节给的就是这个路子的完整示例。这三类不是互相替代的关系。我个人的建议是学习原理用本地方案验证效果用Playground真正要落地再考虑API或内部集成。3.2 提示词写法让模型听懂工程“黑话”text-to-cad的提示词和普通对话完全不是一回事。普通对话要的是语义丰富、上下文连贯text-to-cad要的是参数明确、特征无歧义。我试过很多种写法真正能一次生成成功的提示词有几个共同点有数字、有单位、有明确的操作词。先看两个反例。写“做一个结实的支架”模型只能猜写“支架上挖几个孔”它不知道是通孔还是盲孔、孔心在哪、挖多深。正确姿势应该是这样。不要这么写问题在哪我会改成做一个结实的支架没有尺寸和形状L形托架底板80mm×80mm×6mm竖板高50mm×宽80mm×厚6mm中间挖一个孔未定义位置和深度底板中心开一个Ø20通孔贯穿到底四周加一点圆角没有圆角半径所有外部棱边倒R2圆角做一块适合放手机的板依赖隐含知识矩形板100mm×60mm×4mm顶面开一个下沉槽槽深2mm还有一个很实用的技巧先出主体再叠加特征。别试图一口气描述完整个零件优先让模型先生成一个干净的毛坯然后用多轮对话逐步加孔、加槽、加倒角。这样即使中间某个特征失败你也能定位到是哪一个环节出了问题而不是整段推倒。描述相对位置时一定要给参照物——“孔心距边缘8mm”比“靠近角落”好用得多。对称特征直接说阵列“四个角各开一个Ø6通孔呈2×2阵列”模型对这类指令的处理成功率远高于列出一长串绝对坐标。3.3 本地跑一个最小验证CadQuery加通用LLM用一个文本到STEP的最小链路来理解原理是我反复向新手推荐的做法让一个通用LLM去写CadQuery脚本由CadQuery调用OpenCascade内核生成STEP。下面是我实际跑过的一个例子。提示词大致是“用CadQuery生成一个80mm×50mm×6mm的底板四条竖直棱边倒R2圆角顶面距离每条边8mm的位置放四个Ø6通孔呈长方形排列。”一个可用的CadQuery脚本长这样import cadquery as cq result ( cq.Workplane(XY) .box(80, 50, 6) # 底板主体 .edges(|Z) # 选中所有竖直棱边 .fillet(2) # 统一倒R2圆角 .faces(Z) # 选中顶面 .workplane() # 在顶面建立工作平面 .rect(60, 30, forConstructionTrue) # 辅助矩形用来定位孔 .vertices() # 取矩形四个角点 .circle(3) # 每个角点放一个Ø6圆 .cutBlind(-6) # 向下切穿6mm ) result.export(bracket.step)把这个脚本丢进任何一个带CadQuery的Python环境运行完就是一个可用的STEP文件。这个实验的核心价值不是得到零件而是让你直观看到text-to-cad背后的本质模型输出的是“建模步骤”而不是“最终形状”。你可以试着改box的第一个参数从80改成100整个零件会跟着变——这就是参数化的意义。我跑这个过程踩过的坑集中在两处。一是模型的CadQuery API版本可能和你本地的不同生成代码里经常混入旧版函数名二是.fillet()这类操作很挑几何链棱边选错或半径过大都会中断。简单做法是让模型生成时明确指定“按CadQuery 2.x语法”并且生成后先在cq-editor里预览再导出STEP。3.4 拿到文件之后验证、后处理、导出生成的STEP不是终点。我的固定动作是三件事核对尺寸、检查特征、按用途导出。核对尺寸用FreeCAD的Measure或Fusion的Inspect都行关键是要确认关键孔径、壁厚、孔距和提示词一致。检查特征则要看模型能不能在你本地软件里编辑参数——如果打开之后只有一个静态实体说明这条路走的是“死”模型路线后续修改需要回到text-to-cad里重新生成。导出格式取决于下游用途。3D打印用STL但要注意网格密度机加或仿真用STEP如果只是想拿给同事看一眼直接在线预览图就够。另外云端内核和本地内核版本不同偶尔会有“云端生成成功、本地打开报错”的情况。遇到这个先用工具自带的在线预览确认几何没问题再换IGES等中间格式试试通常能绕过内核版本兼容问题。4. 常见问题与排查技巧实录4.1 尺寸差得离谱先查单位“尺寸巨大/微小”是我见过出现频率最高的问题。排查逻辑很简单先确认单位。text-to-cad产品默认大多数是毫米但很多模型训练语料里混了英寸或者你的描述里混用了in和mm。一个可靠的检查方法是看比例如果结果比预期大25.4倍或小25.4倍基本就是英寸和毫米的换算问题。处理方式是在提示词里显式写上“所有尺寸单位均为mm”并在关键尺寸后面重复一遍单位比如“板厚6mm孔径Ø6mm单位mm”。还有一种尺寸问题是参照物错位。你说“孔心距边缘8mm”模型可能理解为距每条边的垂直投影投影线而不是实际三维距离。这种时候把孔位描述成“以底板左下角为原点孔心坐标(8,8)、(72,8)、(8,42)、(72,42)”这种绝对坐标更可靠。4.2 孔没打通、倒角没生成关键词没给到位“一个孔”在CAD里天然有两种状态通孔和盲孔。如果提示词没有明确“贯穿”很多模型会倾向生成盲孔或沉孔。我在实际测试里遇到过不止一次“看着像孔、剖面一看是盲孔”的情况。处理办法是把布尔语义说死要通孔就写“through-hole贯穿整个板厚”要盲孔就写“盲孔深度8mm”要沉孔就写“沉头孔沉头直径12mm、深度2mm”。不要省这几个字省掉的往往就是返工的半天。倒角缺失则是另一类问题。模型不是不想做而是倒角对几何拓扑很敏感——如果前一步的拉伸和切除让某些棱边变成了多条断线统一倒角就会失败。我的习惯是主体生成完了先不急着倒角先确认布尔操作正确再单独发一轮“给所有竖直棱边加R2圆角”的指令。成功率会高很多。4.3 文件打不开或显示异常先分清是哪一层的问题生成的STEP拿到本地打不开原因通常不在模型而在导出链路。云端内核导出的STEP版本、单位制、曲面表示跟你本地软件不兼容都有可能。排查顺序是先在浏览器里用工具自带的预览器看文件是否正常再用FreeCAD这类免费软件打开最后才考虑是不是要换格式。我遇到过一次云端生成的STEP在专业软件里报“无法识别实体”但IGES版本能正常打开——这不是几何错了是STEP写出的拓扑结构不被当前内核接受。下面是一张我整理的速查表浓缩了上面所有经验症状可能原因处理动作尺寸整体偏大或偏小单位被当成英寸提示词显式写mm按25.4倍校验孔没有穿透未明确通孔加“through-hole”“贯穿板厚”圆角/倒角消失上一步几何链断裂先主体后倒角分两步生成STEP打开报错内核版本/导出版本不兼容换IGES或本地软件重试两次结果不一致模型采样随机性关键参数写死多次生成挑优这些排查技巧不复杂但都属于“常规文档里不会写”的部分。我建议你在自己的评估阶段就把这几条记下来能省掉相当多调试时间。5. 现阶段的能力边界与我实际使用的方式5.1 目前真正能落地的场景我给项目做技术选型时不会一上来就问“它能不能替代工程师”而是问“它能替哪个环节”。现阶段text-to-cad稳定可靠的使用场景我总结为四个。第一是概念设计早期。需要快速给结构方案“搭个样子”的时候用自然语言生成几个候选模型远比在CAD里从零画快。第二是标准件和简单结构件比如支架、底板、法兰、罩壳这类以拉伸、旋转、阵列为主的特征text-to-cad已经处理得很好。第三是3D打印验证生成后直接转STL配合切片软件做快速原型省去人工建模环节。第四是非CAD背景人员的沟通工具——产品经理、工艺人员可以把想法用一句话表达成可视化模型再交工程师细化。这些场景的共同点是零件结构相对简单、功能语义清晰、对“完美参数历史”的容忍度高。5.2 我踩过之后不再指望它做的事另一方面有几类工作我现在基本不会用text-to-cad来碰。一是复杂自由曲面比如汽车A面、消费电子外壳那种需要大量曲率连续控制的形态这类模型的训练数据本身就稀缺生成结果很难达到工程可用度。二是大型装配与约束网络多零件配合、运动副、干涉检查这些逻辑不是一句话能说清的超出当前技术的能力半径。三是精确钣金展开折弯系数、展开扣除、回弹补偿这些制造知识藏在工艺参数里不是几何模型能凭空生成的。四是GDT制造语义形位公差、表面粗糙度、基准标注这些信息要附着在几何特征上目前多数输出还只是“裸几何”。说到底问题不在“AI能力上限”而在于“数据集和验证手段还没到位”。我不会因为这些边界就否定它的价值但我会在项目里把期望值摆正它能加速设计表达不能替代工程判断。最后分享一个我现在的使用习惯。真正做项目时我不会把text-to-cad当建模工具而是当“草稿工具加沟通工具”。我会先花几十秒生成几个候选结构挑一个顺眼的导入Fusion在原有基础上继续加约束、改参数。这个习惯的直接体会是AI不是替我做设计而是替我把CAD表层的体力活剥掉让我把注意力放到“这零件到底该怎么受力、怎么装配、怎么出模”这些真正值钱的问题上。如果你也打算试水text-to-cad我建议第一件事不是研究模型细节而是拿一个自己做过的小零件从“复现它”开始——踩过这一次坑你对这个工具的边界理解会比看十篇评测都管用。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑