1. 引言
钣金件广泛应用于航空航天、轻工、电子等众多领域,因其包含特殊的形状和特征,如弯边、榫接和纵梁切口等,在跨平台的信息交换如STEP和IGES格式文件存储中,其特征信息会丢失,对于后续的模型处理、重建,以及加工工艺和模具设计产生不利影响。因此有必要对交换格式的钣金模型进行特征识别和提取。
钣金件有其自身的特点,一般是金属薄板或者毛坯经过变形、修剪等加工而成。目前已出现不少钣金特征识别方法,用于修剪特征、变形特征和自由曲面特征的识别。修剪特征是通过剪切操作,如下料,开口,冲孔和切断等形成的,具体可采用基于几何形状和拓扑的推理方法 [1]、基于布局冲孔刀具路径规范的轮廓偏移 [2] 等方法进行识别;而变形特征的形成是纯变形(如弯曲)或剪切和变形操作共同作用的结果,可采用基于中心平面模型 [3] [4]、基于图 [5] 以及基于规则 [6] 的特征识别方法;自由曲面特征是通常由自由曲面的变形所形成的,具体可采用基于形状匹配 [7]、基于分离曲线 [8] 等方法识别。上述特征识别方法有的针对某种单一特征,有的稍显复杂。
本文基于ISO 01303-42中非刻面流形信息B_rep的定义,从STEP格式中提取钣金件几何和拓扑信息,经分类、组合,识别并恢复三维模型中的特征信息。
2. 特征定义
特征可定义为几何模型的一部分,在产品生命周期的多个阶段具有特定意义,并由其属性来描述。特征的属性包括几何结构、与其它特征的父子关系和参数三部分。
特征的几何结构由几何和拓扑信息组成,可用于区分不同的特征;与其它特征之间存在的父子关系,反映了几何模型中的特征创建顺序,由其几何结构之间相邻的拓扑信息表示;参数可从其几何结构中提取,分为数值或非数值两种类型,可体现出设计意图。例如,孔特征中,孔的面是其几何结构,通过孔的边描述和父特征的关系,参数包括孔的位置和直径。
本文研究的钣金件经折弯、冲压等工艺加工,并由横向框架支撑的纵梁加固,是一种比强度高的半单壳的结构。根据钣金件加工所采用的工艺类型将钣金设计特征分为基本特征、修剪特征和变形特征,如图1所示。
(1) 基础特征其几何结构构成钣金模型主要几何表面,分为腹板、弯边、变形弯边以及组合弯边等特征。腹板是通过切割毛坯和在其上创建其它特征的变形操作形成的,其几何结构中含有钣金模型中最大面积的平面。弯边和变形弯边是在其父特征(腹板或者弯边)的外部边界上经过折弯操作或榫接变形所形成的,具有相似的几何结构。组合弯边是由多个连接的弯边组合而成。如图2所示,面积最大的平面是腹板特征的几何结构,其中腹板边界是通过切割毛坯(绿色线表示),以及其上创建弯边等特征的变形操作(红色线表示)形成的。

Figure 1. Classification of features in sheet metal models
图1. 钣金模型特征分类
(2) 修剪特征是在基本特征几何表面进行修剪操作而成的,分为开口、孔、纵梁开口、止裂口和倒角,如图3所示。开口是通过删除其父特征的一部分来形成,并不会修改父特征的外部边界。孔可以认为是圆形的开口。纵梁开口是通过修改父特征的边界,并拆分由双侧榫接产生的弯边或者变形弯边而形成的,主要目的是为了给纵梁留出空间。止裂口可以避免相因邻弯边之间的尖锐邻接导致的开裂。倒角是通过圆滑的凸角形成的,通常位于孔的附近,与其对应的孔具有同心约束。止裂口和倒角可以被视为其父特征的一部分,但由于可体现出设计意图,因此将它们视为不同的特征。
(3) 变形特征是对父特征进行变形操作而形成的,包括冲压开口、冲压孔、榫接、双侧榫接、筋和浅成型等,如图4所示。冲压开口和冲压孔是通过移除父特征一部分,并在移除部分的边界处形成加强边来形成。榫接和双侧榫接是在腹板或弯边上产生凹坑的阶梯变形,是变形弯边等特征形成原因。筋是由腹板部分突出而成的,可以是直的或弯曲的。浅成型是经过模具冲压等操作形成的。

Figure 4. Illustration of deformation features
图4. 变形特征示例
3. 特征识别
本文研究STEP格式钣金模型特征识别,方法流程如图5所示

Figure 5. Flow chart of feature recognition
图5. 特征识别流程图
3.1. 拓扑信息的分类和组合
对B_rep表示法描述的三维钣金模型进行特征识别之前,需要对其中的拓扑信息进行提取和分类,并组合成面集。
3.1.1. 面的分类
本文针对CAD特征造型软件创建的模型,若两个面在其共有边上的每个点都具有相同的切平面,则它们是G1连续。
从表面积最大的面开始搜索,对面进行分类。对于相邻面,根据共有边上的连续性和邻接特点,采用深度优先算法进行搜索,本文以图6为例,按以下顺序和规则进行面的分类和转化。
(1) 薄板面和修剪面未经修剪的钣金模型的正反面均为薄板面;修剪面则是通过修剪操作生成的表面。相邻薄板面之间是G1连续的,而薄板面与修剪面之间不是G1连续的。本文搜索时从模型中面积最大的薄板面开始,判断与相邻面是否为G1连续,若是则为薄板面,否则为修剪面,如此将所有面分类为薄板面和修剪面。
(2) 腹板面将面积最大的薄板面定义为腹板面(红色)。
(3) 折弯面和内环面与腹板面外环相邻的薄板面称为折弯面(黄色);而与腹板面非外环相邻的薄板面称为内环面(粉色),与内环面相邻且非修剪面也为内环面。
(4) 内、外侧面根据已经分类的腹板面、折弯面和内环面,求其正反面的面积之和,面积小的为内侧面,大的为外侧面。本文基于内侧面进行面的分类和特征识别。
(5) 墙面和滞留面对于尚未分类的薄板面,若只与1个折弯面相邻称为墙面;多于1个则称为滞留面。滞留面是一种过渡面,后续会转化为连接面、折弯面或墙面。与腹板面类似,与墙面外环相邻的薄板面称为折弯面;而与墙面非外环相邻的薄板面称为内环面,与内环面相邻且非修剪面也为内环面。如此将所有薄板面分类为腹板面、墙面、滞留面、折弯面和内环面。
(6) 面类型转化由于榫接操作产生一些面的类型,为便于后续集合的创建,需要对某些面的类型进行转化,包括:1) 折弯面(榫接操作产生)转化为连接面;2) 滞留面转化为连接面、折弯面或墙面;3) 墙面(榫接操作产生)转化为折弯面,如图7所示,如此使得多个折弯面间用连接面连接起来,墙面之间以及墙面与腹板面之间由折弯面连接起来。
具体转化规则:1) 对于多个相邻的折弯面,分别从始、末两端开始,若第二个折弯面两侧仍为折弯面,则转化为连接面,形成折弯面–连接面–折弯面的连接方式;2) 折弯面之间的滞留面转化为连接面,与连接面相邻的滞留面转化为折弯面,折弯面相邻的剩余的滞留面转化为墙面;3) 对于多个相邻的墙面,分别从始,末两端开始遍历,若第二个墙面两侧仍为墙面,则转化为折弯面,形成墙面–折弯面–墙面的连接方式。
3.1.2. 面集的创建
(1) 榫接面集是腹板或弯边上子榫接的几何结构,包含两个连接面、三个折弯面和一个墙面,如图8所示(绿色)。其创建规则:对于多个彼此间只以折弯面间隔的连接面,从两端开始,若两端连接面相邻的折弯面和另一个连接面相邻,则构建一个榫接面集,涵盖上述的两个连接面以及它们之间的折弯面;并在该折弯面相邻的墙面中,搜索和上述的两个连接面都不相邻的墙面,其相邻的所有折弯面也包含在榫接面集中。
(2) 腹板面集钣金件模型存在唯一的腹板面集,包括一个腹板面和若干个变形腹板面,是腹板的几何结构,如图8所示(红色)。若腹板面和榫接面集中两个连接面均不相邻,则腹板会因榫接变形,产生变形腹板面。在上述榫接面集中,若存在不与腹板面相邻且只有一个相邻连接面的折弯面,则将其相邻的墙面修改为变形腹板面并加入腹板面集。和腹板面类似,通过搜索得到的变形腹板面,查找其余的变形腹板面。
(3) 弯边面集包含一个墙面和若干与其相邻的折弯面,是弯边或变形弯边的几何结构,如图8所示(黄色)。通过所有不在榫接面集中的墙面,创建弯边面集。对于和墙面相邻的折弯面,若不在榫接面集中且和腹板面或变形腹板面相邻,则加入弯边面集。然后对于未包含折弯面的弯边面集,若其墙面相邻的折弯面和已包含折弯面的弯边面集中的墙面相邻,则加入到该弯边面集。如此,所有的弯边面集都已包含墙面和若干与其相邻的折弯面。
3.1.3. 环和边的分类
(1) 环分为外环、筋状环、内环、孔状环和浅成型环,如图9所示。
1) 外环:从B_rep模型提取的子类型,用于确定面的外部边界;
2) 浅成型环:包围的内环面不和修剪面相邻,搜索深度为3且最内侧面是平面;
3) 筋状环:包围的内环面不和修剪面相邻,且不是浅成型环;
4) 内环:由与可分辨曲线相关联的边组成;
5) 孔状环:由与不可分辨曲线相关联的边组成,是特殊的一种内环。
这里可分辨曲线是指不是由相同的基本几何方程定义的曲线,而不可分辨曲线是由同样的方程定义的曲线。
(2) 边分为修剪直线边、修剪非直线边、非修剪直线边、非修剪非直线边,如图10所示。
1) 修剪直线边:薄板面和修剪面共有,几何类型为直线;
2) 修剪非直线边:薄板面和修剪面共有,几何类型非直线;
3) 非修剪直线边:薄板面之间共有,几何类型为直线;
4) 非修剪非直线边:薄板面之间共有,几何类型非直线。
3.2. 特征识别规则
钣金件模型特征的识别需要寻找符合特征的几何结构,构建特征之间的父子关系,计算得到特征的参数。腹板存在于所有的钣金模型中,是钣金件模型中其余特征的直接或者间接的父特征,且本身没有父特征,因此应首先识别腹板。
3.2.1. 腹板及其子榫接、双侧榫接的识别
腹板面集为腹板的几何结构,其中变形腹板面的存在表明腹板因榫接而变形,因此需要识别出位于腹板的子榫接。根据有无榫接变形,腹板面集可分为三种情况:
(1) 若腹板面集中仅存在腹板面,所有的榫接皆位于弯边之上。
(2) 若腹板面集中存在一个变形腹板面,则表明腹板上存在一个子榫接。如图11所示,榫接是腹板上的子特征,腹板面和榫接面集存在下述关系:腹板面与榫接面集的折弯面共享边,但与榫接面集的任何连接面没有共享边。如此找出榫接面集并识别出榫接,并记为腹板的子榫接。榫接面集的折弯面通过共有边分别与腹板面、变形腹板面建立起榫接和腹板之间的父子关系。
(3) 若腹板面集存在多个变形腹板面,则表明腹板因双侧榫接或多个榫接变形。腹板上多个子榫接可用来构造双侧榫接,如图12所示,识别规则如下:从两端开始,若相邻的两个子榫接具有相同参数,但跳动矢量方向相反。识别出的双侧榫接几何结构由原来的两个榫接的榫接面集组成,其榫接面集中的折弯面通过共有边分别与腹板、变形腹板面建立起双侧榫接和腹板之间的父子关系。
3.2.2. 弯边及其子榫接、变形弯边和组合弯边的识别
榫接只在腹板或者弯边上创建,未在腹板上的榫接都是弯边的子特征,识别方法类似于腹板上的子榫接。弯边面集是弯边和变形弯边的几何结构,可用来创建临时弯边。临时弯边和榫接的父子关系决定临时弯边转化为弯边还是变形弯边,如图13所示,按照以下方法判断。
1) 求临时弯边中墙面的法向量与榫接中墙面的法向量的叉积;
2) 判断叉积结果与腹板面或变形腹板面法向量方向是否相同。
若方向相同,则对于榫接的父特征、榫接和子特征,其折弯面和腹板面或变形腹板面的共有边的方向为逆时针;若方向相反,则是顺时针。而位于腹板面或变形腹板面外环上的边,默认方向为顺时针。

Figure 13. Parent-child relationship between flange and joggle
图13. 榫接和弯边间的父子关系
若临时弯边是榫接的子特征,应转化为变形弯边;若仅是榫接的父特征,且不是榫接的子特征,则将转化为弯边。榫接面集中的折弯面通过与弯边、变形弯边的墙面的共有边建立和弯边或变形弯边的特征关系。
如果变形弯边有两个父榫接,或者弯边有两个子榫接,需判断这两个榫接是否可以转化为双侧榫接。转化规则和和腹板上的双侧榫接类似:若这两个榫接具有相同参数,但跳动矢量方向相反。识别出的双侧榫接中的折弯面通过共有边与墙面建立起双侧榫接和弯边或变形弯边之间的父子关系。
如图14所示,若存在未包含在弯边面集和榫接面集的折弯面,与两个未转化临时弯边中的墙面相邻,且周围有未在榫接面集的连接面,则识别出组合弯边,其几何结构包含上述的两个临时弯边、折弯面和连接面。至于仍未转化的临时弯边,应转化为弯边。弯边中的折弯面通过共有边建立其与父特征之间的特征关系。
3.2.3. 纵梁开口、止裂口和倒角的识别
纵梁开口、止裂口和倒角等子特征的识别依赖于弯边和变形弯边。对于纵梁开口,如图15所示,首先寻找满足以下条件的变形弯边对或弯边对:
1) 相同支撑几何结构;
2) 在其相邻腹板面或变形腹板面的外环方向上,至少存在两组连续的修剪非直线边和修剪非直线边集合,且其折弯面都存在边和上述边集合中的至少一组相交。
若存在,则说明存在纵梁开口,其几何结构为上述边集合中,和折弯面中的边相交且长度之和最小的边集合,通过腹板面的外环建立起与其父腹板的特征关系。和这组边相邻的变形弯边对或弯边对,若变形弯边对都有父榫接,弯边对都有子榫接,和腹板上的双侧榫接识别规则类似,识别双侧榫接。
对于止裂口,如图16所示,首先寻找符合以下条件的变形弯边对或弯边对:
1) 支撑几何结构不相同;
2) 中间存在一条修剪非直线边,且与弯边面集的折弯面含有的修剪非直线是G1连续。
若存在,则识别出止裂口,其几何结构由这条边组成,通过腹板面外环建立起与腹板的特征关系。
对于倒角,如图16所示,可通过腹板面或墙面外环中的修剪非直线边识别。若上述边和所在的外环上的相邻边之间是G1 连续,且不是其他特征的一部分,则识别出倒角。倒角的几何结构由修剪非直线边组成,通过腹板面或墙面的外环建立起与腹板或弯边的特征关系。
3.2.4. 孔、开口,冲压开孔,冲压开口和筋等识别
孔、开口,冲压开孔,冲压开口和筋等依赖于腹板面、变形腹板面或弯边面集中的墙面含有的非外环,并通过非外环建立起与父特征之间的关系,具体按照以下规则识别:
1) 孔和冲压开孔孔状环中若包含有内环面,则识别出冲压开孔,其几何部分有由孔状环及其包围的内环面;若不包含内环面,则存在孔,其几何部分包含孔状环包含的边;
2) 浅成型若存在浅成型环,则识别出浅成型,其几何部分包含浅成型环包含的内环面;
3) 开口和冲压开口内环中若包含内环面,则识别出冲压开口,其几何部分有内环和由内环环包围的内环面形成;如果不包含内环面,则存在开口,其几何部分由内环包含的边构成;
4) 筋若存在筋状环,则构建筋,其几何部分包含筋状环与被它包围的内环面。
4. 实验
在Windows7操作系统下,使用NX UG API在VS2015环境下进行开发,利用C++编程实现STEP格式钣金模型的特征识别。图17显示钣金模型的特征识别结果。具体识别步骤如下:
1) 提取STEP格式的钣金件3D B-rep 模型的面、环和边等信息,从面积最大的面开始,根据相邻面的连续性、面周围邻接特点对面进行分类和转化,并依次构建榫接面集、腹板面集和弯边面集,然后对环和边进行分类;
2) 通过腹板面集识别出腹板,并由榫接面集和腹板面集之间的邻接特点确定腹板上的子榫接和弯边的子榫接。弯边上的榫接区别了弯边和变形弯边,并检测弯边或者变形弯边的子榫接或者父榫接,识别出双侧榫接;
3) 在因榫接变形的弯边找到以后,还要检测组合弯边和其余弯边的存在。在弯边对和变形弯对基础之上,识别出止裂口;
4) 通过腹板面、墙面的外环上的边,识别倒角,并在其非外环上识别孔、开口,浅成型等特征。
识别出的具体特征及特征关系如表1所示。

Table 1. Features and parent-child relationship in sheet metal model
表1. 钣金模型特征及父子特征关系
5. 结论
(1) 基于STEP格式文件中的几何拓扑信息,研究了一种钣金模型特征识别方法,可有效识别、恢复钣金模型中的设计特征。
(2) 根据连续性和邻接特点,将模型中的面分为腹板面、折弯面、墙面、连接面和内环面,经分类转化形成折弯面–连接面–折弯面、墙面–折弯面–墙面的连接方式,方便钣金件面集的创建和特征的识别。
通过创建腹板面集、榫接面集和弯边面集,可快速识别钣金件的腹板、弯边、榫接和双侧榫接等基础特征、变形特征,以及其它修剪特征。