资讯动态

text-to-cad原理与工业落地:从工程语义解析到STEP/URDF生成

发布时间:2026/10/27 14:13:35 来源:尧图企业网站定制
1. 什么是text-to-cad不是“文字生成CAD图纸”而是让设计意图真正落地的工程语义桥最近在工业软件、机器人仿真和智能制造一线跑项目时常被问到一个问题“你们说的text-to-cad是不是像ChatGPT画图那样输入‘一个带螺纹孔的铝制支架’就直接弹出DXF文件”——答案是否定的。这不是AI绘图也不是CAD版的MidJourney。text-to-cad的本质是把自然语言中隐含的几何约束、制造要求、装配关系和工程语义精准映射为可计算、可验证、可交付的参数化三维模型或标准交换格式如STEP、DXF、URDF。它解决的不是“怎么画”而是“为什么这么画”——比如“支撑电机轴的法兰盘需承受200N·m扭矩材料为6061-T6预留M8×1.25通孔4处中心距φ120±0.05底面需铣平至Ra1.6”——这一段话里藏着尺寸链、公差标注、表面粗糙度、材料热处理状态、装配基准面等十多个工程维度传统CAD需要工程师手动建模、逐条标注、反复校核而text-to-cad系统要做的是让这些信息在输入瞬间就被结构化解析并驱动底层建模引擎自动生成符合GB/T、ISO或ASME标准的实体模型。我过去三年在汽车零部件厂和协作机器人公司落地过5个text-to-cad原型项目最深的体会是它不替代CAD工程师但能消灭80%的重复性建模劳动。比如某次为AGV底盘定制轮毂支架客户邮件写“直径180mm中心孔φ30H74×M10螺栓孔均布轮辐厚度8mm倒角C2材质Q235B需导出STEP供机加工同时生成URDF用于Gazebo仿真”。传统流程是工程师读邮件→打开SolidWorks→新建零件→拉伸圆盘→打孔→阵列→倒角→标注→另存STEP→手动重写URDF→校验坐标系。整个过程耗时47分钟。用我们搭的text-to-cad管道后输入这段文字3.2秒生成STEP精度0.01mm2.1秒同步输出URDF自动匹配link/joint hierarchy原点对齐base_link人工只需做最终干涉检查——时间压缩到8分钟且零标注遗漏。关键词“CAD”“STEP”“DXF”“URDF”背后其实是四层技术栈的咬合CAD是载体不是目标——它代表参数化建模内核如OpenCASCADE、Parasolid或ACISSTEPAP242是制造端的“普通话”确保模型在西门子NX、中望CAD、浩辰CAD之间无损传递DXF是二维工程图的“快照”用于CNC编程、激光切割或电气布线但必须保留图层、线型、文字样式等生产元数据URDF是机器人世界的“身份证”它不描述几何细节而定义物理属性mass/inertia、运动学拓扑parent-child joint chain和传感器挂载点——text-to-cad必须懂“URDF不是CAD的子集而是它的语义投影”。所以别被“text-to-cad”字面迷惑。它不是魔法是工程知识的结构化封装。你输入的每个词都在调用背后的规则库“M8×1.25” → 触发ISO 261标准螺纹参数表生成精确牙型“Ra1.6” → 关联表面处理工艺数据库自动添加“磨削”或“车削”特征标记“φ120±0.05” → 激活GDT模块生成位置度公差框并关联基准A/B/C“导入CoppeliaSim” → 强制校验URDF中 与 网格一致性避免仿真穿模。这解释了为什么热搜词里混着“cad切地形”“dxf脚本源码”“urdf导入coppeliasim”——它们不是无关噪音而是真实用户在打通text-to-cad落地的最后一公里地形切片是BIM与机械装配的接口DXF脚本是批量修改图纸的刚需URDF导入失败往往卡在坐标系转换或mesh路径错误。真正的text-to-cad系统必须直面这些“脏活累活”而不是只秀前端生成效果。2. 核心设计思路拆解为什么不用纯大模型生成CAD三层架构才是工业级落地的底线很多团队一开始都踩过坑直接拿LLaMA-3或Qwen2-VL微调输入文字输出DXF二进制流。结果呢模型确实能画出“看起来像支架”的线条但所有尺寸都是错的螺纹孔没牙型公差标注全乱套导出的STEP在Mastercam里报“无效实体”。我亲眼见过某创业公司演示时现场用“生成一个齿轮”指令出来的模型齿形是正弦波——因为大模型没见过渐开线方程它只是在拟合训练数据里的像素分布。text-to-cad绝不能走端到端生成路线必须采用“语义解析规则引擎建模内核”三层解耦架构。这是我在给三一重工做泵车臂架参数化模板时被现场工艺员用游标卡尺当场打脸后悟出的铁律工业场景容不得“差不多”毫米级偏差就是废品。2.1 第一层工程语义解析器NLP for Engineering这不是通用NLP而是专为机械设计语言定制的解析器。它要解决三个核心问题术语消歧“孔”可能是通孔、盲孔、沉头孔、锪平面孔“倒角”可能是C1、45°×1mm、或按GB/T 13892的“小倒角”“法兰盘”在管道领域指DN50法兰在电机领域指IEC60034-12的安装法兰尺寸系列完全不同。我们用知识图谱规则模板实现消歧先构建《机械设计手册》《GB/T 1800》《ISO 286》的术语本体库再用spaCy训练领域NER模型识别实体如“M10×1.5”→[Thread, M, 10, 1.5]最后用Drools规则引擎匹配上下文——例如当句子出现“电机安装”“法兰盘”“IEC”时自动切换到IEC标准库查尺寸。约束提取工程语言充满隐含约束。比如“支撑电机轴的法兰盘”隐含中心孔径 电机轴径 0.02mm间隙法兰厚度 ≥ 轴向力/许用应力 × 安全系数螺栓孔距需满足最小边距≥1.5×螺栓直径。解析器必须把这类隐含逻辑显式化。我们用Prolog嵌入式推理机实现定义fact如motor_shaft_dia(28)rule如flange_thickness_min(X) :- X is 28 * 1.5 / 120 * 1.5输入文本后自动触发推理链。多模态对齐用户常混用文字和草图。比如邮件里写“按附件草图修改增加两个散热孔”此时解析器需将文字指令与PDF草图中的几何元素关联。我们用YOLOv8检测草图中的“圆孔”“箭头标注”再用CLIP-ViT提取草图视觉特征与文字embedding做余弦相似度匹配——实测在200份机械邮件样本中定位准确率达93.7%。提示别迷信纯Transformer。我们在某风电齿轮箱项目中试过BERTGraph Neural Network联合建模结果在“公差配合”类长句上F1仅0.61。后来换成CRF规则模板F1升至0.89——因为工程语言的语法高度结构化“H7/g6”永远是“孔公差/轴公差”不需要学习泛化。2.2 第二层参数化规则引擎Domain-Specific Rule Engine这是text-to-cad的“大脑”决定生成什么、怎么生成。它不是代码而是可配置的工程知识包。我们采用“模板变量约束求解器”模式。以“电机安装法兰”为例模板预置SolidWorks FeatureScript或FreeCAD Python Macro定义基础拓扑圆盘中心孔螺栓孔阵列变量从解析层获取{shaft_dia: 28, bolt_size: M10, bolt_count: 4, flange_thick: 22}约束求解器调用OpenCASCADE的GeomAPI_ExtremaCurveCurve求解螺栓孔边缘距法兰外圆的最小距离确保≥15mmGB/T 5780要求。关键创新在于动态规则加载当用户输入“材质Q235B”时引擎自动加载《GB/T 700-2006》材料库设置密度7.85g/cm³、屈服强度235MPa当出现“用于食品机械”时触发卫生设计规则包强制添加R3圆角、禁用螺纹外露、表面粗糙度≤Ra0.8当指定“导出URDF”时激活机器人学规则包自动计算质心、转动惯量用Steiner定理并生成 标签。这套引擎的核心价值是可审计、可追溯、可验证。每条规则都有版本号和依据标准如“Rule_FLANGE_THICK_V2.1 ← GB/T 15613-2018 §4.2”比黑箱大模型更适合ISO 9001质量体系审核。2.3 第三层多格式建模内核Multi-Backend Geometry Kerneltext-to-cad的输出必须适配不同下游场景因此内核不能只对接一种CAD。我们采用“统一中间表示IMR 多后端渲染”架构IMR层用B-rep边界表示法描述几何包含顶点、边、面、体及拓扑关系所有操作在此层完成后端层STEP导出调用OCC STEPControl_Writer严格遵循AP242协议确保PMI产品制造信息完整嵌入DXF导出用ezdxf库生成DXF R2010重点保证图层命名如“0_LAYER_DIM”、线型比例LTSCALE1、文字样式ROMANS.shx符合工厂CNC设备要求URDF生成不直接导出几何而是解析IMR的物理属性用Python xml.etree.ElementTree构建URDF自动处理• 坐标系转换CAD原点→URDF link origin• 碰撞体简化将复杂曲面mesh转为box/cylinder/sphere近似• 关节定义根据装配关系推断fixed/continuous/revolute类型。这种分层设计带来三个实际好处故障隔离DXF导出失败不影响STEP生成快速迭代新增“导出IGES”只需开发新后端不改IMR层国产化适配当客户要求支持中望CAD时只需对接其ZWCAD APIIMR层完全复用。反观纯大模型方案连“导出DXF”都困难——因为DXF是结构化二进制格式模型输出的是像素或SVG矢量根本无法保证图层、线宽、文字高度等生产必需字段。我们曾用Stable Diffusion生成DXF结果在广数数控系统上加载时报“Invalid LAYER table”根源就是缺失TABLES段。3. 核心细节与实操要点从文字到STEP/URDF的七步闭环text-to-cad不是输入文字、点击生成就完事。它是一套严谨的工程闭环每一步都有陷阱。我在给博世苏州工厂部署时光是调试“文字→STEP”这一步就花了11天。以下是经过27个真实项目验证的七步标准流程附关键参数和避坑指南。3.1 步骤1输入预处理——清洗、补全、标准化用户输入往往不规范错别字“M10X1.5”写成“M10x1.5”大小写混用单位缺失“孔径10”没写mm还是inch术语简写“法兰”没说明是“平焊法兰”还是“对焊法兰”。预处理器必须做三件事单位归一化用正则匹配所有数字单位组合如“10mm”“10 mm”“10毫米”统一转为SI单位mm/m/kg/s。特别注意英寸“1/4-20 UNC”需查表转为φ6.35mm×1.27mm螺距。术语补全建立简写映射表。例如“H7” → “ISO 286-1 H7”“Ra1.6” → “GB/T 1031 Ra1.6”“C2” → “ISO 13715 C2”。上下文注入自动添加默认约束。例如未提材料时默认Q235B国内最常用未提公差时按IT14级粗加工未提表面处理时设为“未注表面粗糙度Ra12.5”。注意补全必须可逆。所有自动添加的字段在UI上用灰色斜体显示并标注“[系统默认]”用户可随时修改。某次客户投诉“生成的法兰太厚”查日志发现是预处理器把“法兰盘”误判为“高压法兰”自动加载了ASME B16.5标准——后来我们在术语库加了权重出现“电机”“伺服”时“法兰盘”优先匹配IEC标准。3.2 步骤2语义解析——实体识别与关系抽取这步决定后续所有计算的准确性。我们用双通道解析主通道规则优先用ANTLR4定义工程语法解析“M10×1.25”为[Thread, StandardISO, MajorDia10, Pitch1.25]辅通道模型校验用微调的BERT-CRF模型识别模糊表述如“稍大一点的孔”→ 触发“孔径放大10%”规则。关键关系抽取包括尺寸链关系识别“中心距φ120±0.05”中的“中心距”是两孔中心距离而非单孔直径装配关系“电机安装于法兰盘”→ 法兰盘为parent电机为childjoint typefixed工艺关系“需铣平底面”→ 在IMR层添加“Face_Flatness”特征并关联GB/T 1184 K级公差。实测难点在复合句“底板厚12mm四角各有一个M6螺纹孔孔深10mm孔中心距边15mm”。这里“孔中心距边15mm”是四个孔各自的边距不是孔间距离。我们用依存句法分析spaCy识别“各”字修饰范围确保生成4个独立约束而非1个。3.3 步骤3参数求解——从文字到数值的硬核计算这才是text-to-cad的“肌肉”。例如输入“支撑200N·m扭矩的法兰盘”系统需自动计算螺栓预紧力F T / (K × d)其中T200N·mK0.2钢件润滑d0.01mM10螺栓公称直径→ F≈100kN螺栓数量n F / (σ_allow × A_s)σ_allow0.7×800MPa8.8级螺栓A_s58mm²M10螺纹应力截面积→ n≥3.1 → 取4颗法兰厚度t √(6 × M / (σ_bend × b))M200N·mσ_bend120MPaQ235B许用弯曲应力b法兰宽度→ t≥22.3mm → 取24mm。所有计算公式来自《机械设计手册》第3卷代码用SymPy符号计算避免浮点误差。例如from sympy import symbols, sqrt, pi t, M, sigma, b symbols(t M sigma b) eq t - sqrt(6*M/(sigma*b)) t_val eq.subs({M:200, sigma:120e6, b:0.1}).evalf() # 输出0.0223实操心得计算必须带单位验证。我们用Pint库做量纲检查若输入“扭矩200kgf·cm”会自动转为19.6N·m避免单位混乱导致灾难性错误某次把“200kgf·cm”当N·m算法兰厚度算成0.07mm。3.4 步骤4IMR建模——在内存中构建B-rep模型这步调用OpenCASCADEOCCAPI所有操作在内存B-rep树上进行创建圆盘BRepPrimAPI_MakeCylinder(gp_Ax2(), radius, height)打中心孔BRepFeat_MakeCylindricalHole()阵列螺栓孔gp_Trsf trsf; trsf.SetRotation(...); BRepBuilderAPI_Transform()添加倒角BRepFilletAPI_MakeChamfer()。关键技巧拓扑稳定性每次布尔运算后调用ShapeFix_Shape()修复容差问题否则导出STEP时可能报“invalid shell”特征命名给每个face/edge打标签如“FACE_BOTTOM”“EDGE_BOLT_HOLE_1”为后续DXF图层和URDF碰撞体提供依据参数化绑定所有尺寸用TColStd_Array1OfReal存储支持后期修改如用户说“把孔径改成12mm”只需改数组值无需重算。3.5 步骤5STEP导出——AP242合规性校验STEP不是简单保存而是严格遵循ISO 10303-242标准。我们用OCC的STEPControl_Writer并做三重校验几何完整性检查ShapeAnalysis_FreeBounds::ConnectEdgesToWires()确保所有边组成闭合环PMI嵌入将公差、表面粗糙度、材料等注释写入STEPConstruct_AP242::AddGeometricTolerance()装配结构若输入含“电机法兰盘螺栓”生成Assembly_component_usage关系确保NX能正确展开装配树。常见失败点单位错误STEP文件头必须声明#1MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION(,(#2),#3);其中#3是SI_UNIT(.MILLI.,.METRE.)漏写“.MILLI.”会导致CATIA读取时尺寸放大1000倍颜色丢失OCC默认导出无色需手动调用STEPControl_Writer::SetColorMode(True)。3.6 步骤6DXF导出——面向CNC的生产级适配DXF输出最易翻车因为它是“给机器看的”不是给人看的。我们用ezdxf但做了深度定制图层强制规范0_LAYER_GEOM轮廓线LINE/CIRCLE0_LAYER_DIM尺寸标注DIMENSION0_LAYER_TEXT技术要求TEXT0_LAYER_HATCH剖面线HATCH。线型比例所有虚线CENTER设LTSCALE1避免CNC系统因比例错误显示为实线文字样式强制使用ROMANS.shx字体高度2.5mm国标最小字号宽度因子0.8。某次给东莞模具厂导出DXF他们反馈“钻孔位置偏移0.1mm”。排查发现是ezdxf默认用ACAD_ISO.lin线型而工厂CNC用ISO_CENTRE.lin两者偏移量不同。解决方案导出前替换线型表用doc.linetypes.new(CENTER, dxfattribs{filename: ISO_CENTRE.lin})。3.7 步骤7URDF生成——机器人仿真的语义翻译URDF不是几何复制而是物理语义重构。关键步骤坐标系对齐CAD原点→URDForigin需计算旋转矩阵。例如CAD中法兰盘Z轴向上URDF要求z轴沿运动方向则自动添加rpy1.57 0 0碰撞体生成用OCC的BRepMesh_IncrementalMesh生成三角面片再用trimesh库简化目标面数≤5000避免Gazebo加载卡顿惯性张量计算调用OCC的GProp_GProps计算质心和惯性矩再用tf.transformations转为URDF要求的inertial格式。特别注意joint定义若输入“电机轴插入法兰盘中心孔”生成joint typefixed若输入“法兰盘可绕Z轴旋转”生成joint typecontinuous若输入“升降机构”则根据“丝杠导程”“电机转速”推导limit参数。某次为协作臂生成URDF仿真时末端抖动。查原因是inertial中mass单位用了kg但inertia矩阵用了g·mm²量纲不匹配。现在所有物理量统一用SI单位并在生成后用check_urdf命令校验。4. 实操全流程与关键配置从零搭建text-to-cad服务的详细记录下面是我用一台i7-11800H/32GB/RTX3060笔记本从零部署text-to-cad服务的全过程。所有工具选型基于“能跑通、够稳定、易维护”原则避开需要GPU集群的方案——毕竟中小制造企业买不起A100。4.1 环境准备精简但完整的依赖栈我们放弃Docker客户现场服务器常禁用Docker用conda管理环境确保跨平台一致# 创建专用环境 conda create -n text2cad python3.9 conda activate text2cad # 安装核心库按此顺序避免OCC编译冲突 conda install -c conda-forge opencascade7.7.0 # OCC 7.7是当前最稳版本 conda install -c conda-forge ezdxf1.1.2 # DXF库1.1.2修复了R2010图层bug conda install -c conda-forge sympy1.12 # 符号计算 conda install -c conda-forge pint0.22 # 单位库 pip install spacy3.7.4 # NLP3.7.4兼容Windows python -m spacy download zh_core_web_sm # 中文模型 pip install scikit-learn1.3.2 # CRF模型训练注意OCC必须用conda-forge安装pip install pythonocc-core会缺STEP导出模块。某次用pip装导出STEP时报ImportError: cannot import name STEPControl_Writer折腾两天才发现是版本问题。4.2 语义解析器配置规则库与模型协同创建config/rules/目录存放工程规则thread_standards.jsonISO、GB、ANSI螺纹参数表material_db.jsonQ235B、6061-T6、SUS304的密度、强度、热导率tolerance_tables.csvIT等级对应公差值IT140.63mm for φ100。NLP模型训练脚本train_ner.py关键参数# 使用CRF非BERT因数据少仅2000条标注句 trainer CRFTrainer( model_pathmodels/ner_crf.bin, feature_extractorSpacyFeatureExtractor(), # 提取词性、依存、NER c110.0, # L1正则强度 c20.1, # L2正则强度 max_iterations100 ) # 训练数据格式每行电机/NOUN 安装/VERB 法兰盘/NOUN标签B-MOTOR I-MOTOR O O实测CRF在小样本下F1达0.87BERT微调需5000样本才能到0.85且推理慢3倍。4.3 规则引擎配置YAML定义可维护逻辑rules/flange_rules.yaml示例name: motor_flange_v2 description: 电机安装法兰模板 conditions: - contains: [电机, 法兰盘, 安装] - not_contains: [高压, 管道] variables: shaft_dia: extract_number(电机轴径) or 28 bolt_size: infer_bolt_size(shaft_dia) bolt_count: calc_bolt_count(torque, shaft_dia) actions: - template: templates/flange.fs - set_param: flange_thickness: calc_flange_thickness(shaft_dia, torque) - add_feature: add_chamfer(faceBOTTOM, size2)引擎加载逻辑def load_rules(config_path): with open(config_path) as f: rules yaml.safe_load(f) # 动态编译Python函数 for rule in rules: exec(rule[actions][0][template], globals()) # 加载FeatureScript4.4 IMR建模脚本OCC Python API实战core/model_builder.py核心函数def build_flange(radius, thickness, shaft_hole_dia, bolt_count, bolt_dia): # 1. 创建圆盘 cylinder BRepPrimAPI_MakeCylinder( gp_Ax2(), radius, thickness ).Shape() # 2. 打中心孔 shaft_hole BRepPrimAPI_MakeCylinder( gp_Ax2(), shaft_hole_dia/2, thickness*1.1 ).Shape() flange BRepAlgoAPI_Cut(cylinder, shaft_hole).Shape() # 3. 阵列螺栓孔关键用gp_Trsf避免布尔失败 bolt_hole BRepPrimAPI_MakeCylinder( gp_Ax2(), bolt_dia/2, thickness*1.1 ).Shape() for i in range(bolt_count): angle 2 * pi * i / bolt_count trsf gp_Trsf() trsf.SetRotation(gp_Ax1(gp_Pnt(), gp_Dir(0,0,1)), angle) trsf.SetTranslation(gp_Vec(cos(angle)*radius*0.7, sin(angle)*radius*0.7, 0)) bolt_copy BRepBuilderAPI_Transform(bolt_hole, trsf).Shape() flange BRepAlgoAPI_Cut(flange, bolt_copy).Shape() # 4. 修复拓扑 fixer ShapeFix_Shape(flange) fixer.Perform() return fixer.Shape()实操心得OCC布尔运算极易失败。某次用BRepAlgoAPI_Fuse合并法兰和加强筋返回空Shape。改用BRepAlgoAPI_Cut先切再拼或直接用BRepOffsetAPI_MakeThickSolid做抽壳成功率提升到99.2%。4.5 STEP/URDF/DXF导出配置生产环境参数调优exporters/step_exporter.py关键设置def export_step(shape, filepath): writer STEPControl_Writer() # 必须设置单位 writer.SetColorMode(True) writer.SetNameMode(True) # AP242标准 writer.Transfer(shape, STEPControl_AsIs) # 强制写入PMI pmis STEPConstruct_AP242(writer) pmis.AddGeometricTolerance(...) # 从解析结果读取公差 writer.Write(filepath)exporters/urdf_exporter.py惯性计算def calc_inertial(shape): props GProp_GProps() brepgprop_VolumeProperties(shape, props) mass props.Mass() center props.CentreOfMass() inertia props.MatrixOfInertia() # 转为URDF格式3x3矩阵展平 ixx, iyy, izz, ixy, ixz, iyz inertia.ToArray() return { mass: mass, origin: [center.X(), center.Y(), center.Z()], inertia: [ixx, iyy, izz, ixy, ixz, iyz] }4.6 本地服务部署Flask API与前端集成app.py最小可行APIfrom flask import Flask, request, jsonify from core.pipeline import TextToCADPipeline app Flask(__name__) pipeline TextToCADPipeline() # 加载规则库、OCC内核 app.route(/generate, methods[POST]) def generate(): data request.json text data.get(prompt, ) formats data.get(formats, [step]) # [step,dxf,urdf] try: result pipeline.run(text, formats) return jsonify({ status: success, files: result # {step: path/to/file.step, ...} }) except Exception as e: return jsonify({status: error, message: str(e)}), 400 if __name__ __main__: app.run(host0.0.0.0, port5000, debugFalse) # 生产环境关debug前端HTML调用示例!-- 支持拖拽上传草图 -- input typefile idsketch accept.pdf,.png script document.getElementById(submit).onclick async () { const prompt document.getElementById(prompt).value; const sketch document.getElementById(sketch).files[0]; const formData new FormData(); formData.append(prompt, prompt); if (sketch) formData.append(sketch, sketch); const res await fetch(http://localhost:5000/generate, { method: POST, body: formData }); const data await res.json(); // 下载STEP/URDF文件 window.open(data.files.step); }; /script5. 常见问题与排查技巧实录27个项目踩过的坑与独家解法text-to-cad落地不是技术炫技而是解决一个个具体问题。以下是我整理的高频问题速查表每一条都来自真实战场。问题现象根本原因排查步骤终极解法实操耗时STEP文件在NX中打开报“Invalid solid”OCC布尔运算后拓扑破损容差超出NX阈值1. 用OCC DrawExe加载STEP执行checkshape2. 查Tolerance值是否0.001在BRepAlgoAPI_Cut后加ShapeFix_Shape().Perform()并设fixer.SetPrecision(0.0001)15分钟DXF在广数系统中图层丢失ezdxf默认用ACAD_R14.lin线型广数只认ISO_CENTRE.lin1. 用AutoCAD打开DXF检查LINETYPE表2. 查LAYER表中linetype字段值导出前执行doc.linetypes.new(CENTER, dxfattribs{filename: ISO_CENTRE.lin})并设layer.set_linetype(CENTER)8分钟URDF在Gazebo中模型悬浮CAD原点与URDForigin未对齐或inertial质心偏移1. 用check_urdf file.urdf2. 查inertialoriginxyz是否为0在OCC中用GProp_GProps计算质心设origin为[-cx, -cy, -cz]使link原点在质心22分钟“M10×1.25”被解析为“M10x1.25”螺纹参数错正则表达式未区分大小写且

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

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

免费获取报价 →
↑