马永敬,刘光俊,安 帅,牟 琳,杜伟平
(1.中车青岛四方机车车辆股份有限公司,山东 青岛 266031) (2.西安电子科技大学机电工程学院,陕西 西安 710071)
航空、航天、船舶、汽车、工程机械、轨道交通等领域大型产品的零部件结构越来越复杂,为了揭示和分析产品的内部结构,设计人员通常使用爆炸图将装配体中的零部件按照顺序、方向和距离进行分解来表达零部件的相对空间位置关系。与剖视图、透视图相比,爆炸图不仅可以清晰展示复杂装配体中零部件及其之间的装配约束关系,甚至还能展示装配序列和装配路径。爆炸图目前已应用于设计、工艺、制造、使用、维护维修等产品生命周期的各个阶段,如产品设计阶段用于表达设计结果的爆炸图,工艺设计阶段用于装配序列规划的爆炸图,产品使用阶段用于展示产品性能的三维交互式电子手册,维护维修阶段用于演示产品拆卸的动画等。
国内外研究人员对爆炸图自动生成方法进行了大量研究。Agrawala等[1]利用投影的方法大概确定模型的爆炸方向,从而自动生成爆炸图;Motomasa等[2]利用模型的装配手册并通过指定模型的爆炸方向和爆炸距离的方式生成爆炸图,但是无法实现爆炸图的自动生成;Correa等[3]利用模型分层的方式将模型不断地剥开来显示模型的内部细节;Bruckner等[4]利用力学原理对模型进行拆分,部分实现了自动爆炸。于嘉鹏等[5-6]提出了利用装配序列规划算法及零部件几何信息自动生成复杂产品爆炸图的方法,并基于UG NX平台开发了面向复杂产品的数字化装配序列规划系统对算法进行了验证。之后提出了基于递归循环的层次化爆炸图自动生成算法,该算法对层次化装配序列进行深度优先循环搜索,实时计算已爆炸零部件的累积包围盒,从而确定待爆炸零件位移矢量,自动生成间隔均匀有序、结构紧凑且空间层次感强的爆炸图。邢宇飞等[7]提出了一种局部爆炸图自动生成方法,为降低计算复杂度,该方法利用蚁群算法求解零件的爆炸顺序。赵鸿飞等[8]则是使用同步约束解除的方法生成爆炸图。以上研究推动了爆炸图自动生成技术的发展,其中部分研究成果还在工程实践中得到了应用。
当前,大部分商品化三维CAD系统都有自动爆炸功能,如达索公司的CATIA、西门子公司的UG NX和PTC的Creo等,但商品化三维CAD系统自动爆炸功能存在爆炸不完全、位置不合理、不能再次调整等问题,不能很好地满足工程应用中的效率和准确性要求。如CATIA提供的自动爆炸工具,生成的爆炸图不尽如人意,爆炸后模型比较杂乱,而且爆炸之后难以调整爆炸距离,调整单个模型的爆炸状态也比较困难,导致CATIA中的自动爆炸工具利用价值不高,不能很好地满足产品生命周期各阶段对爆炸图的应用需求。因此,本文针对CATIA自动爆炸功能存在的问题,提出了基于微位移和碰撞检测的分层自动爆炸方法,并开发了自动爆炸图制作工具。
本文提出的自动爆炸过程大体上类似于剥洋葱的过程,即将模型一层一层由外向内进行剥离,从而生成有层次的爆炸图。首先在模型爆炸前,设置一个在爆炸过程中不动的模型作为爆炸的基体;然后根据选定的基体及模型的装配约束情况确定一个优化的试爆炸顺序,并将模型分为多个试爆炸层;接着按照分层顺序对每一层进行试爆炸,确定每层零件的爆炸方向和爆炸距离,直到所有分层都完成爆炸为止,如图1所示。
图1 基于微位移和碰撞检测的分层自动爆炸图制作方法
在自动爆炸时,依次将试爆炸层中的每一个模型按照X+、X-、Y+、Y-、Z+、Z-方向做微小的移动,然后检测移动后的模型是否与其他模型发生了干涉,如果没有发生干涉,说明在当前状态下模型在该方向上是可以爆炸的,将该方向记录为模型的可爆炸方向,否则当前状态下模型在该方向上是不可爆炸的。每一个模型经过6个方向的试爆炸后,如果存在几个可行的爆炸方向,则选择一个最优的爆炸方向并记录下来,否则在下一轮试爆炸时继续试爆炸该模型。
在一个试爆炸层的模型全部完成试爆炸后,为了防止对下一层(即里层模型)的试爆炸结果产生影响,将该层模型中存在可爆炸方向的模型按照所得的最优方向移动单层爆炸距离。接着,继续对下一层模型以及之前没有找到可爆炸方向的模型进行试爆炸,并将有可行爆炸方向的模型移动单层爆炸距离。为了防止新爆炸的模型与之前爆炸的模型发生接触,如果在某个方向上产生了新的可以爆炸的模型,将该方向上之前已经爆炸的模型全部再移动一个单层的爆炸距离,这样模型就可以按照一定的层次产生爆炸。以此类推,重复上述过程,直到所有的模型都完成爆炸或者所有的模型都没有可爆炸方向,此时自动过程完成。
现以图1所示的模型自动爆炸过程为例,进一步说明自动爆炸算法的基本过程和思想。在自动爆炸的过程中,首先根据部件中各个零件的接触情况确定试爆炸顺序并分层,第一层为所有的螺钉、垫片、螺塞和定位销,第二层为端盖和支架盖。然后试爆炸第一层模型,将每一个零部件沿着6个标准方向进行微小移动并进行干涉检测。经过检测,所有的螺钉和油塞均可以移动,所以将其爆炸到计算得到的位置。接着将第一层剩下的垫片进行微位移和干涉检测并进行爆炸,并将同方向的螺钉再移动一个单层的爆炸距离。最后对第二层的端盖和支架盖进行微位移和干涉检测,并将其移动到计算得到的位置,完成爆炸。
在基于微位移和干涉检测技术确定模型的爆炸方向时,需要将每一个模型沿着6个方向进行微移动,并且检测微移动以后是否与其他模型产生干涉,这两个操作相对来说是比较耗时的,因此模型试爆炸的次数直接影响自动爆炸的速度,而试爆炸的顺序直接影响需要试爆炸的次数。为了减少模型的试爆炸次数,提高计算效率,本文提出了一种基于装配约束关系的爆炸顺序分层方法。该方法首先以基体模型建立根节点,接着找到与基体模型存在装配约束关系的所有模型作为树的一级节点。然后遍历所有一级节点模型,寻找与一级节点模型有装配约束关系但是不在树中的模型,以此类推,直到所有需要爆炸的模型节点都在树中。
以图1中模型为例,将底座设为爆炸的基体,建立一个树结构,将底座设为树结构的根节点,接着找到所有与底座有装配约束关系的零部件,即端盖、支架盖、螺钉和定位销。然后遍历树结构的第一层,可以发现与端盖有装配约束关系的模型有垫圈和螺塞,与支架盖有装配约束关系的模型有螺钉和垫圈。此时可以形成如图2左侧所示的装配约束树结构,首先可将所有的叶子节点进行试爆炸,即将所有的螺钉、垫圈、螺塞和定位销进行试爆炸,去除这些节点后的装配约束树以及后续的去除步骤如图2右侧所示。按以上顺序试爆炸时,可以在一定程度上减少模型试爆炸次数,提高爆炸速度。
图2 爆炸顺序分层确定方法
零部件爆炸顺序分层确定后,针对每一层的零部件,通过基于微位移和碰撞检测的方法来确定爆炸方向。该方法将需要爆炸的模型依次沿X+、X-、Y+、Y-、Z+、Z-6个标准方向进行微小的移动,并在移动后检测模型是否与其他模型有干涉,如果移动之后没有发生干涉,则该方向可以爆炸。每一个模型在6个方向上进行微位移和干涉检测的结果有以下几种情况:
1)模型有0个可爆炸方向。此时,先跳过该模型去尝试爆炸其他模型,等其他模型爆炸完成后再次尝试该模型是否有可爆炸方向。
2)模型有1个可爆炸方向。将该方向设定为该模型的爆炸方向。
3)模型有2~6个可爆炸方向。在这种情况下有多个符合要求的爆炸方向时,需要选择一个最优的方向将模型移动初始的爆炸距离。最优的方向一般为在该方向上可以爆炸但在其反方向不可以爆炸的方向。如果存在多个这样的最优方向,则选择其中的一个最优方向作为爆炸方向。如果没有最优的爆炸方向,则选择任意一个可爆炸方向即可。
如图3(a)所示,X+、X-、Y+、Z+、Z-均为端盖的可爆炸方向,由于端盖在Y-方向上不可爆炸,所以Y+方向为最优的方向。在图3(b)中,X+、X-、Y+、Z+均为支架盖的可爆炸方向,由于Y-、Z-方向均不可爆炸,所以Y+、Z+方向均为最优的爆炸方向。此时Z+和Y+方向都是比较理想的爆炸方向,在这种情况下选择第一个得出的最优爆炸方向即可。在图3(c)中套筒有Y+、Y-两个可爆炸方向,但是没有最优爆炸方向,此时选择任意一个可爆炸方向即可,此处选择第一个得出的爆炸方向,即Y+方向为最优爆炸方向。
图3 最优方向确定
在自动爆炸时,确定了模型的爆炸方向后,需要将模型按照计算的方向移动一个预定的距离,这个距离就是模型的单层爆炸距离。
为了能够使预定的爆炸距离对不同的模型都有较好的可利用性,单层爆炸距离需要按照模型的外形尺寸计算得出。根据多次实验及结果评估,可知将单层爆炸距离定为模型的包围盒的长、宽、高的平均值的1/2能够达到较好的效果。
计算单层爆炸距离的公式为:
(1)
(2)
式中:L,W,H分别为模型包围盒的长、宽、高;Lenaven为模型包围盒边长的平均值;exp(lDis)为计算得出的单层爆炸距离。
基于上述算法,笔者利用Visual Studio开发环境并配合CATIA提供的Automation API,开发了爆炸图工具,该爆炸图工具包括爆炸场景管理模块、模型树设置模块、爆炸方向计算模块、总体爆炸参数设置模块、节点爆炸参数设置模块以及二次爆炸模块。图4所示为爆炸图制作界面,图5所示为某减速器模型的爆炸效果。
图4 自动爆炸图界面
图5 自动爆炸实例
本文基于CATIA开发的爆炸图自动生成工具已成功应用于高速轨道交通大型部件的装配工艺设计,提高了装配工艺设计的质量和效率。该算法的不足之处在于进行爆炸方向确定时依次按照6个标准方向进行微小的移动并不能覆盖所有情况,笔者接下来将对算法进行优化,以进一步提高自动爆炸图制作效率。