资讯动态

text-to-cad全解析:从自然语言到可编辑CAD模型的生成之路

发布时间:2026/10/27 3:59:22 来源:尧图企业网站定制
前阵子有个做非标自动化的朋友拿着一份需求表来找我上面列着法兰盘、四个均布安装孔、外圈倒角这类描述。聊到一半他问我像这种标准件建模有没有办法用一句话搞定我说有方向就是text-to-cad。所谓text-to-cad就是把自然语言描述直接变成可编辑CAD模型的工具与技术的总称。你给它一句直径60mm、高度20mm、带四个均布安装孔的圆柱底座它就能生成一段程序化建模脚本让CAD软件自动把模型搭出来。这个概念近两年在学术界火得很快工业界跟进的速度也不慢BricsCAD、Autodesk都在往这个方向布局。这篇文章我会从底层原理、主流模型、实测过程和能力边界四个角度把这段时间折腾text-to-cad的经验完整梳理一遍给想入坑的朋友一份能直接上手的参考。1. 从说人话到画出模型text-to-cad到底在解决什么问题1.1 传统CAD建模流程的效率瓶颈干过机械设计或结构设计的人应该都有同感真正留给创造性设计的时间往往不到一天的三分之一。剩下的大部分时间去哪了答案是画标准件、改参考图、重复拉特征。一个法兰底座抛开前置的计算和选型单说建模——打开软件、选基准面、画草图、约束尺寸、拉伸、开孔、倒角——动作不算复杂但整套流程走下来起码三十分钟。如果客户中途改一版尺寸又得回到草图里重新标注、重新约束时间翻倍。text-to-cad想改变的就是这个环节。它不是要替代CAD软件而是充当一个人和建模内核之间的翻译层把人能理解的自然语言翻译成CAD软件能执行的程序化指令。你可以把传统建模理解成手写代码text-to-cad则相当于你用自然语言描述需求让编译器帮你把代码写出来——建模者从动手画变成提需求。1.2 为什么主流路线是生成脚本而不是AI直接出图很多人第一次听到text-to-cad会觉得它像那些文生图工具一样让神经网络直接画出一个三维网格或者体素模型。但实际做工程的朋友都知道这条路在CAD场景里根本走不通。原因在于CAD模型的本质不是形状而是参数化特征树。一个正规的CAD模型背后是一整套历史记录先建哪个草图、用了什么约束、拉伸多深、倒角半径多少、孔是不是通孔、特征之间有没有父子关系。这些信息决定了模型改起来方不方便、能不能进CAE/CAM流程、能不能做装配约束。如果神经网络只输出一个光溜溜的网格模型设计师拿过来根本没法改——就像拿到一张打印出来的雕塑照片看着像但摸不着、改不了。所以现阶段真正可用的text-to-cad几乎都是LLM生成程序化建模脚本的路线。让大语言模型学过大量建模代码之后把你的自然语言描述转成一段CADScript、CadQuery、OpenSCAD之类的脚本再由CAD内核执行。这样生成的模型天然保留参数化特征尺寸改了约束还能跟着变下游流程也不会断。1.3 谁最适合吃这波红利我实际接触下来最受益的是三类人。第一类是机械、结构、非标自动化工程师他们天天跟标准件、钣金件、支架底座打交道这类零件结构高度套路化最容易被一个参数化模板生成器替代掉重复劳动。第二类是3D打印玩家和创客他们没有系统学过CAD但能清楚说出自己想要的形状配合开源的OpenSCAD、CadQuery低保真快速出模型特别好用。第三类是设计教育场景——学生学建模的第一步往往卡在不知道从哪里下手text-to-cad能让他们先看到结果再回头看特征树理解效率高很多。2. 拆开看自然语言变成CAD模型的三条技术路线2.1 路线一文本→程序化建模脚本当前绝对的主流这条路线最典型的代表是2024年MIT的工作Text2CAD。它的玩法清晰得像教科书先用一个大规模CAD数据集把真实设计解析成CADScript程序序列再拿这些描述-代码对去微调一个开源大模型Text2CAD用的是Llama-3让模型学会把自然语言指令对应到建模序列上。推理的时候你输入一句英文描述模型输出一段CADScript把这脚本丢进AutoCAD或者BricsCAD执行模型就自动画出来了。论文里配套发布的CAD-AI数据集是关键。它基于Fusion 360的公开设计库把每个零件的特性树解析成程序化指令集规模大概十几万条。模型学的不是简单词汇映射而是看到描述后规划建模步骤的思维链。举个简单的例子你说创建一个带四个通孔的矩形底座模型脑子里生成的其实是这样的指令序列# 简化的CADScript示意实际输出格式取决于目标软件 RECTANG 0,0 100,80 EXTRUDE 10 # 在顶面定位四个孔心 HOLECENTER 10,10 HOLECENTER 90,10 HOLECENTER 10,70 HOLECENTER 90,70 # 执行通孔开孔 DRILL 6, THROUGH_ALL生成脚本的好处前面说了可编辑、可参数化、可复用。这个路线目前的主要限制在于生成质量严重依赖训练数据的覆盖度——常见的板类、轴类、壳体特征还行一旦碰到自由曲面或者复杂造型模型就容易胡言乱语。2.2 路线二端到端神经网络直接生成几何这条路线更AI味代表工作是DeepCAD这一类。它把CAD建模过程看成有序的操作序列比如画圆→拉伸→再画矩形→布尔减运算用自编码器把这些序列压缩成潜在向量然后通过一个序列生成模型直接从文本解码出几何。好处是端到端训练好之后不需要调用外部CAD软件模型自己就能输出一个可识别的CAD特征序列。坏处也很明显生成结果的可控性差模型不理解为什么要这样建模只知道统计上这样建。你在提示词里稍微改一个尺寸它可能整个输出结构就崩了。实际体验下来DeepCAD更适合对已有设计做小修小改比如把孔从4个变6个、把板厚改薄从零生成复杂模型不太行。2.3 路线三检索增强加参数改写还有一条相对务实的路不要求模型凭空生成整个模型而是让LLM先在标准件库、历史模型库里做检索找出最匹配的候选再根据自然语言描述对库里的参数做改写。这条路线特别适合螺栓、轴承、法兰这类高度标准化的零件本质上属于智能选型参数定制命中率比前两条路线高得多。缺点是泛化能力弱库里没有的东西它永远生成不出来。所以这条路线更像是一个企业内部的效率工具而不是通用建模能力。2.4 三条路线怎么选技术路线代表工作输出形式可编辑性成熟度适合场景文本→脚本Text2CADCADScript / CadQuery / OpenSCAD 代码强保留特征树较高新零件设计、标准件变体端到端几何DeepCAD特征操作序列弱编辑困难中已有设计的小改款检索参数改写各厂商内部方案参数化模板 参数表强前提是库里匹配中标准件选型我的判断是至少在接下来两三年内路线一都是最值得投入的方向。原因很朴素工程领域最看重的是改得动而脚本天然满足这个要求。路线二的模型生成出来再漂亮改不了尺寸就等于废品。3. 主流模型与工具实测谁真能打谁在画饼3.1 MIT Text2CAD当前最值得试的开源方案先说结论如果你只有时间试一个模型首选Text2CAD。它是基于Llama-3微调的HuggingFace上有开源权重显卡有8GB显存就能跑量化版本。我实测的感受是结构简单的机械零件比如底座、支架、法兰、带孔的板大约六七成的生成结果能用直接进CAD执行没问题但凡是设计稿里涉及自由曲面、复杂扫掠、多特征强耦合的基本就等着翻车。它输出的CADScript需要在AutoCAD或者BricsCAD里跑。如果你手头没有正版软件也有替代方案——用CadQuery的Python环境来执行导出的STEP或STL模型一样能进下游流程。别被必须装AutoCAD吓到路子很多。3.2 DeepCAD老牌工作适合轻度改款DeepCAD是更早的经典工作严格说属于2.2里端到端路线。它不开源交互界面但论文代码能跑通。实话说现在的模型能力已经明显比它强了但我提它是因为它的思路很值得学——它是极少数能输出可解析CAD特征序列的端到端模型很多后续工作都在它的序列表示基础上改进。如果你研究技术方案它的代码值得一读但如果你只想拿来生产有点鸡肋。3.3 工业软件厂商的AI布局方向对火候未到BricsCAD最近几年在AI辅助上动作不小它的AI助手可以理解一些自然语言命令做特征调用和参数调整体验上更像语音操作CAD离一句话生成整个零件还有距离。Autodesk的Project Bernini更接近text-to-cad的愿景支持从文字和图像生成三维模型但目前还在预览阶段公开可用的范围非常有限。传统巨头SolidWorks这边更多精力花在AI辅助草图识别和命令预测上属于提效而非替代建模。我个人的看法是这些工业级动作是风向标但现阶段别指望它们能端到端替代你的日常建模。真想尝鲜开源模型反而更灵活至少你能看到每一行脚本是怎么生成的。3.4 评估指标怎么看论文里常用一个指标叫CSABCAD script accuracy做法是把模型生成的脚本解析成指令树再和参考脚本逐节点比对算匹配度。这个指标能反映模型在多大程度上学会了套路化的建模流程但说实话它跟最终生产力不一定划等号。我更建议你在评估模型时看三个更实际的东西第一生成脚本能不能被CAD软件正常执行语法错误率是多少第二生成模型的尺寸和描述给的数值对不对得上第三模型有没有保留合理的参数化特征方便你后期修改。这三个都过了CSAB多少分反而无所谓。3.5 我给能力边界画个像需求类型实测效果说明简单实体零件底座、支架、法兰可用六到七成结果能直接进CAD多特征交互的复杂零件翻车率高孔位、倒角、加强筋常互相冲突自由曲面、复杂扫掠基本不行模型缺乏这类训练数据装配体、多零件约束不支持目前只能单零件精确数值尺寸不稳定提示词里写清楚±几个毫米还能控住这个表不是我拍脑袋编的是我实际跑了一周模型之后的状态。你可以把text-to-cad当成一个很会画标准件的实习生而不是资深结构工程师。4. 我跑通一次文字→模型的完整过程4.1 环境准备从零到能跑的最小配置我本地的配置是Python 3.10、PyTorch 2.1、一张12GB显存的显卡。如果你只有8GB建议用4-bit量化加载模型效果损失不大。整个准备流程分成四步创建Python虚拟环境安装transformers、torch、accelerate这几个基础库。从HuggingFace下载Text2CAD的微调权重注意看模型说明里的基座版本别和Llama-3的Base模型搞混。安装CadQuery库用于快速把生成的脚本转成可视化的STEP/STL模型如果你有AutoCAD或BricsCAD也可以直接用它们执行。写一个Python推理脚本加载模型、写提示词、把输出保存成CADScript文本文件。这套配置跑下来一次推理大约需要十几秒速度完全可以接受。4.2 提示词怎么写才靠谱这一步是整个流程里我最想强调的。很多朋友第一次用的时候上来就写make a base with holes结果模型输出的东西完全没法看。不是模型笨是你的描述信息密度不够。模型没有读心术它只能从你的句子里提取确定的指令。我总结出一个好用的提示词公式几何类型 关键尺寸 特征位置 特征参数 公差偏好。给你看一个正反对比反面示例做一个有孔的底座。这句话缺了太多信息——底座是方的还是圆的多高孔多大几个孔通孔还是盲孔模型只能瞎猜。正面示例Create a rectangular base plate, width 100mm, depth 80mm, height 10mm, with four through holes of diameter 6mm at corners, each hole center is 10mm from the adjacent edges.这句就把所有关键变量全部钉死了。我实测下来这种高信息密度的提示词生成成功率能翻一倍以上。还有一个技巧一次只生成一个特征组。别指望一句话把一个十特征的零件全描述完模型大概率顾此失彼。正确做法是先描述主体形状生成、执行、检查通过之后再用第二句提示词加孔第三句倒角一步步叠加。4.3 推理参数怎么调推理阶段最影响结果的参数是温度和采样策略。我跑了十几轮试出来一套比较稳的组合temperature设为0.2采用beam search并设置beam数量为5比贪心采样稳定得多也不会因为温度太高而胡编乱造。max_length要设大一点我一般设到512否则脚本容易在中途被截断生成一个不完整的实体。还有一个细节模型有时会输出额外的解释文字比如Here is the CAD script:这会污染渲染结果。我的处理办法是写一个后处理函数只保留代码块里面的内容其余全部滤掉。4.4 在CadQuery里执行和校验我因为手头没有AutoCAD授权用的是CadQuery做执行环境。模型输出的CADScript语法跟CadQuery不完全一样怎么办一个很实用的折中方案是别死磕让模型输出CADScript直接用提示词要求它输出CadQuery/Python代码。这样我可以用本地Python直接跑快速看到STL预览。比如上面那个底座的提示词生成的代码经过微调后长这样import cadquery as cq result ( cq.Workplane(XY) .box(100, 80, 10) .faces(Z) .workplane() .pushPoints([(10, 10), (90, 10), (10, 70), (90, 70)]) .hole(6.0) ) result.exportStep(base_plate.step)我习惯把它存成脚本文件反复跑、反复看比每次走一遍CAD软件快得多。4.5 出错之后怎么修我实测下来模型一次成功的概率大约只有一半剩下的一半需要用迭代法修。语法层面的错误最好办——把报错信息复制回上下文让模型基于这个报错重新生成它往往能自己改对。逻辑层面的错误要麻烦一些比如孔位偏了、尺寸差了这时候不要让它整体重做而是直接追加修改指令比如move the four holes to coordinates (10,10), (90,10), (10,70), (90,70)。有一个坑我必须提一下单位混乱。模型在多语言语料里训练过如果提示词里没写单位它可能默认英寸而不是毫米。我习惯在提示词最后加一句All dimensions are in millimeters能明显减少尺寸漂移。4.6 实测中的意外情况中文提示词的实际效果比英文差不少这是训练数据决定的模型语料里英文CAD数据占了绝大多数。我的做法是先写英文提示词跑通之后再根据需要翻译成中文存档而不是直接中文输入。另一个意外是模型对左右对称四个角落这类相对描述理解不稳定。最好直接把关键坐标写出来不给模型自由发挥的空间。经验是描述得越像施工图结果越像样描述得越像口语结果越抽象。最后哪怕生成结果看起来挺好也一定要在软件里转一圈视角检查破面、未闭合实体这些小毛病。AI生成的脚本本质上是统计推断离完美实体还有距离人工复查这步省不得。5. 冷静评估text-to-cad离生产力工具还有多远5.1 当前最明显的短板如果你在评估要不要把text-to-cad引入你的日常工作流这四件事必须先想清楚。第一复杂装配体和多零件约束关系目前完全支持不了。你让它生成一个包含轴承座、端盖、密封圈互相约束的装配体它直接懵。第二工程语义缺失。公差、表面粗糙度、热处理要求、加工余量这些信息模型既不会读也不会写。第三格式割裂。Text2CAD输出CADScript其他模型可能输出CadQuery或者OpenSCAD互相之间没有统一的交换格式迁移动辄重来。第四训练数据以开源CAD库为主行业内真正值钱的专用特征库、企业历史模型库模型一个都没见过所以你在航空叶片、精密模具这些领域基本指望不上。5.2 比生成整个模型更有价值的用法跑了一段时间之后我发现text-to-cad最实用的用法反而不是生成完整模型而是下面这几件事。标准件选型加参数化定制是最容易落地的场景。法兰、轴承座、安装底板这类高度套路化的零件让模型根据参数生成设计稿再人工复核效率提升非常明显。设计早期的草模发散也很有用——你拿一句话换个参数跑一遍几分钟就能看到十几种结构方案角度完全不同这种发散能力人工画很难比。还有一类用法我特别推荐给旧设计做变体。把历史模型转成脚本表述再让模型根据新需求改参数比从零开始生成靠谱得多。本质上是检索加改写模型只需要理解改什么不需要理解怎么建。教育场景里text-to-cad还能充当一个低门槛的建模教学工具学生先看到结果再往回研究特征树怎么做学习曲线能平缓不少。5.3 我给新手的最后几条建议第一把它当成第一版草稿生成器而不是最终交付机器人。我见过的所有成功案例没有一个敢跳过人工审查直接交付。尺寸、单位、材料、加工约束这些最后一定要靠人来把关。第二学会拆提示词。一个完整零件拆成三到五个小提示词逐步生成远比一段话描述最终状态更稳定。这就像写代码小函数好测大模块难调。第三如果你不是专业CAD用户完全不需要为了玩text-to-cad去装AutoCAD。LLM加OpenSCAD或者CadQuery的组合零成本就能跑通全流程生成的模型还能直接衔接3D打印。我个人的体会是text-to-cad真正值钱的不是把一句话变成模型这个魔术而是它逼着你把脑子里模糊的需求拆成几何类型、关键尺寸、特征位置、特征参数这些精确的表达。当你能把一句话讲清楚一个零件时建模本身反而成了最简单的一步。如果你现在还拿不准要不要入坑我的建议很简单别等论文更新直接找开源模型跑一个最简单的例子试试。哪怕只是让模型给你生成一个带孔的板子也比看十篇综述来得直观。

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

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

免费获取报价 →
↑