首页> 中国专利> 一种基于AAG的MBD模型的加工特征识别方法

一种基于AAG的MBD模型的加工特征识别方法

摘要

本发明涉及一种基于AAG的MBD模型的加工特征识别方法,是指:以在Creo软件中建立的MBD模型为基础,提取MBD模型的信息,构建MBD模型的AAG,通过分解AAG得到其特征子图,将特征子图与预定义特征匹配,实现加工特征的识别。基于MBD的模型中除了包含模型结构、尺寸外,还定义了表面粗糙度和形位公差。本发明中基于MBD模型的加工特征识别,可以自动识别与提取模型中的加工特征,并将加工特征与工艺信息相关联。

著录项

  • 公开/公告号CN114925475A

    专利类型发明专利

  • 公开/公告日2022-08-19

    原文格式PDF

  • 申请/专利权人 山东科技大学;

    申请/专利号CN202210625017.0

  • 申请日2022-06-02

  • 分类号G06F30/17(2020.01);G06F30/20(2020.01);

  • 代理机构济南金迪知识产权代理有限公司 37219;

  • 代理人杨树云

  • 地址 266590 山东省青岛市经济技术开发区前湾港路579号

  • 入库时间 2023-06-19 16:26:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-06

    实质审查的生效 IPC(主分类):G06F30/17 专利申请号:2022106250170 申请日:20220602

    实质审查的生效

说明书

技术领域

本发明涉及一种在Creo中建立的三维模型的加工特征识别方法,特别涉及一种基于AAG的MBD模型的加工特征自动识别方法。

背景技术

现有的加工特征的识别方法有基于图的方法、基于体分解的方法、基于规则的方法等。基于图的方法通过获取模型面与边的几何拓扑关系,构建模型AAG,利用子图匹配识别出加工特征;基于体分解的方法将CAD模型的所有面进行求交,将零件的切削体分解为凸单元体,然后经过处理将凸体单元组合成特征单元,最后将组合得到的单元与预定义的特征匹配,得到相应的特征类型;基于规则的方法需要为每一类待识别的特征制定预定义的规则,通过判断是否符合规则进行识别。

以上现有的方法中对模型信息的表达不够全面,缺乏对凸特征的识别,识别结果不够准确且效率较低,而且识别结果仅表达了特征类型,没有考虑到相关工艺信息,不利于后续的工艺设计,两个拓扑结构和几何尺寸完全相同的模型,若其特征表面的粗糙度数和公差等级差别较大,其加工工艺可能完全不同,导致识别结果出现偏差。

基于AAG的加工特征识别,是指根据模型几何与拓扑信息构建模型AAG并对其进行分解,通过与预定义特征的匹配实现加工特征的识别。

发明内容

针对现有技术的不足,本发明提供一种基于AAG的MBD模型的加工特征识别方法。

本发明的目的是,提供基于AAG的MBD模型加工特征识别方法,实现对使用Creo建模软件建立的MBD模型中的加工特征进行自动识别与提取。本发明为实现上述目的所要解决的技术问题是,提取MBD模型的信息,构建模型的AAG表达,分解AAG得到特征子图,匹配特征子图和预定义特征,实现加工特征的识别。

术语解释:

1、MBD,基于模型的定义(Model Based Definition,MBD),弥合了三维模型直接用于制造的间隙。实际上,MBD是一种基于3D的产品数字化标注技术,它采用三维数字化模型对产品数字化信息的完整描述。

2、AAG,属性邻接图(Attributed Adjacency Graph,AAG),一种数据结构形式,在图的基础上扩展了节点以及节点连线表达的属性。

3、Creo软件,是美国PTC公司推出的机械产品三维数字化设计与分析软件,其主要功能包括产品的三维参数化建模、模型的运动学、动力学、热、磁场等的分析、以及零件的数控加工编程等。

4、AAM,属性邻接矩阵(Attribute Adjacency Matrix,AAM),一种属性邻接图的存储方式,本专利中用于存储AAG分解后的特征子图。

5、分解基面,指三维模型中包含一个或一个以上内轮廓的表面。内轮廓是指在模型表面内部,由首尾相连的边所构成的封闭环。如图1所示,六面体顶面f包含一个由四条模型边构成的内轮廓,f面即为三维模型中的一个分解基面。

6、特征基面,是指三维模型中的平面、且该平面属于凹面、且沿该面法向方向不存在该三维模型的实体。如图2中键槽底面,属于凹平面且沿其法向方向无该模型的实体,该面为此三维模型特征基面。

7、联合基面:是指两个不相连的模型表面,在实际加工中需要作为同一个面进行加工,其需要满足的条件为:两模型表面具有相同的方程表达式且至少有一个为凹面。如图3中的面f3和面f4,满足以上定义,是模型的联合基面。

8、最大凹连接子图:模型AAG中,某节点的最大凹连接子图是以此节点为起始节点,沿凹属性的节点连线向外延伸所能得到的最大连通图。

本发明的技术方案为:

一种基于AAG的MBD模型加工特征识别方法,是指:以在Creo软件中建立的MBD模型为基础,提取MBD模型的信息,构建MBD模型的AAG,通过分解AAG得到其特征子图,将特征子图与预定义特征匹配,实现加工特征的识别。

根据本发明优选的,根据MBD模型的信息,自动识别模型中的加工特征,并与工艺信息相关联,包括步骤如下:

步骤1:提取MBD模型的信息;

MBD模型的信息包括MBD模型的几何拓扑信息与注释信息;几何拓扑信息包括两个方面:一是面与边的连接关系,表现在面与边的凹凸性、面的邻接面以及边的邻接面;二是面与边的几何数据,面的几何数据为面的ID、面的类型以及面上的轮廓信息,边的几何数据为边的ID、边的类型;注释信息包括公差信息及粗糙度信息,公差信息包括公差符号、公差类型、公差值以及关联几何元素的ID、公差有无基准要求、基准面的ID,粗糙度信息包括粗糙度数值和粗糙度注释的关联面ID;

步骤2:构建MBD模型的AAG;

根据MBD模型的信息,定义AAG中的节点以及节点连线的属性,构建MBD模型的AAG;

步骤3:分解AAG得到其特征子图;

通过基于模型面的AAG分解算法,从模型面具有的属性出发,在AAG中搜寻具有分解基面属性的节点,根据其内轮廓组成边的凹凸属性,分类别提取凹凸特征的子图,并判断凸特征子图中是否仍含有凹特征子图;然后删除剩余AAG中非加工面对应的节点,并提取具有特征基面属性节点的最大凹连接子图;通过基于联合基面的子图重构算法,实现分割特征的子图合并;

步骤4:将特征子图与预定义特征匹配;

以AAM表示特征子图,通过基于AAM的特征匹配算法,识别模型中的加工特征,并得到其类型;

步骤5:加工特征识别结果的处理;

获得加工特征的特征面、刀具接近方向int类型变量TAD、粗糙度、公差信息,构造存储识别结果的数据结构,将加工特征与加工特征相关的工艺信息统一存储。

根据本发明优选的,步骤1中,提取MBD模型的信息的过程如下:

首先,定义结构体数据Surface_data、Edge_data、Contour_data、Surffinish_data以及Gtol_data,Surface_data包括surface_id、surf_type、surface_at、in_contour、surffinish_value以及gtol_data,分别用于存储面的ID、面的类型、面的凹凸性、面的内轮廓属性、面的粗糙度数值以及面的公差数据;Edge_data包括edge_id、edge_type、edge_at、adj_surf_id以及edge_in,分别用于存储边的ID、边的类型、边的凹凸性、边的相邻面ID以及边的内轮廓属性;Contour_data包括contour_type、c_edge_id,分别用于存储轮廓的类型、轮廓的组成边ID;Surffinish_data包括sur_symbol、sur_value、sur_asso_element,分别存储粗糙度的符号、数值、粗糙度关联元素ID;Gtol_data的成员包括gtol_symbol、gtol_type、gtol_value、gtol_asso_element、reference_id,分别用于存储公差的符号、类型、数值、关联几何元素ID、基准面ID;

然后,定义MBD模型信息结构体数组存储提取的MBD模型的信息,MBD模型信息结构体数组包括以Surface_data定义的模型表面信息结构体数组surface[]、以Edge_data定义的模型边信息结构体数组edge[]、以Contour_data定义的轮廓信息结构体数组contour[]、以Surffinish_data定义的表面粗糙度信息结构体数组surffinish[]、以Gtol_data定义的公差信息结构体数组gtol[]。

通过Creo软件的二次开发工具Creo TOOLKIT,开发应用程序读取Creo模型的内部数据结构,提取MBD模型的信息,并将其存储到定义的MBD模型信息结构体数组中。

进一步优选的,MBD模型的几何拓扑信息的提取方法为:

通过函数ProMdlCurrentGet获取MBD模型句柄,将MBD模型句柄作为遍历函数的输入参数,首先,调用ProSolidSurfaceVisit遍历MBD模型的面,输出面的句柄数组,将面的句柄数组元素作为输入参数,调用函数依次获取MBD模型的面的ID、面的类型、面的凹凸性以及邻接面ID;然后,调用ProSurfaceContourVisit,遍历面上的轮廓,判断轮廓类型并获得轮廓组成边ID;最后,调用ProContourEdgeVisit获取边的句柄数组,将其作为函数的输入参数,依次调用函数获取边的ID、边的类型、边的凹凸性、边的相邻面ID。

进一步优选的,MBD模型的注释信息的提取方法为:

通过调用ProSolidSurffinishVisit获得粗糙度的句柄数组,以粗糙度的句柄数组的元素作为函数的输入参数,调用函数获得粗糙度符号、粗糙度数值、粗糙度关联元素ID;调用ProMdlGtolVisit遍历MBD模型公差,获取其句柄数组并将句柄数组元素作为函数的输入参数,调用函数获得公差符号、公差类型、公差数值以及关联几何元素的ID、基准面的ID。

根据本发明优选的,步骤2中,构建MBD模型的AAG,包括步骤如下:

201:定义AAG中的节点以及节点连线的属性;

AAG中的节点对应MBD模型中的面,AAG中的节点连线对应MBD模型的边;其定义如下:

AAG中的节点的属性包括面的类型、面的凹凸性、分解基面、特征基面及联合基面;

面的类型:用整型变量标识面的类型属性,分为平面、圆柱面、圆锥面、以及其他曲面;

面的凹凸性:用整型变量标识面的凹凸性;

分解基面:用布尔变量标识面的分解基面属性,如果该面为分解基面,则标识为True;否则,标识为False;

特征基面:用布尔变量标识面的特征基面属性,如果该面为特征基面,则标识为True;否则,标识为False;

联合基面:用整型变量标识面的联合基面属性,如果两面为联合基面,则将两面的联合基面属性标识为相同的整型数值;

AAG中的节点连线的属性包括边的类型、边的凸凹性及内轮廓边;

边的类型:用整型变量标识边的类型,分为直线边、圆弧边和其他曲线边;

边的凸凹性:用整型变量标识边的凸凹性,分为凹边、凸边和光滑边;

内轮廓边:用布尔变量标识边的内轮廓边属性;

202:构建MBD模型的AAG;

通过搜索步骤1中已经提取的MBD模型的信息,建立AAG;步骤如下:

首先,构造存储AAG节点的数据结构Node以及存储节点连线的数据结构Line,结构体Node包括surface_id、adj_line、node_type、node_at、d_face、f_face以及c_face,分别存储面的ID、与节点相连接的节点连线、节点的类型属性、节点的凹凸性属性、节点的分解基面属性、节点的特征基面属性以及节点的联合基面属性;结构体Line包括edge_id、node1、node2、line_type、line_at以及in_contour,分别用于存储边的ID、节点连线连接的节点一、节点连线连接的节点二、节点连线的类型属性、节点连线的凹凸属性以及节点连线的内轮廓属性;分别定义数据类型为Node的结构体数组node[]以及类型为Line的结构体数组line[];节点连线连接的节点一、节点连线连接的节点二是指节点连线的两端节点;

其次,初步构建AAG:令node[].surface_id等于surface[].surface_id,令line[].edge_id等于edge[].edge_id;

再次,根据模型面与边的拓扑关系判断节点与节点连线的连接关系:根据node[]中元素所代表的模型面,获得该模型面上的边的ID,若line[]中某元素含有该ID,则将对应的node[]写入line[].node1或者line[].node2,将line[]写入node[].adj_line中;

最后,添加数组node[]、line[]各元素的其它成员信息;包括:

①确定node[]的其它信息,具体为:根据node[].surface_id获得面的类型,若面为平面,则node[i].node_type=1,若面为圆柱面,则node[i].node_type=2,若面为圆锥面,则node[i].node_type=3,若面为其它曲面,则node[i].node_type=4;根据node[].surface_id获得面的凹凸性,若面为凹面,则node[i].node_at=-1,若面为凸面,则node[i].node_at=1;若ID为node[].surface_id的面为分解基面,则node[i].d_face=true,否则node[i].d_face=false;若ID为node[].surface_id的面为特征基面,则node[i].f_face=true,否则node[i].f_face=false;若ID为node[i].surface_id的面与ID为node[j].surface_id的面为联合基面,则node[i].c_face=node[j].c_face=k,k为一个整数;

②确定line[]的其它信息,具体为:若ID为line[i].edge_id的边分别为直线边、圆弧边、其它类型的边,则分别对应line[i].line_type=1、line[i].line_type=2、line[i].line_type=3;若ID为line[i].edge_id的边分别为凹边、光滑边、凸边,则分别对应line[i].line_at=-1、line[i].line_at=0、line[i].line_at=1;若ID为line[i].edge_id的边是内轮廓边,则line[i].in_contour=true,否则line[i].in_contour=false。

根据本发明优选的,步骤3中,包括步骤如下:

301.分解AAG

以结构体数组node[]为基础,根据节点间的连接关系以及分解基面、特征基面、联合基面属性信息,将其拆分为多个子部分,通过子部分包含的节点获取其节点连线,最后输出每个子部分对应的节点连线与节点;

进一步优选的,分解AAG的具体实现过程如下:

首先,遍历node[],若其中的元素的分解基面属性为true,则遍历与该节点相连接的节点连线,若节点连线具有内轮廓属性以及凹边属性,标记该节点为-1,并将该节点连线删除;若节点连线具有内轮廓属性以及凸边属性,标记该节点为1,并将该节点连线删除;

然后,重新遍历数组node[],若节点标记为-1,获取与该节点相连接的node[]与line[],并删除具有凹边属性的line[],将结果写入数组node1[][]与line1[][]中;若节点标记为1,获取与该节点相连接的node[]与line[],分别写入数组node1[][]与line1[][]中;

再次,删除line[]与node[]已提取的元素,重新遍历node[],若node[]具有凸面属性,则删除与其有连接关系的line[];

最后,再重新遍历node[],若node[]具有特征基面属性,提取与node[]有连接关系的line[]以及与line[]相连接的其它node[],将结果写入node1[][]与line1[][]中。

302.重构特征子图

步骤301将存储AAG信息的数组line[]与node[]被分解为多个子部分,并用node1[][]、line1[][]分别存储各子部分所包含的节点以及节点连线,在node1[][]中搜寻具有相同联合基面属性的节点,合并其所在的子部分,实现特征子图的重构。

进一步优选的,重构特征子图的具体实现过程如下:

遍历数组node[][],若某一数组元素node[i][k]具有联合基面属性,则继续在数组node[][]中寻找与该数组元素node[i][k]的联合基面属性相同的元素node1[j][m],并将node1[j][m]的成员数据信息写入node1[i][k]中,更新line1[][]、node1[][]得line2[m][]、node2[m][]。

根据本发明优选的,步骤4中,将特征子图转化为AAM,实现特征的匹配,包括步骤如下:

401:建立AAM

AAM使用二维数组M[n][n]来表示,其结构如式(I)所示:

式(I)中,n-特征子图的节点数;m

矩阵M[n][n]中元素的取值规则定义如下:

以三位正整数表示数组元素m

以两位正整数表示数组元素m

402:AAM的匹配

首先,判断特征子图AAM与预定义AAM阶数是否相同;

然后,判断特征子图AAM与预定义AAM的对角线元素所构成的集合是否相等;

最后,判断特征子图AAM与预定义AAM的每一行元素所构成的集合是否相似;每一行元素所构成的集合是否相似,是指:特征子图AAM每一行元素构成的集合与预定义AAM每一行元素构成的集合存在一一映射的关系;

如果特征子图AAM与预定义AAM阶数相同,对角线元素所构成的集合相等,且AAM的每一行元素所构成的集合相似,则匹配成功,否则,则匹配不成功。

根据本发明优选的,步骤5中,处理方法为:

构建结构体Featrue_data描述加工特征及其相关信息,以结构体Featrue_data定义结构体数组featrue[]存储加工特征;

结构体Featrue_data的具体成员包括:字符串类型变量featrue_id和featrue_type;Surface_data类型变量surface;刀具接近方向int类型变量TAD;double类型变量Ra;Gtol_data类型变量gtol,分别存储加工特征的ID、类型、特征面、刀具接近方向、粗糙度以及形位公差;其中,刀具接近方向int类型变量TAD取值为1~6,分别代表+x、-x、+y、-y、+z、-z六个方位。

一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述基于AAG的MBD模型的加工特征识别方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于AAG的MBD模型的加工特征识别方法的步骤。

本发明的有益效果为:

本发明中基于AAG的MBD模型的加工特征识别,通过提取模型面与边的几何拓扑信息,构建模型AAG,并扩展了AAG的表达内容,使得AAG对模型的表达更准确,根据一定的算法规则,对模型AAG进行分解,并通过AAM实现加工特征的匹配,识别出加工特征的类型,通过对识别结果的处理,获得加工特征的其它信息,实现加工特征与工艺信息的关联。

附图说明

图1为分解基面的示意图;

图2为特征基面的示意图;

图3为联合基面的示意图;

图4为本发明实施例中的MBD模型示意图;

图5为本发明实施例中的MBD模型的表面示意图;

图6为基于AAG的MBD模型加工特征识别方法的流程示意图。

具体实施方式

下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。

实施例1

一种基于AAG的MBD模型加工特征识别方法,是指:以在Creo软件中建立的MBD模型为基础,提取MBD模型的信息,构建MBD模型的AAG,通过分解AAG得到其特征子图,将特征子图与预定义特征匹配,实现加工特征的识别。基于MBD的模型中除了包含模型结构、尺寸外,还定义了表面粗糙度和形位公差。

实施例2

根据实施例1所述的一种基于AAG的MBD模型加工特征识别方法,其区别在于:根据MBD模型的信息,自动识别模型中的加工特征,并与工艺信息相关联,如图6所示,包括步骤如下:

步骤1:提取MBD模型的信息;

MBD模型的信息包括MBD模型的几何拓扑信息与注释信息;几何拓扑信息包括两个方面:一是面与边的连接关系,表现在面与边的凹凸性、面的邻接面以及边的邻接面;二是面与边的几何数据,面的几何数据为面的ID、面的类型以及面上的轮廓信息,边的几何数据为边的ID、边的类型;注释信息包括公差信息及粗糙度信息,公差信息包括公差符号、公差类型、公差值以及关联几何元素的ID、公差有无基准要求、基准面的ID,粗糙度信息包括粗糙度数值和粗糙度注释的关联面ID;

步骤2:构建MBD模型的AAG;

根据MBD模型的信息,定义AAG中的节点以及节点连线的属性,构建MBD模型的AAG;

步骤3:分解AAG得到其特征子图;

通过基于模型面的AAG分解算法,从模型面具有的属性出发,在AAG中搜寻具有分解基面属性的节点,根据其内轮廓组成边的凹凸属性,分类别提取凹凸特征的子图,并判断凸特征子图中是否仍含有凹特征子图;然后删除剩余AAG中非加工面对应的节点,并提取具有特征基面属性节点的最大凹连接子图;通过基于联合基面的子图重构算法,实现分割特征的子图合并;

步骤4:将特征子图与预定义特征匹配;

以AAM表示特征子图,通过基于AAM的特征匹配算法,识别模型中的加工特征,并得到其类型;

步骤5:加工特征识别结果的处理;

获得加工特征的特征面、刀具接近方向int类型变量TAD、粗糙度、公差信息,构造存储识别结果的数据结构,将加工特征与加工特征相关的工艺信息统一存储。刀具接近方向int类型变量TAD存储时用整型变量存储。

实施例3

根据实施例1所述的一种基于AAG的MBD模型加工特征识别方法,其区别在于:

步骤1中,提取MBD模型的信息的过程如下:

首先,定义结构体数据Surface_data、Edge_data、Contour_data、Surffinish_data以及Gtol_data,Surface_data包括surface_id、surf_type、surface_at、in_contour、surffinish_value以及gtol_data,分别用于存储面的ID、面的类型、面的凹凸性、面的内轮廓属性、面的粗糙度数值以及面的公差数据;Edge_data包括edge_id、edge_type、edge_at、adj_surf_id以及edge_in,分别用于存储边的ID、边的类型、边的凹凸性、边的相邻面ID以及边的内轮廓属性;Contour_data包括contour_type、c_edge_id,分别用于存储轮廓的类型、轮廓的组成边ID;Surffinish_data包括sur_symbol、sur_value、sur_asso_element,分别存储粗糙度的符号、数值、粗糙度关联元素ID;Gtol_data的成员包括gtol_symbol、gtol_type、gtol_value、gtol_asso_element、reference_id,分别用于存储公差的符号、类型、数值、关联几何元素ID、基准面ID;

然后,定义MBD模型信息结构体数组存储提取的MBD模型的信息,MBD模型信息结构体数组包括以Surface_data定义的模型表面信息结构体数组surface[]、以Edge_data定义的模型边信息结构体数组edge[]、以Contour_data定义的轮廓信息结构体数组contour[]、以Surffinish_data定义的表面粗糙度信息结构体数组surffinish[]、以Gtol_data定义的公差信息结构体数组gtol[]。

各结构体数组定义如表1所示。

表1

通过Creo软件的二次开发工具Creo TOOLKIT,开发应用程序读取Creo模型的内部数据结构,提取MBD模型的信息,并将其存储到定义的MBD模型信息结构体数组中。

MBD模型的几何拓扑信息的提取方法为:

通过函数ProMdlCurrentGet获取MBD模型句柄,将MBD模型句柄作为遍历函数的输入参数,首先,调用ProSolidSurfaceVisit遍历MBD模型的面,输出面的句柄数组,将面的句柄数组元素作为输入参数,调用函数依次获取MBD模型的面的ID、面的类型、面的凹凸性以及邻接面ID;然后,调用ProSurfaceContourVisit,遍历面上的轮廓,判断轮廓类型并获得轮廓组成边ID;最后,调用ProContourEdgeVisit获取边的句柄数组,将其作为函数的输入参数,依次调用函数获取边的ID、边的类型、边的凹凸性、边的相邻面ID。

MBD模型的注释信息的提取方法为:

通过调用ProSolidSurffinishVisit获得粗糙度的句柄数组,以粗糙度的句柄数组的元素作为函数的输入参数,调用函数获得粗糙度符号、粗糙度数值、粗糙度关联元素ID;调用ProMdlGtolVisit遍历MBD模型公差,获取其句柄数组并将句柄数组元素作为函数的输入参数,调用函数获得公差符号、公差类型、公差数值以及关联几何元素的ID、基准面的ID。

其流程如下面伪代码所示:

具体的,本实施例中的MBD模型如图4所示,MBD模型的表面如图5所示,结果如表2-表5所示。表2为模型面的数据,表3为模型边的数据,表4为粗糙度信息,表5为公差信息。

表2

表3

表4

表5

步骤2中,构建MBD模型的AAG,包括步骤如下:

201:定义AAG中的节点以及节点连线的属性;

AAG中的节点对应MBD模型中的面,AAG中的节点连线对应MBD模型的边;其定义如下:

AAG中的节点的属性包括面的类型、面的凹凸性、分解基面、特征基面及联合基面;

面的类型:用整型变量标识面的类型属性,分为平面、圆柱面、圆锥面、以及其他曲面;

面的凹凸性:用整型变量标识面的凹凸性;

分解基面:用布尔变量标识面的分解基面属性,如果该面为分解基面,则标识为True;否则,标识为False;

特征基面:用布尔变量标识面的特征基面属性,如果该面为特征基面,则标识为True;否则,标识为False;

联合基面:用整型变量标识面的联合基面属性,如果两面为联合基面,则将两面的联合基面属性标识为相同的整型数值;

节点各属性的属性值定义如表6所示。

表6

AAG中的节点连线的属性包括边的类型、边的凸凹性及内轮廓边;

边的类型:用整型变量标识边的类型,分为直线边、圆弧边和其他曲线边;

边的凸凹性:用整型变量标识边的凸凹性,分为凹边、凸边和光滑边;

内轮廓边:用布尔变量标识边的内轮廓边属性;

节点连线各属性的属性值定义如表7所示。

表7

202:构建MBD模型的AAG;

通过搜索步骤1中已经提取的MBD模型的信息,建立AAG;本发明使用结构体数组表达AAG节点信息、节点连线信息以及其属性信息。模型AAG建立步骤如下:

(1)通过访问模型表面信息结构体数组surface[]、模型边信息结构体数组edge[],获取B-Rep,表示模型的几何拓扑信息;

(2)建立存储AAG中的节点的数据结构Node,建立存储节点连线的属性的数据结构Line,以此为基础,分别定义数据类型为Node的结构体数组node[]以及类型为Line的结构体数组line[];

(3)确定结构体数组node[]所代表的模型面以及结构体数组line[]所代表的模型边,以模型面与模型边的拓扑关系为依据,确定结构体数组node[]与结构体数组line[]的连接关系;

(4)以模型表面信息结构体数组surface[]中储存的信息为基础,根据模型面的相关属性定义,为结构体数组node[]添加对应属性;以模型边信息结构体数组edge[]中储存的信息为基础,根据模型边的相关属性定义,为结构体数组line[]添加对应属性。

具体过程如下:

首先,构造存储AAG节点的数据结构Node以及存储节点连线的数据结构Line,结构体Node包括surface_id、adj_line、node_type、node_at、d_face、f_face以及c_face,分别存储面的ID、与节点相连接的节点连线、节点的类型属性、节点的凹凸性属性、节点的分解基面属性、节点的特征基面属性以及节点的联合基面属性;结构体Line包括edge_id、node1、node2、line_type、line_at以及in_contour,分别用于存储边的ID、节点连线连接的节点一、节点连线连接的节点二、节点连线的类型属性、节点连线的凹凸属性以及节点连线的内轮廓属性;分别定义数据类型为Node的结构体数组node[]以及类型为Line的结构体数组line[];节点连线连接的节点一、节点连线连接的节点二是指节点连线的两端节点;

其次,初步构建AAG:令node[].surface_id等于surface[].surface_id,令line[].edge_id等于edge[].edge_id;

再次,根据模型面与边的拓扑关系判断节点与节点连线的连接关系:根据node[]中元素所代表的模型面,获得该模型面上的边的ID,若line[]中某元素含有该ID,则将对应的node[]写入line[].node1或者line[].node2,将line[]写入node[].adj_line中;

最后,添加数组node[]、line[]各元素的其它成员信息;包括:

①确定node[]的其它信息,具体为:根据node[].surface_id获得面的类型,若面为平面,则node[i].node_type=1,若面为圆柱面,则node[i].node_type=2,若面为圆锥面,则node[i].node_type=3,若面为其它曲面,则node[i].node_type=4;根据node[].surface_id获得面的凹凸性,若面为凹面,则node[i].node_at=-1,若面为凸面,则node[i].node_at=1;若ID为node[].surface_id的面为分解基面,则node[i].d_face=true,否则node[i].d_face=false;若ID为node[].surface_id的面为特征基面,则node[i].f_face=true,否则node[i].f_face=false;若ID为node[i].surface_id的面与ID为node[j].surface_id的面为联合基面,则node[i].c_face=node[j].c_face=k,k为一个整数;

②确定line[]的其它信息,具体为:若ID为line[i].edge_id的边分别为直线边、圆弧边、其它类型的边,则分别对应line[i].line_type=1、line[i].line_type=2、line[i].line_type=3;若ID为line[i].edge_id的边分别为凹边、光滑边、凸边,则分别对应line[i].line_at=-1、line[i].line_at=0、line[i].line_at=1;若ID为line[i].edge_id的边是内轮廓边,则line[i].in_contour=true,否则line[i].in_contour=false。

其流程如下面伪代码所示:

具体的,本实施例中AAG的节点数据以及AAG的节点连线数据如表8、表9所示。

表8

表9

步骤3中,包括步骤如下:

301.分解AAG

以结构体数组node[]为基础,根据节点间的连接关系以及分解基面、特征基面、联合基面属性信息,将其拆分为多个子部分,通过子部分包含的节点获取其节点连线,最后输出每个子部分对应的节点连线与节点;

分解AAG的具体实现过程如下:

首先,遍历node[],若其中的元素的分解基面属性为true,则遍历与该节点相连接的节点连线,若节点连线具有内轮廓属性以及凹边属性,标记该节点为-1,并将该节点连线删除;若节点连线具有内轮廓属性以及凸边属性,标记该节点为1,并将该节点连线删除;

然后,重新遍历数组node[],若节点标记为-1,获取与该节点相连接的node[]与line[],并删除具有凹边属性的line[],将结果写入数组node1[][]与line1[][]中;若节点标记为1,获取与该节点相连接的node[]与line[],分别写入数组node1[][]与line1[][]中;

再次,删除line[]与node[]已提取的元素,重新遍历node[],若node[]具有凸面属性,则删除与其有连接关系的line[];

最后,再重新遍历node[],若node[]具有特征基面属性,提取与node[]有连接关系的line[]以及与line[]相连接的其它node[],将结果写入node1[][]与line1[][]中。

其流程如下面伪代码所示:

302.重构特征子图

由于特征相交使部分特征被分割,经过AAG分解,被分割的特征被分解为两个特征子图,然后重构特征子图。步骤301将存储AAG信息的数组line[]与node[]被分解为多个子部分,并用node 1[][]、line1[][]分别存储各子部分所包含的节点以及节点连线,在node1[][]中搜寻具有相同联合基面属性的节点,合并其所在的子部分,实现特征子图的重构。

重构特征子图的具体实现过程如下:

遍历数组node[][],若某一数组元素node[i][k]具有联合基面属性,则继续在数组node[][]中寻找与该数组元素node[i][k]的联合基面属性相同的元素node1[j][m],并将node1[j][m]的成员数据信息写入node1[i][k]中,更新line1[][]、node1[][]得line2[m][]、node2[m][]。

其流程如下面伪代码所示:

具体的,本实施例各子部分的节点数据及各子部分的节点连线数据结果如表10、表11所示。

表10

表11

步骤4中,将特征子图转化为AAM,实现特征的匹配,包括步骤如下:

401:建立AAM

AAM使用二维数组M[n][n]来表示,其结构如式(I)所示:

式(I)中,n-特征子图的节点数;m

矩阵M[n][n]中元素的取值规则定义如下:

以三位正整数表示数组元素m

以两位正整数表示数组元素m

AAM建立流程如下面伪代码所示:

首先,判断特征子图AAM与预定义AAM阶数是否相同;

然后,判断特征子图AAM与预定义AAM的对角线元素所构成的集合是否相等;

最后,判断特征子图AAM与预定义AAM的每一行元素所构成的集合是否相似;每一行元素所构成的集合是否相似,是指:特征子图AAM每一行元素构成的集合与预定义AAM每一行元素构成的集合存在一一映射的关系;

如果特征子图AAM与预定义AAM阶数相同,对角线元素所构成的集合相等,且AAM的每一行元素所构成的集合相似,则匹配成功,否则,则匹配不成功。

其流程如下面伪代码所示:

具体到本实施例中,AAM使用二维数组M[n,n]来表示,n表示节点数量。根据分解得到的各子部分的节点node2[][]以及节点连线line2[][],本实施例生成对应特征子图的AAM如下所示:

M

通过将各AAM与预定义的AAM相匹配,识别出其所表示的加工特征类型,分别为:M

步骤5中,为使识别结果更好地应用于工艺设计中,对其进行处理。处理方法为:

构建结构体Featrue_data描述加工特征及其相关信息,以结构体Featrue_data定义结构体数组featrue[]存储加工特征;

结构体Featrue_data的具体成员包括:字符串类型变量featrue_id和featrue_type;Surface_data类型变量surface;刀具接近方向int类型变量TAD;double类型变量Ra;Gtol_data类型变量gtol,分别存储加工特征的ID、类型、特征面、刀具接近方向、粗糙度以及形位公差;其中,刀具接近方向int类型变量TAD取值为1~6,分别代表+x、-x、+y、-y、+z、-z六个方位。通过构建的数据结构,将加工特征与MBD模型信息相关联,丰富加工特征所表达的信息。

其算法流程如下面伪代码所示:

具体到本实施例中,以结构体数组featrue[]存储识别出的加工特征共计11个,其结果如表12所示。

表12

实施例4

一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现实施例1-3任一所述的基于AAG的MBD模型的加工特征识别方法的步骤。

实施例5

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现实施例1-3任一基于AAG的MBD模型的加工特征识别方法的步骤。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号