基于MBD框架的BOM自动生成二次开发技术

发表时间:2021/4/16   来源:《中国科技信息》2021年5月   作者:黄德赞
[导读] 本文针对BOM表自动提取技术,介绍了一种利用Python通过二次开发对CATIA零部件所含的信息进行提取及计算的技术。

中国特种飞行器研究所   湖北荆门     黄德赞   448035

摘要:本文针对BOM表自动提取技术,介绍了一种利用Python通过二次开发对CATIA零部件所含的信息进行提取及计算的技术。该技术能快速、准确的对模型相关信息进行汇总及更新,提高工作效率及准确率,并为后期各阶段工作提供重要依据。
关键词: Python MBD BOM表 二次开发
        1 引言
        CATIA作为一款集设计、分析、模拟、组装到维护的全工业设计流程软件,逐渐成为航空产品设计的主流工具之一,被广泛应用于航空领域的计算机辅助设计、仿真分析和制造等专业。
        在航空产品设计的过程中,将产生大量的三维数模文件,其中包含的设计信息是后期各阶段工作的重要依据,然而当前CATIA软件提供的物料清单提取功能还不能满足数据提取的要求,需要设计人员手工导出各项数据,且随着设计工作的推进,各项更改都可能影响到BOM表,需要随时更新,工作量非常大,且容易产生错漏。有鉴于此,提出一种Python环境下基于CATIA二次开发的BOM表自动生成方法。
        2 MBD概述
        基于模型定义的(Model Based Definition)数字化技术,是以美国机械工程师学会标准ASME Y14.41-2003中相关规定和CATIA软件具备的功能为基础的,将产品的相关工艺描述、属性、旗注等全部信息都附着在产品三维模型中的先进的数字化定义技术。MBD方法是以产品的几何模型为核心,将需要定义的信息依照模型的形式进行组织,是具备三维模型的完整产品定义,包含了对产品几何形状信息和非几何形状信息的定义,具体如图1所示。
        几何信息包含基准、标注平面、尺寸、几何图形公差、注释、粗糙度、连接定义、标注辅助几何元素、捕获等。
        非几何信息包括模型属性、对称信息、更改说明、通用注释、零件注释、旗注说明、热表处理注释、装配注释等信息。
        BOM表所需要的信息如零部件编号、名称、类型、重量、工艺方法、材料信息等大部分都包含在非几何信息中。
        通过MBD定义的模型,上述提到的各种信息都有统一的描述方法,这为通过二次开发提取零部件参数信息提供了基础。

                                                            

         3 BOM表提取流程
         要实现BOM表的自动提取,首先需要将Excel和CATIA软件初始化,生成BOM表表头信息,读取CATIA根节点信息;之后通过递归遍历根节点下的各个零部件,并通过参数提取函数提取各零部件的填入BOM表中。
         4 软件初始化
         通过Python二次开发自动生成BOM表需要Python、Excel和CATIA软件,Python读写操作Excel和CATIA均可以通过不同的库实现,为统一操作,本文通过连接COM接口的方式进行初始化。
        5 模型参数提取方法
        导出BOM表的关键之一在于找出三维模型所包含的各种参数,并将其值提取出来。CATIA模型的属性分为自带属性和自定义属性两种,两种属性的本质都是Parameter参数。
对于BOM表所需的参数,既有自带属性参数也有自定义参数,针对两者需要采取不同的方法提取参数名称和对应的值。
        4.1 自带属性的提取
 BOM表中的零件编号、零件名称、版本等属于自带属性,可以通过参数名称直接读取。
        4.2 自定义属性的提取
对于非几何信息如单件重量、零部件类型、毛料尺寸等,大多分布在‘属性’、‘材料’两个集合中,如图2所示。由于这些自定义参数属于Parameters这一Collection集合类,因此我们可以使用集合通用的len、Add、Item等方法对其进行操作,对于Item的方法,可以直接用中括号[]代替,图3中展示了两种提取参数值的方法。而对于复合材料参数等存在相同名称的参数,可以通过遍历Parameters的方法逐个提取。

                                
        4.3 数量计算
        零件数量是BOM表的一个重要参数,获取一个Product节点下的某一零部件的数量可以通过遍历该零部件父节点下的节点的方式获取。
        4.4 信息写入
        将零部件信息读取出来后,通过直接读写单元格的形式进行信息写入Excel表中,且可以通过不同的零部件类型对单元格进行颜色标记以提高BOM表的可读性。
        5 递归遍历Products
 导出BOM表的另一个关键点在于遍历一个产品下的所有节点。对于一个产品,其装配的层级是不确定的,无法写一段确定层数的嵌套循环实现。为了解决这一问题,需要使用递归循环,定义一个函数来遍历Products,若Products下的某个节点是Products子节点,则调用这个函数自身,且遍历对象变为Products子节点。以上递归过程的流程如图4所示。
                                     

        6 初始化对象
        将上述各模块调试完成后就可以通过初始化CATIA对象,读取当前产品根节点信息,并以此为基础调用递归函数进行BOM表的自动化输出。
        7 结论
        通过基于Python环境的CATIA二次开发,实现了MBD框架的三维模型BOM表的自动生成,大幅提高了工作效率及准确性。而且可以通过对模型参数提取方法的局部更改,可以实现标准件、成品件、机加件等的快速统计并形成表格,为后续各阶段工作提供帮助。
参考文献:
[1] 吴克祥 石鑫 MBD技术在飞机数字化制造中的应用 西安航空学院学报 2015,33(1):24-28
[2]秦坤,张昕 基于MBD 框架的PDM 与CATIA 系统集成研究与实现 信息通信 2019(1):94-95
[3]潘青 面向飞机数字装配的MBD模型装配信息提取技术 先进装配技术 2015(3):34-36

投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: