ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Text-to-CAD:从自然语言到可编辑实体的技术路线与实测

Text-to-CAD:从自然语言到可编辑实体的技术路线与实测 干了这么多年CAD我最深的体会是绘图的瓶颈从来不在手速而在沟通。设计改需求口头说一句把这个孔往右挪三毫米你得打开图、选中对象、输入偏移量、检查干涉五个动作换一句话。而text-to-cad这个方向想解决的就是这件事——让计算机直接听懂那一句话把自然语言变成可编辑的CAD对象而不是一张只能看不能改的图片。这个方向最近特别热但要清醒地看到它跟你理解的AI画图完全是两码事。文生图生成的是像素text-to-cad生成的是带几何拓扑、可被尺寸驱动、能导入CAM加工的文件实体。我今天不打算只讲概念直接把技术路线、实测代码、落地工作流的坑都摊开聊聊我这个从AutoCAD入行、现在天天折腾参数化设计的人怎么看这个新玩具。1. 一句话出图的本质从图片生成到可编辑实体的认知转变1.1 先区分三样东西文生图、文生模型、文生CAD文件很多人把text-to-cad跟AI生成图片混为一谈这是最大的误区。文生图如Midjourney、Stable Diffusion生成的是像素矩阵你放大看全是色块无法选中任何一条线、任何一个面。图纸上看起来再像样也无法进CAM加工因为计算机拿不到几何数据。文生模型如文本生成3D网格生成的是三角面片网格常用于游戏、渲染预览但网格不等于CAD实体——网格没有参数化历史没有精确的直径、厚度、公差机械工程师拿到手也改不动关键尺寸。文生CAD文件才是我们要的输出DXF、DWG、STEP这类格式里面的圆是一个圆心半径的圆实体孔是一个贯通特征板厚是一个可修改的参数。这样的文件才能真正进入下游的加工、装配、有限元分析流程。我见过不少团队拿着AI画得很漂亮的结构图来找我聊落地问我能不能直接转给工厂答案都是不能。做CAD工具链的人必须一开始就把目标锁定在第三种生成真正可编辑的CAD实体。1.2 生成什么格式才算数DXF、DWG与STEP的边界格式选择直接影响能不能用。我按自己的经验划分如下格式适用阶段优缺点实测感受DXF二维草图、激光切割、线切割文本化结构、易解析、兼容性最广图层、线型管理要格外小心见第5章DWG二维制图、施工图原生AutoCAD格式、信息最全生态封闭解析库不多国产CAD兼容性参差STEP三维实体交换所有主流三维软件通吃、带精确几何文本到3D的落地格式首选跟参数化配合极佳从我的实测来看最务实的组合是三维实体走STEP二维下料图走DXF。前者保证设计数据不丢失后者保证车间能直接切。如果你一开始就让模型生成DWG那等于给自己套上了格式枷锁。2. 技术路线怎么选LLM代码生成、实体映射与几何推理的取舍自然语言到CAD绕不开一个核心问题计算机需要一个中间表示来翻译语言。目前主流的做法有三条各有各的脾气。2.1 路线ALLM把语言翻译成代码以CadQuery和OpenSCAD为例这是目前社区最活跃的方向。思路很简单CAD本身有脚本接口大模型擅长写代码那就让模型直接生成CadQuery或OpenSCAD代码执行代码输出实体。这条路我实测下来最大的好处是生成结果天然带参数化历史。比如模型生成了一个板件厚度变量叫thickness下游改料厚时不用重新生成改一个变量即可。对老工程师来说这就是可持续交付的东西。缺点是大模型写代码会幻觉经常生成一个看起来合理但运行就报错的脚本需要你懂代码才能修。本质上你还是得会CadQuery的API只是从自己写变成了AI写初稿、你改bug。2.2 路线B结构化JSON驱动API实体创建一些商业CAD包括部分国产CAD提供API或命令流接口LLM的任务不是写代码而是输出结构化的JSON——里面写明创建长方体长120宽60高8在四个角打直径10的孔。程序解析JSON后调用CAD原生API完成建模。这条路的优势是输出格式可控AI胡说八道的概率低因为JSON的schema限制了字段范围。缺点是表达复杂特征放样、扫掠、布尔差集时JSON会膨胀得非常臃肿维护困难。2.3 路线C参数化模板加自然语言槽位填充如果你只做某一个品类的设计比如钣金箱体、安装板、法兰这是性价比最高的思路。建好一套参数化模板让LLM从一句话里抽出长度、宽度、厚度、孔径等槽位填进模板生成实例。我没有贬低这条路的意思实际上在产线上它最实用——你不需要一个万能AI只需要一个能听懂人话的口令机。缺点是通用性差换品类等于重做模板。三条路线简单对比维度路线A代码生成路线BJSONAPI路线C模板填槽通用性高中低参数化能力强中强对AI幻觉容忍度低报错频繁高schema兜底最高上手成本需会CadQuery/OpenSCAD需开发解析器需建参数模板我个人倾向个人玩家和通用场景选A工具链团队选B工厂内部做专机专件选C。3. 一次完整实操用CadQuery把一句中文需求变成可编辑的安装板光说不练是假把式。我直接上一段能跑通的完整例子目标是让AI从一句生成一块长120毫米、宽60毫米、厚8毫米的长方形安装板四角各打一个直径10毫米的圆孔孔中心距边缘15毫米变成可编辑的STEP文件。3.1 环境准备与依赖安装CadQuery 依赖 OCPOpen CASCADE Python 绑定Windows 上最稳的安装方式是 condaconda create -n cadq -c cadquery -c conda-forge cadquerymaster python3.10 conda activate cadq这套环境装好以后每次要用先激活环境输入python进入解释器或保存为.py文件运行。实测下来conda直接装比pip装省心很多尤其避开C运行库冲突。我早期在这上面栽过跟头后面第5章会把安装常见报错单独讲。3.2 能跑通的生成脚本把下面内容保存为make_plate.pyimport cadquery as cq # 参数区这部分将来就是LLM抽槽位后填充的地方 length 120.0 # 板长(120mm) width 60.0 # 板宽(60mm) thickness 8.0 # 板厚(8mm) hole_d 10.0 # 安装孔径(10mm) hole_off 15.0 # 孔中心到板边的距离(15mm) result ( cq.Workplane(XY) .box(length, width, thickness) # 以原点为中心创建长方体 .faces(Z) # 选中顶面 .workplane() # 在顶面上新建工作平面 .rect(length - 2 * hole_off, width - 2 * hole_off, forConstructionTrue) .vertices() # 拿到构造矩形的四个角点 .hole(hole_d) # 在四个角点打孔 ) # 导出三维实体用STEP二维图纸用DXF result.export(mounting_plate.step) result.export(mounting_plate.dxf) print(生成完成mounting_plate.step / mounting_plate.dxf)运行python make_plate.py没有任何报错的话同目录下会多出两个文件。把mounting_plate.step拖进任何主流三维CAD我用中望CAD验证过或免费查看器你会看到一个带四个安装孔的板实体鼠标点选圆孔边缘能选中完整的圆弧特征。3.3 导出一定要验证肉眼审美不可靠生成完文件别急着庆祝我踩过这样的坑STP能打开但DXF导出后用AutoCAD打开全是散乱的样条曲线压根没有圆实体——原因是CadQuery默认对曲面求交后输出的边类型在某些导出配置下会降级成拟合曲线。排查方法很简单在脚本里加几行用exportTypes显式控制# 显式按几何边类型导出防止圆变成样条 exportOpts { write_as_2d: True, unit: mm, } result.export(mounting_plate.dxf, exportOptsexportOpts)这个细节备注极其重要。我见过不止一个新人在群里发问为什么我AI生成的DXF圆孔导出来全是折线十有八九就是忽略了导出选项。3.4 参数化才是text-to-cad命根子为什么前面强调可编辑因为工程图纸百分之八十的时间都在改。改孔距、改板厚、改孔径这是日常。text-to-cad如果生成的是死模型一点意思都没有如果生成的是参数化代码那这些改动只是换一个数字重新跑一遍的事。我把上面的hole_off从15改成25重跑脚本STEP文件里四个孔的位置自动跟着变整个模型没有一处破面、没有一处尺寸冲突。这就是参数化的威力——AI写的代码是活的你的设计意图是可延续的。这一点反而是很多从SOLIDWORKS转过来的同事不太适应的他们习惯建模后改尺寸而text-to-cad鼓励的是改代码再生成思路完全反过来。4. 把text-to-cad接进真实工作流地形、服装、钣金与国产CAD的落地姿势聊完通用玩法再聊聊真正能帮你省力的落地场景。最近热词里出现了cad切地形瑞丽服装cad金林钣金cad中望cad这反映了text-to-cad在不同行业的真实需求。我逐一说说自己的判断。4.1 测绘地类切地形、CASS命令与图纸合并的配合地形图大概是CAD应用里最脏的一个场景。测绘佬经常遇到从无人机或全站仪导出的原始地形点要在CAD里生成三角网、切剖面、还要跟周边地块合并。传统做法是导入点文件后用南方CASS的命令处理比如在CASS里用bl命令处理地物边界或图块定位。这类工作重复度极高。你能想到的text-to-cad玩法是帮我按这个范围从DEM数据里切出一条剖面线生成断面图标注高差和坡比。哪怕现在大模型还没法直接操作CASS的私有数据格式但逻辑链路是通的先用脚本解析地形数据再由LLM生成标准CAD脚本去调用剖切算法。实测下来在DXF层面做二次开发、让python批量对cad修改成为常态比人肉点击的效率高一个数量级。搞地形的人不见得需要学复杂的编程但至少要把CAD脚本接口吃透。4.2 服装制版与钣金行业文本到工艺语言的本质差异服装CAD比如瑞丽服装CAD和钣金CAD金林钣金CAD是另一个有意思的分支。这两个行业用CAD核心不是三维实体而是二维样片和展开图。服装制版师说的话是前片腰省收1.2公分袖笼下落0.5钣金师傅说的是1.5倍板厚的内R角展开后扣除两个弯折系数。text-to-cad要落地这两个行业难点不在建模而在工艺知识库。就算LLM听懂了收省和展开扣除它也得知道每个企业的折弯系数表、每个版师的放码规则。所以最实际的路线是把工艺参数表喂给AI让AI在这些约束下生成图纸而不是让它自由发挥。我在走访钣金厂时见过有人把金林钣金CAD的展开规则写成了JSON字典再让LLM做槽位填充效果出乎意料地好。这再次印证了路线C在特定领域里的价值。4.3 国产CAD与批量自动化中望CAD上跑通text-to-cad的可能性聊到国产CAD中望CAD是我用的比较多的。它的优势是对DWG格式的兼容度高而且还带着一套类AutoLISP和COM接口二次开发路径比较顺。我试着把CadQuery生成的DXF导入中望CAD图层和线性基本都能正确识别反过来用中望的API做批量修改、图纸合并、自动出图也是有可行性的。举个例子一批导入的DXF没有统一图层命名导致合并图纸后属性混乱。传统做法是打开每张图手动改图层但我可以写一段脚本让LLM生成把名为BoltHole的图层统一重命名为FC_孔这样的批处理逻辑再调用中望API执行。这类活儿看似不起眼但十张图、二十张图地跑下来省下的时间是实打实的。4.4 别忽略最基础的CAD需求安装与显示绕回那些网络热词里出现在榜首的cad安装教程安装cad一直出现c2005错误cad shx字体大全——这些才是每天真实世界里的主流求助。text-to-cad再炫酷工具装不上、字体乱码、卸载不干净挡住二次安装一切都白搭。我的经验是安装CAD类软件前先装齐VC运行库特别是2005到2019的常见版本很多安装报错c2005本质上不是CAD本身的问题而是缺少可再发行运行库。字体方面下载一个覆盖全的SHX字体文件夹放到CAD的Fonts目录基本能解决99%的乱码问题。卸载CAD尤其要注意注册表残留是二次安装的最大杀手用官方卸载工具加手动清理注册表才能做到干净卸载。这块虽然是入门级内容但恰恰是text-to-cad这种高级玩法的前提你总不想让模型的输出因为本机环境问题打不开吧。5. 实测踩坑记录尺寸幻觉、单位混乱与DXF图层丢失的排查链路既然聊实操就绕不开各种充满戏剧性的翻车现场。以下是我在text-to-cad这条路上反复踩过的几个坑按排查链路展开希望能让你少走弯路。5.1 尺寸幻觉和单位混用的排查链路第一次让LLM生成CadQuery代码时我说板子长120它生成了length 0.12——因为它默认的建模单位是米而我说的是毫米。这个问题还不算离谱更离谱的是有时候LLM会把圆周率算成3生成一个切不开的圆。排查链路很清晰第一步在代码里写死尺寸单位并加注释比如# 所有尺寸单位均为毫米让生成代码时自带约束第二步在参数区加一个UNIT 1.0最后导出时统一乘以转换系数让尺寸换算集中在一处第三步加一个断言或打印语句比如assert length 10 and length 1000一旦LLM生成的尺寸不在工程合理范围内就直接报错。这三步做完再没出现过按毫米说却生成了米的情况。记住不要把单位换算散落在各条代码里一定要集中管制。5.2 DXF导出后的线型、图层、字体三座大山这是最坑爹的一关。CadQuery默认生成的DXF图层通常就一个线型也是Continuous这跟你平时画CAD图对中心线用CENTER图层、虚线用DASHED的洁癖完全两回事。拿着这样的DXF给加工厂老师傅看一眼就想扔回来。我建议的做法是别急着用模型直接导出DXF而是让LLM生成一段后处理脚本把DXF里的线按几何类型分类——圆孔放到孔图层外轮廓放到轮廓图层中心标记放到中心线图层。这个分类逻辑用CadQuery或ezdxf库都很好实现。我实测用ezdxf做后处理比强行让CadQuery一次到位要稳定得多而且代码量很少import ezdxf doc ezdxf.readfile(mounting_plate.dxf) msp doc.modelspace() for e in msp: if e.dxftype() CIRCLE: e.dxf.layer FC_HOLE elif e.dxftype() LINE: e.dxf.layer FC_OUTLINE doc.saveas(mounting_plate_clean.dxf)这个脚本能把圆和直线分开图层加工厂拿到手直接就能做工艺规划。当然如果你的DXF里还有样条曲线前面第3章提过那就要先解决导出类型的问题再谈分图层。5.3 圆角和孔的工艺语义丢失text-to-cad生成的圆角有时候在几何上是正确的但在工艺语义上是错的。比如钣金件AI生成一个R1.2的圆角看着没问题但钣金厂会反问这个R角是内R还是外R下模豁口多大要不要扣除板厚这些工艺语义是纯几何模型给不出来的。我的处理办法是在提示语里就把工艺要求写进去比如板厚3mm内R角等于板厚外R角自动加板厚。但这里有个现实问题LLM对自动加的理解飘忽不定有时候加了有时候没加。最好是在参数区里用变量显式定义inner_radius thicknessouter_radius thickness 1.5让逻辑一目了然不要交给AI自由发挥。5.4 环境安装与卸载的常见错误对应手册前面4.4提到过安装问题这里把排查链补完整。装CadQuery或CAD本体时最常看到的三类错误C 2005 cpi error缺少VC运行库装对应的运行库版本python API 导入失败conda环境与系统环境混乱用干净的新环境重建卸载不彻底二次安装失败注册表里有残留用官方卸载工具清理或用注册表清理工具扫一遍。这三件事看似基础但绝大多数text-to-cad跑不起来的问题最终都指向环境而不是算法或代码本身。建议一律从干净的conda环境开始少走很多弯路。5.5 老话题新解法SHX字体、图纸合并与CASS命令协作最后谈谈那些搜索引擎里高频出现的词——shx字体大全、图纸合并、cass命令。表面看这些跟text-to-cad无关但实际上它们是同一个故事的下半场AI帮你生成图纸第一稿而你自己的CAD环境如果基础配置不够强后处理照样卡死。字体缺失导致标注乱码、图纸合并导致图层重复、CASS的bl命令跟普通CAD图层互不兼容——这些坑我都实打实撞过。方案很简单先维护一份个人CAD环境基线——装好常用SHX字体、做好图层命名规范、统一单位模板、写好几个常用批处理脚本。有了这个基线再玩text-to-cad就会顺滑很多因为AI生成的结果能直接套进你的规范里而不是反过来迁就AI的默认输出。6. 写在最后text-to-cad不会让CAD消失只会改写CAD的打开方式玩了大半年text-to-cad我越来越确信一件事这玩意儿不会让CAD工程师失业反而会让CAD的图纸审核环节变得更重要。当AI能快速生成结构合理的初稿时真正值钱的不是画出来而是判断AI画得对不对、工艺上能不能做、有没有触碰设计规范。换句话说你要从一个画图的人变成一个会提需求、会审方案、会调参数的设计指令官。我个人现在最顺手的用法是AI生成初稿 参数化修改 工艺验证三连。每天开工第一件事把客户的要求整理成一条自然语言指令让AI跑出第一版STEP然后我打开中望CAD或者SolidWorks看干涉、查工艺、调参数确认无误后再丢给下游。这个过程里AI是一个处理初稿的实习助理我才是最终签字的那个人。如果你想开始玩我的建议是从一个最简单的零件入手比如今天文章里的安装板。先跑通一条完整的链路——自然语言到代码、代码到STEP、STEP到CAD验证再慢慢扩展复杂度。别一上来就想让AI生成整台装配体那只会让你怀疑人生。工具就在那里关键是先用起来一步步把AI变成你手里的新图纸笔。
返回列表