
1. 项目概述当文字真的能“长出”三维模型最近在机械设计、机器人仿真和工业自动化圈子里“text-to-cad”这个词出现的频率越来越高几乎每周都能在技术论坛、GitHub issue 和工程师私聊里撞见。它不是指用文字描述去搜索现成CAD文件——那叫“关键词检索”早就有也不是让AI帮你写个LISP脚本——那是自动化编程。真正的text-to-cad是输入一句自然语言比如“一个带M6内螺纹、底部有4个Φ8通孔、高32mm的圆柱形铝制支架”系统就能自动生成符合工程规范的、可直接导入SolidWorks或Fusion 360的STEP文件或者能被AutoCAD原生读取的DXF轮廓甚至输出为机器人仿真平台如CoppeliaSim所需的URDF结构定义。这背后不是简单的文本匹配而是几何语义理解、参数化建模引擎与多模态约束求解的深度耦合。我从去年开始系统性地测试过7个开源/半开源text-to-cad方案从基于LLM微调的SketchGPT到用Diffusion生成B-rep面片再重建拓扑的CAD-Diffusion再到把CLIP视觉编码器反向映射到OpenCASCADE建模API的实验性项目。实测下来目前没有一个能稳定输出“开箱即用”的生产级CAD模型——但已有3个路径展现出明确的工程落地苗头一是面向标准件库的精准生成如ISO螺栓、DIN导轨二是面向机器人运动链的URDF骨架快速搭建三是面向钣金展开的2D DXF轮廓生成。这三类场景共同特点是几何约束强、拓扑结构固定、尺寸参数化程度高。换句话说text-to-cad现阶段最靠谱的用法不是替代设计师画图而是当你的需求满足“已知结构变量替换”这个模式时它能把你从重复建模中彻底解放出来。如果你是做机器人控制算法的需要频繁调整连杆长度、关节轴偏移量来验证动力学模型text-to-cad能让你5秒生成新URDF而不是手动改XML再检查17处坐标系嵌套如果你是做非标设备集成的电气工程师常要为不同客户定制安装板text-to-cad能把“加宽15mm、孔距改为120mm、右上角切R10圆角”这种口头需求直接转成DXF发给加工厂如果你是教《机械制图》的老师想批量生成带干扰项的轴测图考题它也能按指令生成带特定错误特征的模型。关键不在于它多“智能”而在于它能否把工程师脑子里那个“确定的结构想象”用零学习成本的方式变成计算机可执行的几何指令。接下来我会拆解这个过程到底怎么实现为什么STEP比STL更适合做输出目标DXF的图层逻辑如何影响后续加工以及URDF里 标签的xyz/rpy参数为什么必须和CAD坐标系严格对齐——这些细节恰恰是多数教程跳过的致命坑点。2. 核心技术路径拆解为什么不能直接用ChatGPT画图2.1 本质矛盾自然语言的模糊性 vs CAD的确定性很多人第一次接触text-to-cad时会本能地想“既然ChatGPT能写诗、能编代码为什么不能让它画个齿轮” 这个直觉错在混淆了两个根本不同的任务范式。写Python代码时LLM输出的是符号序列只要语法正确、逻辑自洽运行结果就可控但CAD模型不是符号它是空间约束的刚性集合。一个“直径50mm的圆柱体”在文字里是单义的但在CAD里至少要定义基准平面XYXZ用户没说默认哪个高度方向沿Z轴正向负向还是绕某轴旋转端面处理平端倒角圆角公差标注IT7IT8默认值是多少模型精度NURBS阶数曲面离散密度我试过让GPT-4 Turbo直接输出STEP文件的AP214格式二进制流——它真能拼出一串看似合法的ASCII字符但用FreeCAD打开时99%报“Invalid entity type”。原因很简单STEP是ISO 10303标准定义的超复杂实体关系模型一个圆柱体ENTITY CYLINDRICAL_SURFACE必须通过精确的引用链连接到其定位坐标系AXIS2_PLACEMENT_3D、母线定义CURVE和参数范围PARAMETER_VALUE。任何一处引用ID错位整个文件就失效。这就像你让一个人凭记忆默写《论语》全文错一个字整段释义就崩了。所以所有可行的text-to-cad方案都必须在LLM和CAD内核之间插入一个确定性翻译层。这个层不负责“创意”只干一件事把模糊的自然语言强制映射到预定义的、有限的几何操作原子集上。比如把“带M6内螺纹”翻译成“在指定面上执行‘创建螺纹孔’操作参数ISO 1502, nominal_diameter6.0, pitch1.0, depth12.0, thread_class6H”。这个原子操作在OpenCASCADE里对应BRepFeat_MakeThread类在FreeCAD的PartDesign模块里对应ThreadedHole对象。翻译层越薄系统越稳定翻译层越厚比如试图让LLM自己推导螺纹牙型角失败率越高。2.2 主流技术栈对比从“提示词工程”到“几何编译器”目前能跑通端到端流程的方案基本分三类我按工程可用性排序第一类基于参数化模板的“填空式”生成推荐新手入门代表项目 CAD-Gen MIT License核心思路把常见结构抽象成JSON Schema模板。例如“法兰盘”模板包含outer_diameter, inner_diameter, bolt_circle_diameter, bolt_hole_count, thickness等字段。用户输入文字后用轻量级NER模型如spaCy训练的机械术语识别器提取数值和单位填入模板再调用OpenCASCADE的BRepPrimAPI_MakeCylinder等API生成实体。优势100%可控输出必为合法STEP支持自定义模板产线工程师能自己维护劣势无法生成模板外的结构比如“把法兰盘改成椭圆形”就会失败。我实测用它生成ISO 7009六角螺母从输入到导出STEP仅1.8秒且SolidWorks 2023直接打开无报错。第二类LLM符号执行的“程序合成”路径适合算法团队代表项目SketchGPT论文《Text-to-CAD: Generating Parametric CAD Models from Natural Language》核心思路让LLM输出Python代码调用CadQuery基于OpenCASCADE的Python API建模。例如输入“长方体底座上表面中心挖一个Φ20的圆柱孔”模型输出import cadquery as cq result (cq.Workplane(XY) .box(100, 80, 20) .faces(Z).workplane() .hole(20))然后用subprocess调用CadQuery CLI执行并导出STEP。优势理论上支持任意复杂结构代码可调试、可版本管理劣势LLM生成的代码常有语法错误如漏括号、逻辑错误如workplane平面选错、或CAD语义错误如hole()参数传错单位。我测试100次约62%需人工修正1-2行才能成功导出。第三类扩散模型几何重建的“像素到实体”前沿探索代表项目CAD-DiffusionCVPR 2023核心思路先用Diffusion生成2D多视角草图前视/俯视/侧视再用Neural Implicit Surface重建B-rep。优势能处理“画风独特”的需求比如“像海螺形状的散热器”劣势生成模型拓扑错误率极高孔洞不贯通、面自交且无法保证尺寸精度。我用它生成“带散热鳍片的CPU顶盖”输出STEP在Fusion 360里显示为237个独立碎片面需手动缝合——这反而比手动画更耗时。提示别被“SOTA”论文迷惑。工业场景要的是“一次成功”不是“平均成功率”。对绝大多数工程师第一类模板法第二类程序合成的混合方案最实用用模板覆盖80%标准件用CadQuery代码处理20%定制需求。2.3 输出格式选择为什么STEP是黄金标准DXF要分层URDF必须带惯性参数text-to-cad的输出不是终点而是下游流程的起点。选错格式后面全是坑STEPAP214/AP242优势ISO国际标准SolidWorks、NX、Creo、FreeCAD全原生支持完整保留B-rep拓扑、参数化历史、装配关系关键细节AP242支持PMI产品制造信息能导出公差、表面粗糙度注释AP214更通用但无PMI。生成时务必指定schemaAP242否则某些CAM软件读不出特征树。实测陷阱OpenCASCADE默认导出的STEP文件坐标系原点在模型质心但很多机床要求原点在工件左下角。需在导出前用BRepBuilderAPI_Transform平移整个模型。DXFAutoCAD Drawing Exchange Format优势2D加工激光切割、水刀的绝对主流轻量易用Python库ezdxf解析修改分层逻辑DXF的图层Layer不是装饰是加工指令。例如LAYER_CUT激光切割路径必须是闭合PLINELAYER_ENGRAVE表面刻字TEXT实体LAYER_DRILL钻孔中心点POINT实体带块属性标注孔径。实测教训曾有同事生成DXF后直接发给钣金厂结果所有孔被当成切割线切穿。查原因发现他把钻孔点画在LAYER_CUT层而工厂CNC程序只认LAYER_DRILL层的POINT。DXF不是“画得像就行”是“层名对得准才行”。URDFUnified Robot Description Format优势ROS/ROS2机器人仿真的事实标准CoppeliaSim、Gazebo原生支持致命细节URDF的inertial标签不是可选缺了它物理引擎会把连杆当质点仿真完全失真。inertial origin xyz0 0 0.1 rpy0 0 0/ !-- 质心相对link原点的偏移 -- mass value2.3/ !-- 千克 -- inertia ixx0.01 iyy0.01 izz0.005 ixy0 ixz0 iyz0/ /inertial实测经验text-to-cad生成URDF时必须同步计算质量属性。我用OpenCASCADE的GProp_GProps获取实体质心和惯性张量再按URDF坐标系转换——这步跳过仿真里机械臂一动就飞天。3. 实操全流程从“一句话需求”到“可交付文件”3.1 环境准备与工具链搭建Windows/Linux双平台不要幻想用浏览器点几下就搞定。text-to-cad是工程系统需要本地可靠环境。我推荐以下最小可行配置已实测Win11/Ubuntu 22.04核心依赖安装OpenCASCADE Community EditionOCEv7.7.0CAD内核提供B-rep建模API。注意别装官方OCCT社区版OCE对Python绑定更友好且许可证允许商用。下载地址https://github.com/tpaviot/oce/releasesPython 3.9必须用conda环境隔离避免与系统CAD软件冲突。conda create -n cadgen python3.9 conda activate cadgen pip install opencascade-python ezdxf cadquery2.4.0关键工具链验证在Python中运行以下代码确认基础建模能力from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox from OCC.Core.STEPControl import STEPControl_Writer, STEPControl_AsIs from OCC.Core.Interface import Interface_Static_SetCVal # 创建一个10x20x30的长方体 box BRepPrimAPI_MakeBox(10, 20, 30).Shape() # 导出STEP step_writer STEPControl_Writer() step_writer.Transfer(box, STEPControl_AsIs) Interface_Static_SetCVal(write.step.schema, AP242) step_writer.Write(test_box.step) print(STEP导出成功用FreeCAD打开验证)如果test_box.step能在FreeCAD里正常显示说明CAD内核工作正常。这是后续所有工作的基石。为什么不用AutoCAD或SolidWorks APIAutoCAD .NET API只能在Windows运行且需正版授权SolidWorks API虽强大但每次调用都启动进程速度慢单模型生成5秒且商业授权贵OpenCASCADE是唯一真正跨平台、开源、工业级的CAD内核NASA、空客都在用。忍住用熟悉软件的诱惑选对底层才不踩坑。3.2 文字解析与参数提取让AI听懂“M6螺纹”是什么意思自然语言到CAD参数的转换是text-to-cad最脆弱的一环。我放弃用LLM直接解析改用规则轻量模型组合第一步构建机械术语词典YAML格式thread_standards: - name: ISO 1502 pattern: [M\d, ISO\\s*\\d, 公制螺纹] params: {nominal_diameter: float, pitch: float, class: str} - name: UNC pattern: [\\d-\\d\\s*UNC, \\d/\\d\\s*UNC] params: {threads_per_inch: int, major_diameter: float} geometric_features: - name: 圆柱孔 pattern: [Φ\\d, 直径\\d, circle.*diameter] - name: 沉头孔 pattern: [counterbore, 沉头, 锪平]第二步用spaCy训练领域NER模型收集200条真实工程师需求语句如“底板加4个M8螺纹孔深20mm孔距100mm”标注出THREAD,HOLE,DIMENSION等实体。用spaCy v3.7训练import spacy from spacy.training import Example nlp spacy.blank(zh) # 中文模型 ner nlp.add_pipe(ner) ner.add_label(THREAD) # 添加自定义标签 # ... 训练代码略 nlp.to_disk(./mech_ner_model)训练后输入句子能精准识别doc nlp(在顶面打2个M6深15的螺纹孔) for ent in doc.ents: print(ent.text, ent.label_) # 输出M6 THREAD, 15 DIMENSION第三步规则引擎填充参数用pyparsing写一个微型解析器把识别出的实体映射到CAD操作from pyparsing import * # 定义M6螺纹孔的语法树 thread_def Combine(Literal(M) Word(nums))(size) Optional(Suppress(深) Word(nums)(depth)) # 解析结果{size: 6, depth: 15} # 然后查表得到ISO 1502标准参数pitch1.0, drill_diameter5.0, tap_diameter5.8...这套组合拳的好处是99%的需求能被准确解析且当解析失败时你能清晰看到是词典缺条目补YAML、还是NER没识别加训练数据、或是语法规则不匹配改pyparsing表达式——而纯LLM方案失败时你只能看到“生成结果不对”毫无调试路径。3.3 核心建模实现用OpenCASCADE构建可导出的实体以生成“带M6螺纹孔的矩形安装板”为例展示完整建模逻辑步骤1创建基体Base Platefrom OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeBox from OCC.Core.gp import gp_Pnt, gp_Dir, gp_Ax2 # 创建100x80x10的铝板 plate BRepPrimAPI_MakeBox(100, 80, 10).Shape() # 定义顶面Z10的平面作为螺纹孔基准 top_face_center gp_Pnt(50, 40, 10) # 板中心 top_face_normal gp_Dir(0, 0, 1) # Z轴正向 top_face_axis gp_Ax2(top_face_center, top_face_normal)步骤2创建螺纹孔特征Threaded HoleOpenCASCADE没有直接的“螺纹”API需用布尔减法螺旋线扫掠模拟from OCC.Core.BRepPrimAPI import BRepPrimAPI_MakeCylinder from OCC.Core.BRepAlgoAPI import BRepAlgoAPI_Cut from OCC.Core.TopoDS import topods_Face from OCC.Core.BRepAdaptor import BRepAdaptor_Surface # 1. 创建螺纹底孔Φ5.0圆柱 thread_hole BRepPrimAPI_MakeCylinder(5.0, 15).Shape() # 直径5.0深15 # 2. 创建螺纹牙型截面简化为矩形 from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeWire, BRepBuilderAPI_MakeEdge from OCC.Core.gp import gp_Pnt2d, gp_Ax2d, gp_Dir2d # ... 构造矩形截面代码略 # 3. 沿Z轴螺旋扫掠生成螺纹牙 from OCC.Core.BRepOffsetAPI import BRepOffsetAPI_MakePipe # ... 扫掠代码略 # 4. 将螺纹牙与底孔布尔并集再与基体布尔减 thread_feature BRepAlgoAPI_Cut(plate, thread_hole).Shape()步骤3导出多格式文件# 导出STEPAP242 from OCC.Core.STEPControl import STEPControl_Writer, STEPControl_AsIs step_writer STEPControl_Writer() step_writer.Transfer(thread_feature, STEPControl_AsIs) Interface_Static_SetCVal(write.step.schema, AP242) step_writer.Write(install_plate.step) # 导出DXF仅顶面轮廓孔位 from OCC.Core.BRep import BRep_Tool from OCC.Core.TopExp import TopExp_Explorer from OCC.Core.TopAbs import TopAbs_FACE from ezdxf import new doc new(R2010) msp doc.modelspace() explorer TopExp_Explorer(thread_feature, TopAbs_FACE) while explorer.More(): face topods_Face(explorer.Current()) surf BRepAdaptor_Surface(face) if abs(surf.Axis().Direction().Z()) 0.99: # Z向平面 # 提取该面的外轮廓线转为DXF LWPOLYLINE # ... 轮廓提取代码略 explorer.Next() doc.saveas(install_plate.dxf) # 导出URDF需计算惯性参数 from OCC.Core.GProp import GProp_GProps from OCC.Core.BRepGProp import brepgprop_VolumeProperties props GProp_GProps() brepgprop_VolumeProperties(thread_feature, props) mass props.Mass() center_of_mass props.CentreOfMass() # 构建URDF字符串略实操心得OpenCASCADE的API命名极其反人类如BRepAlgoAPI_Cut是减法BRepAlgoAPI_Fuse是并集建议把常用操作封装成函数def create_threaded_hole(shape, center, diameter, depth, thread_stdISO1502): 返回带螺纹孔的shape # 内部调用上述步骤1-2 return result_shape这样主流程代码就变得可读plate create_threaded_hole(plate, (50,40,10), 6.0, 15.0)。3.4 URDF专项让机器人仿真真正“动起来”text-to-cad生成URDF难点不在结构而在物理属性。CoppeliaSim加载URDF时如果inertial缺失或错误机械臂会像纸片一样飘在空中。以下是确保物理仿真的关键步骤1. 质心与惯性张量计算OpenCASCADE的GProp_GProps能精确计算实体属性from OCC.Core.GProp import GProp_GProps from OCC.Core.BRepGProp import brepgprop_VolumeProperties props GProp_GProps() brepgprop_VolumeProperties(cad_shape, props) # cad_shape是OpenCASCADE Shape mass props.Mass() # 千克 center props.CentreOfMass() # gp_Pnt对象 ixx props.MatrixOfInertia().Value(1,1) # 惯性张量 iyy props.MatrixOfInertia().Value(2,2) izz props.MatrixOfInertia().Value(3,3) ixy props.MatrixOfInertia().Value(1,2) ixz props.MatrixOfInertia().Value(1,3) iyz props.MatrixOfInertia().Value(2,3)2. 坐标系对齐URDF的生死线URDF的origin定义link相对于parent link的位姿而OpenCASCADE的gp_Ax2定义局部坐标系。必须严格转换URDF的xyz OpenCASCADEcenter相对于世界原点的坐标URDF的rpy OpenCASCADEgp_Ax2的欧拉角注意URDF用ZYX顺序OCC用XYZ若CAD模型原点不在质心需用BRepBuilderAPI_Transform平移后再计算。3. 生成可验证的URDF用Python模板生成并加入校验urdf_template link name{name} inertial origin xyz{x} {y} {z} rpy{roll} {pitch} {yaw}/ mass value{mass}/ inertia ixx{ixx} iyy{iyy} izz{izz} ixy{ixy} ixz{ixz} iyz{iyz}/ /inertial visual geometry mesh filenamepackage://my_robot/meshes/{name}.stl/ /geometry /visual collision geometry mesh filenamepackage://my_robot/meshes/{name}.stl/ /geometry /collision /link # 生成后用rosrun urdf_parser check_urdf my_robot.urdf 验证我曾因rpy顺序搞错导致CoppeliaSim里机械臂关节扭矩爆炸。后来写了个小工具输入URDF文件自动提取inertial参数用OpenCASCADE重新计算一遍对比差异。超过5%就报警——这成了我们团队的强制校验步骤。4. 常见问题与排查技巧实录4.1 STEP文件导入失败90%的问题出在这里现象根本原因排查与解决SolidWorks报错“无法读取此STEP文件”STEP文件使用AP203或AP214 schema而SW新版默认只支持AP242在导出代码中强制设置Interface_Static_SetCVal(write.step.schema, AP242)用Online STEP Validatorhttps://stepfilevalidator.com上传检查schema版本FreeCAD打开后显示为空白或碎面OpenCASCADE导出时未设置正确的单位默认mm但某些CAD软件期望m在导出前添加Interface_Static_SetCVal(write.step.unit, MM)或用STEPControl_Writer.SetUnits()显式设置NX打开后特征树丢失只剩B-rep体STEP文件未包含AP242的PMI产品制造信息扩展不是bug是NX的正常行为。若需参数化历史应导出为Parasolid*.x_t格式XSControl_Writer替代STEPControl_Writer实操心得永远用FreeCAD作为STEP文件的第一验证工具。它是开源的能显示详细的导入日志菜单编辑→首选项→导入/导出→STEP勾选“显示详细日志”。日志里会明确告诉你哪一行实体解析失败比商业软件的模糊报错有用十倍。4.2 DXF导出后加工出错图层与实体类型是命门加工问题对应DXF错误修复方法激光切割机把孔位当切割线切穿孔位用LINE或CIRCLE画在LAYER_CUT层孔位必须用POINT实体放在LAYER_DRILL层用ezdxf库强制设置point msp.add_point((x,y), dxfattribs{layer: LAYER_DRILL})水刀加工时轮廓线断开机器报“路径不闭合”外轮廓用LINE首尾未连接或POLYLINE未设closedTrue用ezdxf的add_lwpolyline()传入点列表并设closeTrue或用add_polyline3d()确保Z0CNC雕刻文字模糊不清TEXT实体字体为ROMANS.shx矢量但机床只认SIMPLEX.shx导出时指定字体text msp.add_text(LOGO, dxfattribs{style: SIMPLEX, height: 5.0})注意AutoCAD的图层名区分大小写LAYER_CUT和layer_cut是两个图层。我见过产线因图层名大小写错误导致整批零件报废。解决方案在DXF生成代码中所有图层名用大写常量定义并在导出前用doc.layers.get()检查是否存在不存在则创建。4.3 URDF在CoppeliaSim中不物理仿真惯性参数陷阱现象数据根源解决方案机械臂一施加力就飞出去inertial中mass为0或极小如1e-6检查OpenCASCADE的props.Mass()是否为0——常见于模型为空或布尔运算失败。加断点if mass 1e-3: raise ValueError(Mass too small!)连杆旋转时抖动剧烈惯性张量ixx/iyy/izz比例严重失调如ixx1000, iyyizz0.01物理上不可能。检查坐标系GProp_GProps计算的是相对于世界原点的惯性但URDF需要相对于link原点。必须用BRepBuilderAPI_Transform将模型质心移到原点再计算。关节运动范围受限达不到指令角度URDF的limit标签缺失或effort值过小text-to-cad通常不生成limit。必须在模板中预设limit lower-1.57 upper1.57 effort100 velocity3.14/。effort值决定电机最大输出扭矩设太小会导致“有指令但不动”。4.4 性能瓶颈突破如何让生成速度从分钟级降到秒级text-to-cad最常被吐槽“太慢”。实测发现90%时间花在三处1. OpenCASCADE初始化开销每次运行BRepPrimAPI_MakeBox前OCE都要加载几何内核。解决方案进程常驻。用Python的multiprocessing启动一个长期运行的CAD服务进程主程序通过Queue发送建模指令# cad_service.py from multiprocessing import Process, Queue def cad_worker(task_queue, result_queue): while True: task task_queue.get() if task STOP: break # 执行建模... result_queue.put(result) # 主程序 task_q Queue(); result_q Queue() p Process(targetcad_worker, args(task_q, result_q)) p.start() task_q.put({type: box, size: [100,80,10]}) step_data result_q.get() # 无需重复初始化2. STEP导出耗时OCE导出STEP默认进行冗余检查。关闭它from OCC.Core.Interface import Interface_Static_SetIVal Interface_Static_SetIVal(write.step.nonmanifold, 0) # 关闭非流形检查 Interface_Static_SetIVal(write.step.product, 0) # 关闭产品结构检查3. 复杂布尔运算卡死BRepAlgoAPI_Cut对自交模型会无限循环。加超时保护import signal class TimeoutError(Exception): pass def timeout_handler(signum, frame): raise TimeoutError(Boolean operation timeout) signal.signal(signal.SIGALRM, timeout_handler) signal.alarm(10) # 10秒超时 try: result BRepAlgoAPI_Cut(shape1, shape2).Shape() signal.alarm(0) # 取消定时器 except TimeoutError: # 回退到简化模型或报错经以上优化标准件生成时间从平均42秒降至1.3秒已满足产线实时响应需求。5. 工程落地建议从PoC到产线部署的5个关键动作text-to-cad不是炫技玩具它的价值在缩短从“需求提出”到“实物交付”的周期。我在三个实际项目中验证过以下路径动作1锁定“高频、低变、高确定性”场景别一上来就想生成“概念车车身”。先找每天重复5次以上、结构固定、参数只有2-3个变量的任务。例如电气柜安装板长/宽/孔位数/孔径机器人末端夹具爪长/开合角/驱动方式非标输送线支架高度/跨距/承载要求。这些场景的模板开发成本2人日但每月节省工时80小时。动作2建立“CAD-文本”双向校验机制text-to-cad输出后必须有人眼校验。但工程师不愿看STEP文件。解决方案自动生成校验报告PDF。用python-cadquery渲染模型截图用reportlab生成PDF包含3D渲染图正视/俯视/轴测关键尺寸标注自动提取BRepTools::Write的边长DXF图层清单doc.layers遍历URDF物理参数表质量/质心/惯性。这样校验从30分钟压缩到3分钟。动作3与现有PLM/PDM系统集成生成的STEP文件不能孤岛存在。我们用REST API对接Windchilltext-to-cad服务生成STEP后自动调用Windchill REST接口创建新物料号将文件上传为“原始设计文件”并关联BOM中的父项返回物料号写入URDF的name标签实现“设计即入库”。这步让法务和采购部门接受该技术——因为所有变更都留痕、可追溯。动作4制定“不可自动化”红线清单明确哪些需求禁止用text-to-cad涉及安全关键件如压力容器封头需要GDT几何尺寸与公差标注的精密件表面处理要求特殊如镜面抛光、阳极氧化膜厚有专利保护的独创结构。这条红线由总工签字确认写入公司《AI辅助设计规范》。动作5培养“CAD翻译官”角色最成功的团队都配了一名既懂机械设计、又会写Python的工程师。他的工作不是写模型而是把设计师的口语“这个孔要大一点”翻译成精确参数“孔径从Φ8改为Φ10”维护术语词典和模板库每周根据新需求更新当text-to-cad失败时快速判断是词典缺条目补YAML、还是