基于特征识别和多进程并行的快速干涉检查方法研究
2022-02-19程亚龙
程亚龙
(南京电子技术研究所,江苏 南京 210039)
随着产品复杂度的提升和三维设计的普遍应用,对三维模型进行干涉检查已成为必要的设计手段和必经的设计过程,因此快速,准确地完成干涉检查已成为提升产品设计效率和质量的关键一环[1]。目前主流的三维CAD软件均自带干涉检查模块,具备基本的干涉检查功能,采用的底层算法和准确度基本一致,但对于复杂装配模型而言,直接采用自带模块进行干涉检查容易出现系统卡顿现象,设计效率较低[2]。本文面向工程实际应用,在分析目前三维CAD模型干涉检查过程中存在问题的基础上,结合复杂装配模型的特点,设计了一种基于特征识别和多进程并行处理的快速干涉检查方法。
1 问题分析
对于大型复杂装配模型而言,主流CAD软件自带的模型干涉检查工具存在以下问题:
1)复杂产品零部件数量众多,顶层的总装模型占用存储空间多达数GB,使用普通计算机仅打开模型就需要数十分钟[3],如果直接进行干涉检查,内存消耗会迅速攀升,软件界面长时间无反应(俗称“假死”状态),导致干涉检查时间变长甚至软件崩溃。
2)大型装配模型除了复杂的结构件之外,还有数量众多的带螺纹紧固件[4],例如互相配合安装的螺栓、螺母会在内外螺纹相交处产生干涉,这种干涉是模型简化造成的允许的螺纹干涉,如果不作处理直接进行检查会严重拖慢检查速度,因此必须对紧固件之间的螺纹干涉进行提前处理。
3)主流CAD软件自带的干涉检查工具功能比较单一。以CREO2.0自带的干涉检查工具为例:第一,它只能对装配模型进行全局干涉检查,不能对骨架、外购外协模型等进行选择性排除,导致所有子装配模型必须全部检查,灵活性较低;第二,模型干涉并不完全是设计差错导致,需要人工对检查结果进行归类分析,但该工具不具备对检查结果进行分类显示的功能,逐个核查费时费力;第三,该工具缺少对干涉原因的选择与记录功能,无法通过人机交互生成最终的干涉检查报告。
针对上述三维设计过程中出现的问题,相关学者从以下方面进行了研究和解决:第一,对底层算法进行研究,主要是提高基于包围盒碰撞检测算法的效率和精度[5-6];第二,利用软硬件资源,通过并行计算、多核处理的方式提高干涉检查任务执行效率[7];第三,针对行业和对象特点,在主流CAD软件上开发适用于典型对象或行业的专用干涉检查工具和算法,完善软件功能[8]。上述研究对于普遍使用主流CAD软件进行产品设计的用户而言,实用性和通用性还需进一步研究、提高。
本文针对复杂装配模型,一方面,在后台利用高性能服务器采用多进程并行计算解决运行缓慢问题。另一方面,将带螺纹紧固件与其他结构件分开检测,通过特征识别技术提前排除紧固件螺纹干涉。最后,基于主流CAD软件开发具有模型处理、干涉检查、结果分析、报告生成等功能的干涉检查工具,一站式解决三维设计中干涉检查效率低、功能弱的问题。
2 基于特征识别的紧固件螺纹干涉特征判断方法
2.1 螺纹干涉分类
紧固件连接是结构连接中应用最广泛的方式之一,在复杂设备中紧固件数量巨大。其中大部分是带螺纹的紧固件,包括螺钉、螺栓等,它们与螺孔装配后必然形成大量螺纹干涉,因此必须提前识别该类螺纹干涉并予以排除,避免调用底层干涉检查算法。
螺纹干涉的双方为带有外螺纹的螺钉、螺栓和带有内螺纹的螺母、零件螺孔等。按照内外螺纹的种类不同可将螺纹干涉分为3类。螺栓与螺母形成的螺纹干涉如图1(a)所示,螺栓与零件上的螺纹通孔形成的螺纹干涉如图1(b)所示,螺栓或螺钉与零件上的螺纹盲孔形成的螺纹干涉如图1(c)所示。因此,首先应识别得到所有的螺钉、螺栓,定为外螺纹特征集合,再识别得到所有螺母和零件上的螺纹孔,定为内螺纹特征集合,最后通过特征匹配得到所有的螺纹组合。
图1 螺纹干涉分类示例
2.2 螺纹特征定义
为了将内外螺纹统一表达,定义螺纹特征t的数据结构如式(1)所示:
t={p,l,f,c1,c2,d,h}
(1)
式中:p为螺纹特征的内外属性;l为螺纹所在圆柱面的轴线;f为螺纹所在圆柱面;c1和c2为螺纹上、下端圆弧的圆心坐标;d为螺纹的直径;h为螺纹高度(或深度)。定义距离求解函数D=(x,y),x,y为空间中任意两点,则t.h=D(t.c1,t.c2)。
典型的标准螺钉、螺栓外形如图2所示,它们的外螺纹特征基本类似。由于是标准件,因此可以在螺钉模型建库时就预先定义相应的特征数据,干涉检查时直接调用即可。其他类型的螺钉螺母也可参照建立特征数据,本文不再赘述。
图2 外螺纹特征数据定义示例
典型的内螺纹特征及数据信息如图3所示。其中,螺母属于标准件,可以采用螺钉的建库方式,提前定义特征数据,使用时直接调用。其余两种零件上的螺纹孔则需要进行实时识别,获得其特征数据。
图3 内螺纹特征数据定义示例
2.3 螺纹孔的特征识别方法
螺纹孔的特征识别方法相对成熟,基于三维模型的B-Rep数据模型即可获取[4],建立单个零件上的螺纹孔识别流程如图4所示。
图4 零件螺纹孔特征识别流程
2.4 螺纹干涉特征判断流程
通过上述方法,将总装模型树中同级的所有零件上的螺纹孔、螺栓、螺钉、螺母等识别、提取出来,形成外螺纹特征集合Tou={ti|i=1,2,…,n}和内螺纹特征集合Tin={tj|j=1,2,…,m}。定义螺纹干涉组合特征的数据结构为r={t1,t2},t1为外螺纹特征,t2为内螺纹特征,定义Rt={rk|k=1,2,…,s},为螺纹干涉组合特征的集合,建立螺纹干涉组合特征判断流程如图5所示,通过该方法可识别出总装模型上所有的螺纹干涉特征集合Rt,在干涉检查时可直接排除。
图5 螺纹干涉组合特征判断流程
3 基于多进程并行的快速干涉检查方法
干涉检查的基本流程是零部件两两组合后排队依次检查,复杂装配模型的干涉检查时间会随着零部件数量的增加呈指数增长。因此,本文利用高性能服务器的高算力和大内存优势,在后台同时启动多个CAD系统进程,将待检查的零部件两两分组后同时发送给多个CAD系统并行进行检查,可成倍缩短检查时间。
3.1 检查对象分组
3.2 多进程并行干涉检查流程
定义任一个对象组g={p1,p2}进行干涉检查的流程如下:启动第j个CAD进程,该进程中首先打开总装模型结构树但不加载任何模型,分配g={p1,p2}给第j个CAD进程,该CAD加载打开零部件p1和p2,调用干涉检查算法对p1和p2进行检查,检查完毕反馈检查结果并关闭零部件p1和p2,清除缓存,等待下一个分配任务。
基于多进程并行的检查方式,建立干涉检查流程如图6所示,至于CAD系统进程数量的q则应该根据服务器的计算能力和内存大小进行综合试验后确定。
图6 多进程并行干涉检查流程
4 工具开发与实例验证
笔者基于CREO2.0开发的INTERF干涉检查工具软件,通过本地计算机和后台服务器相互配合可实现复杂装配模型的多进程并行干涉检查。图7所示为干涉检查工具的开始界面,设计师可对特定检查对象和排除检查对象进行指定。通过勾选“排除标准紧固件”即可在干涉检查时通过特征识别技术提前排除紧固件的螺纹干涉特征。其他干涉条目需要设计师交互选择干涉原因,处理完毕后再对其他动态干涉、焊缝干涉等进行人工检查,检查通过后即可将检查报告导出到本地或直接上传到PDM中该装配模型的产品目录下,如图8所示。
图7 INTERF工具初始界面
图8 干涉检查结果分析
以某产品的3个装配模型为例进行对比测试,结果见表1,模型越大,INTERF干涉检查工具的效率提升越明显。
5 结束语
本文提出的干涉检查方法通过特征识别技术快速排除了紧固件螺纹干涉,通过多个CAD进程并行分组检查提高了检查效率,并用简单的示例验证了该方法的有效性。但本文对非螺纹特征的紧固件识别排除还缺少研究,方法的通用性还需进一步完善,这将是后续的研究重点。
表1 干涉检查测试结果对比