
上周有个做结构设计的兄弟问我“现在到处都在说text-to-cad我是不是把需求文档往AI里一贴就能拿到能加工的三维模型了”这个问题其实问到点子上了。Text-to-CAD字面意思是“用自然语言生成计算机辅助设计模型”但它并不是你输入一句话AI就给你渲一张好看的效果图那么简单。它真正在做的事情是把“设计意图”翻译成CAD软件能够理解的几何构造过程——草绘、拉伸、切除、倒角最后输出一个带特征树的可编辑工程模型。这篇文章我会从技术原理、工具选型、本地实操到提示词技巧把Text-to-CAD这条链路拆开讲透。适合想尝鲜的机械工程师、产品设计师也适合想在团队里评估这套工具能不能落地的技术负责人。1. 为什么是Text-to-CAD——从自然语言到几何体的第一公里1.1 传统CAD建模的隐形成本很多人觉得“CAD建模不就是画画图吗”但真正做过设计的人都知道最耗时间的不是鼠标操作而是“把需求转成几何语言”的过程。客户说“我要一个能装进这个设备的电机底座”这句话到了设计师脑子里要先拆解成底座轮廓多大、安装孔距多少、避让哪些零件、用哪种固定方式、要不要加强肋。哪怕你是个SolidWorks老手新建一个零件后还是得从选择草图平面、画矩形、标尺寸、拉伸、打孔开始一步步来。这个“意图转译”的环节恰恰是最依赖经验的部分。新人在这一步会反复找客户确认熟练工则会根据自己的知识库脑补一版。Text-to-CAD的切入点就在这里它尝试把“自然语言描述”自动映射成“建模指令序列”。你说一句“直径50mm、高80mm的圆柱底部均布四个直径6mm的安装孔”它直接给你在草图上画出圆、拉伸到位、再执行阵列打孔。它做的事情不是替代你的手速而是压缩从想法到第一个可评审模型之间的距离。1.2 从文本到CAD理解“可编辑”三个字的分量这里必须把Text-to-CAD和普通的文生图工具区分开。文生图比如Stable Diffusion那类生成的是像素矩阵你得到一张漂亮图片但图片导不进CAM做刀路也不能改尺寸让整个装配体联动。CAD模型的核心是“拓扑关系 参数化特征 可编辑历史”也就是软件里那个特征树。一根轴不是一堆点云它是“旋转体特征 端面倒角 键槽切除”一步步构建出来的每一级操作都有几何约束和尺寸参数。所以Text-to-CAD真正的技术难点不是生成一个“看起来像”的网格而是生成一条“与人类设计流程一致”的几何构造链。现在很多学术项目采用的正是“序列生成”策略模型发布的不只是顶点坐标而是一段类似程序代码的建模操作序列比如“在ZX平面新建草图画矩形宽60、长80拉伸15mm选取边线倒角半径2mm”。这种序列一旦落地用户就可以在CAD里打开特征树修改某个尺寸整个模型按逻辑带动更新。生成出来却没法改的模型在工程上只能算一个雕塑不能算CAD。1.3 它能做什么不能做什么说实话Text-to-CAD目前最适合的是概念设计和前期形态探索。客户说“我需要一个内部有肋板的方形外壳外观尽量简洁”这套工具可以快速给出一版满足大致尺寸的方案让你在评审会上有个能转动的三维物件可看。但如果你要求精确的公差配合、齿轮啮合关系、多零件装配约束它还不稳定。所以落地时我把它定位成“前级设计师”——AI负责把语言变成第一版几何人负责审稿、改参数、补工程细节。指望一贴提示词就得到量产图纸那是把它当科幻道具了。2. 技术路线与工具选型别一上来就拼算力2.1 三条主流路线第一次接触Text-to-CAD容易被各种概念绕晕。我建议先分清现在业界走的三条路线大语言模型 参数化建模序列把建模操作当成token序列用类GPT模型生成。代表思路像Text2CAD论文、Zoo的Text2CAD开源项目。输出结构完整能保留特征语义是机械领域最值得关注的方向。缺点是序列一长误差累积复杂零件容易断结构。扩散模型直接生成体素/网格类似文生3D的思路从噪声里“长”出一个模型。优点是造型自由度高适合游戏和可视化缺点是大都是“雕塑式”表面没有特征树后期转成参数化模型几乎要手动重做。检索 程序化模板先用语言检索最接近的已有模型再用参数约束修改尺寸。精度最稳定但泛化能力差适合法兰、轴、标准件这类形态变化不大的零件族。我在项目里主要研究第一条路线因为它最贴近“CAD原生”语境。评估的时候也不要被那种“能生成一个漂亮齿轮”的演示迷惑你要试的是生成的模型能不能改一个齿数、能不能压制一个特征、输出能不能被CAM识别。2.2 开源代表Zoo-Text2CAD 的架构拆解如果你和我一样既想搞懂原理又没有几十万预算去买商业方案可以先从开源项目入手。Zoo-Text2CAD是我目前见过最“顺滑”的一个参考实现。它的基本逻辑是把自然语言描述交给一个基于Llama架构的模型解码模型输出一段中间表示通常是JSON格式的建模指令包含草绘元素、尺寸、拉伸深度、布尔运算等。拿到这段表示后项目再用确定性脚本调用Open CASCADE内核去执行把它转成真正的STEP实体。这个“先出序列、再执行几何”的设计非常聪明。为什么不直接用神经网络输出三角面片因为三角面片没法生成工程上需要的B-rep边界表示也没法关联尺寸。序列生成则保留了可追溯性而且错误更可控——模型算错一个尺寸你一眼能看出来比在一堆顶点里找窟窿高效得多。这个项目也给了普通人一个极低成本体验完整流程的窗口后面我会讲具体怎么跑通。2.3 商业平台与在线工具现状市面上已经有不少“文本生成3D”的产品比如Spline AI、Kaedim、Meshy但它们大部分面向游戏、动画、渲染输出是OBJ/GLB网格不是CAD原生格式。真正面向机械设计的商业工具还在探索期Autodesk和几家PLM厂商都在做“对话式建模”的尝试但大多还没开放到独立设计师能顺畅使用的程度。如果你公司已经购买了某主流CAD平台去官方插件商店搜“AI”、“Text to CAD”关键词往往比跨工具导来导去更靠谱。在线平台的好处是省去配环境但限制也多提示词审核、输出格式单一、模型不可控不太适合批量做产品评估。2.4 选型决策表我整理了一张表你可以根据自己实际场景快速对号入座使用场景推荐方向原因快速看外观造型接受非参数网格文生3D平台Meshy等速度快、门槛低适合渲染和演示需要可编辑特征树琢磨技术原理Zoo-Text2CAD开源、可复现输出STEP能进FreeCAD/Fusion零件族变体尺寸驱动企业模板 LLM参数抽取精度可控适合批量出图场景正式产品设计需要完整约束和关联等待主流CAD平台的AI插件与原生环境集成减少数据转换风险这套选型逻辑其实是“需求决定技术”先问自己要网格还是要B-rep再问能不能接受生成式出错率最后才考虑算力和成本。3. 在本地跑通Text2CAD环境、命令与踩坑实录3.1 硬件与依赖先说实话Text2CAD如果跑原尺寸模型显存是不小的门槛。7B到70B的参数规模建议显存至少在12GB以上最好有24GB。如果你手里只有一张普通的单卡也有两条路一是选量化版模型比如4-bit加载二是用官方打包好的小模型。前期测试阶段完全没必要硬上70B。环境方面我是在Ubuntu 22.04上搭的Python版本用3.10比较稳。核心依赖包括PyTorch、Transformers、Accelerate还有处理STEP转几何的pythonOCC也就是Open CASCADE的Python绑定。建议用conda先隔离环境不要污染已经有项目的解释器conda create -n text2cad python3.10 -y conda activate text2cad pip install torch torchvision --index-url https://download.pytorch.org/whl/cu121 git clone https://github.com/zoo-ai/Text2CAD.git cd Text2CAD pip install -r requirements.txt这里有个容易踩的坑如果直接pip install pythonOCC有些版本会跟系统里的OCCT库冲突。我后来用了conda安装OCC清理了一遍才正常。所以环境问题建议优先看项目README而不是依赖搜索引擎里的老教程。3.2 模型文件与目录结构模型权重一般放在HuggingFace上。下载的时候要注意仓库里有没有config.json、tokenizer文件、以及safetensors格式的权重目录。很多报错根本不是代码问题而是权重文件不完整或者版本对不上。把模型下载到一个独立目录例如models/ text2cad-7b/ config.json model.safetensors tokenizer.json ...推理脚本里通常需要一个 --model_path 或者LOAD路径参数直接指向这个目录就行。我第一次因为少下了tokenizer合并文件调用分词器时直接报IndexError排查了半小时才发现在仓库的下载说明里有一行“include all files”。3.3 生成一条提示词的完整链路假设我要生成一个“带中心孔和四个螺栓孔的六角法兰”。推理命令大致长这样python inference.py \ --model_path ./models/text2cad-7b \ --prompt a hexagonal flange with a center hole and four bolt holes \ --max_new_tokens 1024 \ --output_dir ./output运行后模型先输出一段JSON格式的构造序列描述草绘形状、拉伸高度、孔位坐标等。然后项目脚本会调用OCC执行这段序列生成STEP文件。整个过程有点像“让AI写一段CAD宏再用播放器把它跑一遍”。我实测第一次生成的版本孔位分布不太均匀中心孔的位置偏移了。当时以为是模型问题后来才发现是我提示词里没给基准面和孔距。注意提示词“均匀分布”是个陷阱它不会自动帮你算均布。你要明确说“四个孔中心距40mm排列成方形对称”它才能给对。3.4 后处理从STEP到可编辑模型很多人在这一步开始怀疑人生生成的STEP文件用FreeCAD打开是一个完整的“导入特征”特征树里只有一行“Body”根本没有可编辑的草图和拉伸。这是因为脚本为了效率把几何合并到一个实体里了。如果想让它真正可编辑有两种做法。第一种是直接读取原始JSON构造序列在FreeCAD里通过宏逐个执行建模命令让每一步变成独立特征。Zoo项目的输出中会保存这个序列不要只看STEP就把JSON删掉。第二种是改用CadQuery脚本建模把每一行指令翻译成提交操作再刷新特征树。我个人的经验是如果你只想要一个受控的模型用于后续装配那导入STEP就够了如果你要改尺寸、做变体必须保留序列文件走脚本化路线。3.5 常见报错与解决办法错误现象可能原因解决方法CUDA out of memory显存不足降低batch size或用4-bit量化版本JSON decode error输出被截断调大max_new_tokens或缩短提示词STEP打不开/导入报错Open CASCADE版本过旧升级pythonOCC或重新编译内核中文提示词乱码、效果差模型训练语料以英文为主改用英文工程描述中文只作辅助说明生成结果缺少某个孔特征堆叠太长被丢弃把孔位、数量拆成独立短句减少“and”并列记住跑通一个demo只是起点。你要把“报错-修参数-再运行”这个循环看成正常操作耐心多试几次。4. 提示词怎么写模型才不给你“抽象派”作品4.1 为什么提示词决定90%的成败Text-to-CAD模型本质上是条件生成模型它的输出空间由你给的语言输入约束。换句话说你说得越含糊模型发挥的空间就越大出错率也就越高。这和给人类设计师派活是一样的但人类会主动问你“基准在哪、公差多少”模型不会它只会默默给你一个“看起来合理”的几何。所以不要把提示词写成“一个好看的外壳”要写成“一个长90mm、宽60mm、高40mm的矩形外壳壁厚2mm顶部有6个直径5mm的散热孔四角倒角半径3mm”。我把它称为“工程三段式”第一句给全局类型第二句给特征和尺寸第三句给后处理动作。这样模型相当于拿到一张简化的图纸标注而不是一句广告词。4.2 一套可复用的提示词模板以板类零件为例我会这么写a flat rectangular plate, size 120mm by 80mm, thickness 5mm; a through hole with diameter 10mm located at the center; four screw holes with diameter 6mm located at the corners, 20mm from the edges; then fillet all outer edges with radius 1mm.分解一下第一句定义了零件的整体轮廓和主尺寸第二句定义中心特征第三句用“corner distance”的方式把四个孔的位置表达清楚第四句是收尾操作。每一步独立成句不多用连接词堆叠模型解码的时候不会漏特征。如果你要生成回转体也可以把“草绘轮廓——旋转”作为主线例如a hollow cylinder, outer diameter 40mm, inner diameter 30mm, height 60mm; a flange at the bottom, outer diameter 70mm, thickness 5mm; then chamfer the top inner edge with 2mm.注意所有尺寸数字后面一定要带单位模型默认毫米但你写“5-inch”它也不一定换算出错总归不如直接给毫米数省心。4.3 失败模式与修法微调提示词是个反复尝试的过程我整理了一些高频翻车现场孔数量不对常见于“several holes”“some holes”这类模糊量词。修法把数量明确写进句子比如“six holes arranged in a circle, 60mm pitch”。尺寸比例失真提示词里只写定性形容词比如“small”“large”模型容易给出奇怪比例。修法给绝对尺寸至少给一个参照物尺寸。倒角/圆角不生效如果写的是“make it smooth”模型大概率直接跳过。修法明确的“fillet radius 2mm”或“chamfer 1mm”。无法生成装配/多个零件目前很多模型默认单实体你描述“两个齿轮啮合”可能只输出一个齿轮甚至一团乱。修法把多零件拆成多个单实体提示词分别生成后再装配。4.4 温度与采样参数的影响除了提示词推理脚本里的温度参数也能明显影响输出。温度太高模型会“放飞自我”尺寸离谱、特征错位温度太低输出保守、结构简单但常常缺细节。我试下来0.7到0.9是一个比较合适的区间。想要稳定的工程结构就保持低温度想要探索多种造型才建议调高一点点。5. 落地实践从Demo到真实设计流程5.1 概念阶段的提速效果前阵子我给一个客户做三个设备底座的方案比选。按老流程每个方案都要从草图开始建一天做个两三个已经算快。后来我把Text-to-CAD接到流程里先针对客户给的文字需求生成五个粗版本再在FreeCAD里统一调整安装位置、壁厚等尺寸。实际体验下来一个结构部件的初稿时间从半小时压到了十分钟左右——注意我说的是初稿后面还有大量人工修正但至少“从无到有”这段被明显压缩。这个提速在早期方案讨论中价值很大。设计师可以给客户看多种结构倾向而不是拿着一个方案反复改。我也要提醒一句初稿的精度和可靠度不足以直接出图现阶段务必把它当作“讨论用的草稿”而不是“交付用的图档”。5.2 如何与主流CAD软件配合跑通之后最大的问题是怎么把它嵌入已有的设计流程。我目前主要有三种搭配STEP直接导入最省事适合做结构验证或干涉检查。但模型只带一个导入体不能直接改特征。JSON序列脚本化重建用CadQuery或FreeCAD宏逐条执行能保留参数化历史。改动尺寸很方便适合做变体设计。网格生成后重新拓扑如果目标形态以曲面外壳为主就别和CAD硬磕。先在文生3D工具里生成细腻网格再用逆向或重新建模转化最后丢进CAD做工程化。每条路线都有适用场景我的建议是不要一根筋求“一键到原生”。你在哪个环节花时间最多就把自动化放在哪个环节。5.3 局限性与合规性千万不要忽略一个事实Text-to-CAD生成的模型即使你看不出问题也可能存在隐藏的拓扑缺陷或尺寸矛盾。正式产品设计前一定要做干涉检查、有限元分析和图纸标注。模型不会帮你标注公差、表面粗糙度、热处理要求这些仍然是人的职责。另外企业环境里还要考虑数据和IP安全。云端在线工具用起来方便但你把产品需求描述传上去相当于把设计方案暴露给第三方。所以涉及敏感项目的团队我建议优先用本地开源模型至少数据和模型都掌握在自己手里。5.4 我判断的未来基于我在这个方向上的观察短期内Text-to-CAD不会让CAD设计师失业但它会改变“从文本需求到几何初稿”这个环节的劳动力结构。语言会成为设计的第一入口特征树仍然是设计落地的骨架。最终形态大概率是“对话式CAD”你对着软件说我要什么结构、什么约束它帮你把布线、打孔、阵列都做了你只负责在关键节点拍板。在现在这个时间点学会用语言精确描述几何已经是一门值得提前掌握的新技能。最后说个我踩出来的习惯不要拿“生成成功”当终点一定要把输出的STEP文件在另一个软件里重新打开、旋转一圈、甚至存一次验证拓扑有没有坏面。这个Text-to-CAD的项目我断断续续跑了三周最大的收获不是模型多准而是明白了“生成只是入口验证和修正才是工程日常”。如果你也想试试我建议先挑一个最简单的板类零件用一句话加一个拉伸跑通全流程再慢慢加孔、加倒角、加阵列。流程顺了后面再复杂的形态都是基于这个骨架长出来的。