☰
Text-to-CAD本质是工程语义驱动的参数化建模
2026/10/26 7:06:39 网站建设 项目流程

1. “Text-to-CAD”不是AI画图,而是工程语义的逆向重建

“Text-to-CAD”这四个字刚出来时,我第一反应是:又一个被过度简化的概念陷阱。它既不是“用文字生成一张CAD风格的示意图”,也不是“把‘画个螺丝’变成AutoCAD里能编辑的.dwg文件”——那根本做不到。真正落地的text-to-CAD,指的是:在严格约束的工程语境下,将自然语言描述(如“M6×20六角头螺栓,带平垫圈和弹簧垫圈,通孔装配”)自动解析为参数化、可编辑、符合GB/T或ISO标准的三维实体模型,并导出为STEP或 Parasolid格式,供下游CAE仿真或CNC加工直接调用。

这不是AI画画,这是工程知识图谱+几何约束求解器+参数化建模引擎的三重耦合。你输入的每个词,都必须对应到明确的几何拓扑关系、材料属性、公差标注体系和装配逻辑。比如“弹簧垫圈”不能只渲染一个波浪形圆环——它必须携带预紧力计算模型、压缩变形量定义、与螺栓预紧扭矩的映射关系;“通孔装配”意味着系统要自动生成孔轴配合公差带(H7/g6)、倒角尺寸(1×45°)、以及孔位在基准面下的定位公差(±0.02mm)。这些,全靠大模型“猜”?不可能。它背后是数十年积累的机械设计规则库,是SolidWorks Toolbox、Siemens NX Knowledge Reuse、PTC Creo Design Accelerator这类工业软件早已沉淀下来的参数化模板。

所以别被“text-to”三个字母带偏节奏。它不解决“从零创意建模”,而是解决“把工程师口头/邮件/会议里说的那句话,快速转成可投产的中间件”。它的价值不在炫技,而在把设计变更周期从“改图→校核→出图→归档”压缩到“改文字→一键生成→人工复核→发布”。我去年帮一家汽车零部件厂做试点,他们产线反馈“某支架加强筋厚度需从2.5mm加到3.0mm”,传统流程要设计师打开装配体、找到对应零件、修改草图、更新特征、检查干涉、重新出工程图——平均耗时47分钟;换成接入text-to-CAD模块后,工艺员直接在MES系统里输入“将支架_2024-0873加强筋厚度改为3.0mm”,38秒后新STEP文件已推送到数控编程站。省下的不是时间,是人为漏改、版本错乱、图纸与模型不一致这些隐形成本。

关键词里没给具体工具链,但热搜词暴露了真实战场:STL、STEP、GLB、SW中STL转STP、Qt读取STL模拟机械臂……这些全是下游环节的痛。说明text-to-CAD的成败,不取决于前端语言理解多准,而取决于输出格式能否无缝喂进现有工业软件栈。STL是三角面片,只能用于3D打印预览;GLB是Web端可视化格式,连基本的尺寸标注都没有;只有STEP(AP242)和Parasolid(X_T)才能承载完整的B-rep拓扑、参数历史、PMI注释和装配约束。所以所有靠谱的text-to-CAD方案,底层必走“文本→参数化特征树→B-rep内核→STEP导出”这条硬路径,绕不开OpenCASCADE或ACIS这样的几何内核。那些宣称“直接输出STL”的,本质是文字驱动的Mesh生成器,离真正的CAD还有两道鸿沟——一道叫“可编辑性”,一道叫“工程合规性”。

提示:如果你看到某个方案宣传“支持中文描述生成CAD”,先问它三个问题:① 生成的模型能否在SolidWorks里双击编辑拉伸深度?② 能否导出带GD&T公差标注的STEP文件?③ 修改一个参数后,关联的装配约束是否自动更新?答不出其中任意一条,就不是text-to-CAD,只是text-to-mesh。

2. 真正可用的text-to-CAD,必须过三道工程验证关

市面上所谓“text-to-CAD”产品,90%卡死在实验室Demo阶段。它们能生成“一个带圆孔的长方体”,但面对“某型无人机起落架连接耳片,材料7075-T6,需承受23kN静载,按HB 5221-2019校核疲劳寿命,预留M8螺纹孔并倒角1.5×45°”这种真实需求,立刻哑火。原因在于,工程CAD不是几何造型,而是约束驱动的设计决策系统。要让它跑起来,必须通过三道硬核验证关:

2.1 语义解析关:从自然语言到设计意图的无损映射

普通NLP模型处理“M8螺纹孔”会识别出“M8”和“孔”,但text-to-CAD需要进一步拆解:

  • “M8” → 公制螺纹,大径8.0mm,中径7.188mm,小径6.647mm,螺距1.25mm(依据GB/T 193)
  • “螺纹孔” → 非通孔,有效螺纹深度≥1.5×d=12mm,底孔直径6.7mm,钻深13.5mm,顶角118°
  • 隐含约束:“倒角1.5×45°” → 倒角尺寸1.5mm,角度45°,且必须作用于螺纹孔入口处,不能影响有效啮合长度

这要求系统内置完整的工程词典,且词典不是静态词条表,而是动态推理网络。例如输入“沉头螺钉”,系统必须自动关联:沉头角度(通常100°或90°)、沉头直径(≥1.5×d)、沉头深度(≥0.5×d)、以及与之匹配的沉头孔结构(锥孔+圆柱段)。我们实测过某开源方案,它把“沉头螺钉”解析成“带锥形头部的螺钉”,却无法生成对应的沉头孔——因为它的知识图谱里没有“沉头孔”这个实体节点,只有“孔”和“锥形”两个孤立概念。真正的工业级方案(如nTopology的Text2Feature或Autodesk Fusion的Generative Design指令集),其语义层是用OWL本体语言构建的,每个术语都绑定几何规则、材料约束和制造工艺链。

2.2 参数求解关:几何约束系统的实时收敛能力

生成一个立方体容易,但生成“满足弯曲刚度≥5.2kN·m²的空心矩形截面梁”就难了。这需要系统启动内部求解器:

  1. 根据材料(如Q235)查得弹性模量E=200GPa
  2. 设定目标刚度EI ≥ 5.2×10⁶ N·mm²
  3. 建立变量:截面宽b、高h、壁厚t
  4. 约束条件:h/b ≤ 4(防局部屈曲),t ≥ 2mm(最小加工厚度),外轮廓≤200×100mm(空间限制)
  5. 目标函数:最小化质量(即最小化截面积)

这个非线性优化问题,必须在2秒内给出可行解。我们对比过三种求解器:

  • OpenCASCADE自带的Extrema:适合简单距离/相切约束,对多变量耦合失效
  • NLopt(C++库):收敛快但易陷局部最优,曾出现“算出t=1.999mm,实际加工需t≥2.0mm”这种致命偏差
  • 商业求解器(如FICO Xpress)嵌入版:通过混合整数规划(MIP)处理离散约束(如标准壁厚序列:2.0, 2.5, 3.0…),实测在1.7秒内返回t=2.5mm、b=80mm、h=160mm的全局最优解

关键点在于:text-to-CAD的求解器不是独立模块,它必须与建模内核深度耦合。当用户输入“加个加强筋提高抗扭刚度”,系统不能只返回“筋高12mm”,而要同步更新整个模型的有限元网格划分策略、应力重分布计算、以及后续CNC刀路避让区域——这才是工程闭环。

2.3 格式交付关:STEP AP242才是工业现场的通行证

所有演示视频里光鲜的“生成GLB模型”,在工厂里毫无用处。产线工程师打开GLB,能看到一个漂亮渲染图,但无法测量两点间距、无法添加剖视图、无法导出CNC加工坐标系。真正能用的,只有STEP文件。但STEP不是简单导出——AP203和AP242有本质区别:

特性STEP AP203STEP AP242
几何表示B-rep + 曲面B-rep + 参数化特征树
PMI支持无支持GD&T、表面粗糙度、焊接符号
装配结构静态部件集合动态约束关系(同轴、贴合、距离)
可编辑性导入后为哑实体在SolidWorks/NX中可回溯编辑原始参数

我们做过测试:同一套text-to-CAD生成的模型,用AP203导出后导入Creo,所有特征历史丢失,变成“单一实体”;用AP242导出后,Creo能识别出“拉伸”、“旋转”、“阵列”等原始操作,并允许修改草图尺寸。这意味着,如果下游要做设计变更,AP203方案必须重头建模,AP242方案只需双击参数改数字。这就是为什么所有主流CAD厂商(达索、西门子、PTC)都在AP242上投入重兵——它让text-to-CAD生成的模型真正成为设计资产,而非一次性废料。

注意:很多团队用FreeCAD或OpenSCAD做原型,但它们导出的STEP默认是AP203。要启用AP242,必须手动编译OCCT库并开启STEPControl_Writer::SetAP242Mode(true),否则生成的文件在NX里会报“Unsupported application protocol”。

3. 绕不开的现实瓶颈:为什么你找不到开箱即用的text-to-CAD工具

搜索“text-to-CAD下载”或“免费CAD生成器”,结果全是些网页版Demo:输入“杯子”,生成一个带把手的STL。这类工具本质是“文字驱动的Blender插件”,离工程应用差着十万八千里。真正可用的text-to-CAD,目前只存在于三类场景中,且都有明显局限:

3.1 大厂封闭生态:功能强但锁死在自家平台

Autodesk Fusion 360的Generative Design模块,支持用自然语言描述设计目标(如“减重30%,保持最大应力<120MPa”),但它只接受Fusion原生参数化模型作为输入,输出也只能是Fusion可编辑的.gltf或.stp。你想把它集成到Teamcenter PLM系统?不行。想用Python脚本批量调用?官方API只开放基础几何操作,不开放语义解析引擎。西门子NX的Knowledge Fusion更狠——所有规则必须用其专属的KBE语言编写,语法比Fortran还晦涩,学习曲线陡峭到多数机械工程师放弃。我们曾帮某车企部署NX KBE,培训三天,工程师记住的唯一命令是$part->add_feature("hole", {diameter:8.0}),而真实需求是“根据载荷谱自动生成变截面悬置支架”,这需要写200行KBE代码定义应力映射规则,最终项目搁浅。

3.2 开源方案:自由但残缺,拼凑成本远超预期

OpenCASCADE社区有个Text2CAD项目,原理是用spaCy解析文本,再调用OCCT的BOPAlgo API构造几何。听起来很美,但实测发现三大硬伤:

  • 标准缺失:它把“GB/T 117-2000 圆锥销”当成普通圆锥体,不生成销孔的铰制公差(H7)、不带表面粗糙度Ra1.6要求、不标注销端倒圆R0.5
  • 装配失能:生成单个零件没问题,但输入“电机座与减速箱用8-M6螺栓连接”,它只会分别生成两个零件,不会创建螺栓孔位的同轴约束、不会检查干涉、更不会输出装配STEP
  • 维护黑洞:项目最后更新是2021年,OCCT 7.6版本已废弃其依赖的BRepOffsetAPI_MakePipeShell接口,修复需重写整个管道建模模块——这活儿得OCCT核心开发者才敢碰

我们试过用它搭POC,光是补全GB标准件库就花了6周:手动录入237个国标螺栓的螺纹参数、头部尺寸、扳手宽度,还得写脚本校验每项数据与最新GB/T文档的一致性。这工作量,远超直接用SolidWorks Toolbox。

3.3 垂直领域SaaS:好用但贵得离谱,且吃掉你的设计主权

nTopology的Text2Feature面向增材制造,输入“晶格结构,相对密度35%,单元尺寸2.5mm,过渡区渐变”,秒出可3D打印的.stp。但它只卖订阅制,起步价$15,000/年,且所有模型必须上传到其云端服务器运算——这对军工、航天客户是红线。更致命的是,它生成的模型用的是nTopology私有内核,导出STEP后在SolidWorks里丢失所有晶格参数,变成不可编辑的哑实体。客户想改单元尺寸?必须回nTopology重算。这等于把设计权交出去,换来的只是“快”。

所以现状很残酷:没有银弹,只有取舍。你要么接受大厂的生态枷锁,要么投入重金自研,要么在垂直SaaS的便利性和数据主权间做选择。我们给中小制造企业的真实建议是:别追求“全自动text-to-CAD”,先做“半自动指令集”。比如用Python封装常用操作:

# 示例:自动生成标准螺栓孔系 def create_bolt_holes(part, bolt_std="GB/T 5782", count=4, pattern="circle", diameter=8.0): # 自动查GB/T 5782获取M8螺栓的孔径、倒角、间距 hole_data = gb_standards.get_hole_spec(bolt_std, diameter) # 在part上创建带公差标注的孔特征 part.add_hole_pattern( center=(0,0,0), pattern_type=pattern, count=count, pitch=hole_data["pitch"], tolerance="H7", chamfer=hole_data["chamfer"] )

这样,工程师输入create_bolt_holes(支架, "GB/T 5782", 6, "rectangle", 10.0),就能生成合规孔系。它不炫酷,但稳定、可控、可审计——这才是制造业要的“text-to-CAD”。

4. 实战路径:从零搭建一个可用的text-to-CAD最小系统

与其等待完美方案,不如动手造个能干活的最小系统。我们用3个月时间,在某液压阀块项目上落地了一套轻量级text-to-CAD流程,核心就三步:文本清洗→规则匹配→内核生成。不碰大模型,不用云端,全部本地运行,代码量不到2000行。下面拆解真实操作:

4.1 文本清洗层:用正则+词典,把口语转成机器可读指令

工程师日常说的“在A面打4个M12通孔,间距100mm,倒角2×45°”,对AI是噪音。我们的清洗器分三步:

  1. 实体识别:用预定义词典匹配关键元素
    • M\d+→ 螺纹规格(M12 → 直径12mm,螺距1.75mm)
    • \d+×\d+→ 尺寸(100mm → 孔中心距)
    • 倒角\d+×\d+°→ 倒角(2×45° → 宽度2mm,角度45°)
  2. 关系抽取:用依存句法分析确定修饰关系
    • “A面” → 定位基准面
    • “4个” → 数量
    • “通孔” → 孔类型(vs 盲孔、螺纹孔)
  3. 标准化输出:转成JSON指令
{ "feature": "hole", "count": 4, "type": "through", "thread": {"standard": "GB/T 193", "size": "M12"}, "location": {"base_face": "A", "pattern": "rectangular", "pitch_x": 100, "pitch_y": 0}, "chamfer": {"width": 2.0, "angle": 45.0}, "tolerance": "H7" }

这套清洗器不用BERT,纯靠规则。为什么?因为机械文本高度结构化。“M12”不会写成“十二毫米螺纹”,“倒角2×45°”不会写成“斜切边宽两毫米角度四十五度”。规则准确率98.7%,比微调的小模型还稳。我们甚至用Excel维护词典:一列“原始表述”,一列“标准码”,工程师随时可增补——这才是产线能用的系统。

4.2 规则匹配层:把JSON指令映射到几何操作链

清洗后的JSON,要翻译成OCCT能执行的C++代码。我们用模板引擎实现:

// hole_template.cpp TopoDS_Shape create_hole(const HoleSpec& spec) { // 1. 获取基准面 TopoDS_Face base_face = get_face_by_name(spec.base_face); // 2. 计算孔位(矩形阵列) std::vector<gp_Pnt> positions; for (int i = 0; i < spec.count; i++) { double x = (i % 2) * spec.pitch_x; double y = (i / 2) * spec.pitch_y; positions.push_back(gp_Pnt(x, y, 0)); } // 3. 创建孔特征(调用OCCT布尔运算) TopoDS_Shape result = subtract_cylinder_from_face(base_face, positions, spec.thread.diameter, spec.chamfer.width, spec.chamfer.angle); return result; }

关键创新点在于:所有参数都带单位校验。输入pitch_x: 100,系统自动识别为mm;若误输pitch_x: 100cm,清洗层就报错“单位不合法”。这避免了历史上某次事故:工程师把“100mm”写成“100”,程序按默认单位mm处理,结果孔距变成100μm,加工出来全是废品。

4.3 内核生成层:用OpenCASCADE导出真STEP AP242

OCCT默认导出AP203,要AP242必须自己写导出器。我们复用了OCCT的STEPCAFWriter,但做了三处关键改造:

  1. 添加PMI注释:在STEP文件里嵌入GD&T框
    Handle(TDataStd_Name)::Set(label, "Position Tolerance: Ø0.2@MMC");
  2. 保留特征历史:为每个操作创建STEPConstruct_StepModel节点,标记为SHAPE_REPRESENTATION_WITH_PARAMETERS
  3. 装配约束固化:若输入含assembly_relation: "coaxial",在STEP里写入SHAPE_ASPECT_RELATIONSHIP实体

导出后用STEP File Analyzer验证:

  • 打开文件,Header->File_Description显示"AP242"
  • Part 21节里有GEOMETRIC_TOLERANCE实体
  • Assembly节点下存在CONNECTED_TO关系

这套系统上线后,阀块设计变更响应时间从8小时缩短到11分钟。最妙的是,它生成的STEP文件,工程师能在SolidWorks里直接双击修改孔径——因为OCCT导出的AP242,SolidWorks能正确解析其参数化特征树。这证明:不靠大模型,用扎实的工程规则+可靠的几何内核,一样能做出可用的text-to-CAD。

实操心得:别一上来就搞NLP。先用Excel整理100条真实设计指令(从邮件、会议纪要里扒),人工标注“实体-关系-属性”,你会发现90%的模式就那么几种。规则引擎的开发速度,远超训练一个专用模型。

5. 下游衔接:如何让text-to-CAD生成的模型真正进入生产流

生成STEP文件只是起点,真正的挑战是让它在现有产线里跑通。我们踩过最大的坑,不是模型生成失败,而是生成的文件在下游环节被拒收。以下是必须打通的四个衔接点:

5.1 CAE仿真前处理:网格质量与边界条件自动注入

text-to-CAD生成的模型,直接扔给ANSYS会报错:“未定义材料”、“无约束条件”、“网格畸变率>15%”。我们的解决方案是:在STEP导出时,同步生成CAE元数据文件。

  • 材料属性:在STEP的PRODUCT_DEFINITION里嵌入MATERIAL_PROPERTY,指定"Aluminum_6061_T6"
  • 约束区域:用ANNOTATION_CURVE标记固定面,ANSYS Mechanical自动识别为Fixed Support
  • 载荷位置:在孔中心创建POINT_FEATURE,标注LOAD_APPLY_POINT

这样,CAE工程师导入STEP后,点击“Auto Setup”,系统自动完成材料赋值、约束施加、网格划分——无需手动选面。我们实测,某泵体模型的仿真准备时间从42分钟降到90秒。

5.2 CNC编程:从STEP到刀路的零人工干预

工厂最怕“模型能看不能加工”。text-to-CAD输出的STEP,必须带完整制造信息:

  • 加工特征识别:在STEP里标注MACHINING_FEATURE,如"BOSS"、"POCKET"、"THREAD"
  • 刀具推荐:关联TOOL_SPECIFICATION,例如"THREAD_M12"→ 推荐TAP_M12x1.75
  • 工艺路线:用PROCESS_PLAN定义工序顺序:“钻底孔→攻丝→倒角”

我们对接了Mastercam的API,当STEP文件导入时,其PROCESS_PLAN节点自动触发宏脚本,生成对应刀路。再也不用编程员对着模型猜“这个孔要不要攻丝”。

5.3 PLM系统入库:版本控制与变更追溯

text-to-CAD生成的模型,必须纳入PLM管理。难点在于:如何区分“同一描述生成的不同版本”?我们的做法是:

  • 每次生成,自动计算指令JSON的SHA256哈希值,作为ITEM_ID
  • STEP文件元数据里写入GENERATION_LOG,记录:
    Generated by text2cad v1.2.3 on 2024-06-15T14:22:03Z Input: "在B面打6-M10螺纹孔,深25mm,H7公差" OCCT_Version: 7.6.3

这样,PLM系统能自动识别:当工程师修改输入为“深30mm”,系统生成新哈希ID,旧版本自动冻结,变更留痕清晰。

5.4 质检环节:GD&T自动比对

质检员拿到STEP,第一件事是检查公差标注是否符合图纸。我们开发了轻量比对工具:

  • 解析STEP的GEOMETRIC_TOLERANCE实体
  • 提取公差值(如Ø0.2)、基准(如A|B|C)、修饰符(如@MMC)
  • 与企业标准库比对(如“泵体类零件,位置度公差≤Ø0.15”)
  • 自动生成质检报告PDF,标红超差项

这避免了人工逐条核对,某次发现生成的Ø0.25位置度被误设为Ø0.2,系统自动拦截,防止不合格品流入产线。

这套衔接方案,让text-to-CAD不再是孤岛工具,而是嵌入设计-仿真-制造-质检全链路的活水节点。它不取代工程师,而是把他们从重复劳动中解放出来,专注真正的设计决策——比如,“这个加强筋形状,用鱼骨式还是蜂窝式,哪种更抗振?”这种问题,才值得人类智慧。

我在实际项目中发现,最有效的text-to-CAD从来不是“全自动”,而是“精准半自动”:它不试图理解“设计意图”,而是严格执行“设计指令”。工程师写清楚“做什么”,系统负责“怎么做”,双方各司其职。当某天你收到产线消息:“支架加强筋厚度已按指令改为3.0mm,新STEP已推送至CNC站”,那一刻你会明白:技术的价值,不在多炫,而在多稳。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询