基于属性邻接图的STEP-NC制造特征识别实现

2013-08-16 07:26吴晓东韩祖行
机械设计与制造工程 2013年7期
关键词:柱面凹凸子图

吴晓东,韩祖行

(福州大学机械工程及自动化学院,福建福州 350108)

STEP-NC(ISO 14649)是一种面向对象的新型数控编程数据接口。我国于2005年引进作为国标GB/T 19903。STEP-NC的基本原理是使用制造特征来进行编程而不再是对刀具运动直接编程[1]。STEP-NC 是 STEP(ISO10303)标准在制造领域的扩展,其几何信息描述和文件格式与STEP标准完全一致,因此在零件的STEP数据模型中识别出制造特征是实现STEP-NC的关键。

常见的特征识别方法有:语义法、规则法、图论法、痕迹(Hint)法、神经网络法等等[2]。这些方法能识别出大多数的特征,但都没有与STEP-NC标准定义的制造特征相结合。目前大部分实体造型CAD系统(如Pro/E,UG等)都能以STEP中性文件格式输出零件的几何模型,文件大多采用的是B-rep模型表示方法,而图正是表示这种模型的重要方式,因此本文采用基于图的方法来进行制造特征识别。

1 STEP-NC制造特征

STEP-NC是这样定义零件的制造特征的:为了得到零件的最终形状而从零件毛坯上去除的那部分材料的形状。

现行的STEP-NC标准中所涉及的特征按照从属关系可以分为许多类型,如图1所示。在实际工业产品中,最常用到的是2.5轴特征,它是数控机床上能够使用二轴联动,第三轴定期进给所能加工的特征总称。本文主要讨论STEP-NC中2.5轴制造特征的识别。

图1 STEP-NC制造特征

2 STEP AP203文件结构

STEP AP203文件由头文件段和数据段组成。头文件段包括STEP转换器的版本和建立三维模型的CAD软件的相关信息。数据段中存放的是零件的几何拓扑信息,采用的是B-rep模型表示法,即所有的几何形体都用点、边、面、环来表示。在数据段中每一行表示一个几何实体,且每行具有固定的表达结构:#数字=实体关键字(‘实体名称’,属性值1,属性值2,…)。例如:

#105=ADVANCED_FACE('',(#104),#95,.T.);

该行定义了一个ID为105的ADVANCED_FACE高级面,其属性值#104代表一个外边界,#95为组成边界的面,T表示#95面的方向与高级面的方向一致。

实体之间可以相互嵌套和调用,以实现零件拓扑结构的表达,构成完整的几何实体模型。图2为一个简单的STEP数据模型结构图。

3 属性邻接图的构造

Joshi和Chang首先将属性面邻接图(Attributed Adjacency Graph,AAG)作为基本结构用于对拓扑关系进行描述[3]。在属性邻接图中,零件的每个面构成图的节点,节点之间的连线用来表示两个面之间公共边,连线上的数字表示该边的凹凸性。因此,要构建零件的属性邻接图,需要从 STEP AP203文件中提取零件的几何拓扑信息并判断边的凹凸性。

图2 简单的STEP数据模型

3.1 STEP AP203文件几何拓扑信息提取

参照AP203信息模型中几何、拓扑实体之间的相互关系,为每个实体定义一个C++实体类,以AP203文件中ADVANCED_FACE实体为例,其类的定义如下:

Class ADVANCED_FACE

{

public:

ADVANCED_FACE();

~ADVANCED FACE();

public:

CArray<CBound* ,CBound* > m_bound;//面的边界

FACE*m_p_face;//面的类型

LOGICAL re_logical;//与Placement的方向是否相同

}

通过定义文件各个实体的类,可以对文件中几何拓扑信息进行提取,从而在内存中建立零件完整的拓扑结构,其提取过程如下:

a.读入AP203文件,忽略头文件段,以“;”为间隔符号读取文件的每一行,在每行中找到实体关键字,寻找与之匹配的C++类,并进行C++类的实例化。

b.遍历文件,得到STEP AP203文件的各个实体,实体内的属性值通过指针调用的方式获得,其中所有的ADVANCED_FACE类实体就是构成零件的所有面的集合,可以用来构造属性邻接图的每个节点。值得注意的是,STEP AP203文件把圆柱或者圆锥等轴对称实体分成两个相等的半圆柱/锥面,只取其一个面作为属性图的节点,以便于完成边的凹凸性判断。

3.2 边的凹凸性判断

3.2.1 直线边的凹凸性判断

如图3(a)所示,两平面F1,F2相交于直线边e,其外法向量分别为N1,N2,取F1为基面,根据右手螺旋法可以确定e的方向向量Ne的方向。令N=N2×Ne,计算 N 与 N1的夹角 θ,若 0< θ< π,则边为凸边;若π<θ<2π,则边为凹边。假设N=(X1,Y1,Z1),N1=(X2,Y2,Z2),则它们的夹角为:

其中:N1,N2可由STEP AP203文件中的方位信息类实体(AIX2_PLACMENT_3D)中第一个方向类实体(DIRRECTION)直接获得,而Ne可由表示该边的直线类实体(LINE)中的向量类实体(VECTOR)获得。

当直线是由柱面与平面相交而成时,由于柱面为轴对称图形,AIX2_PLACMENT_3D实体无法对其定位与定向,需要采用不同的方法计算两个面的夹角。如图3(b)所示,平面F1和柱面F2相交于直线边e,F1的法向量为N1,e的方向向量为 Ne。点P为边e与柱面的一几何定义圆曲线的交点(取边e对应的边界曲线类实体(EDGE_CURVE)中的一个顶点(VERTEX_POINT)),该圆曲线的圆心记为P0,确定一个从P指向P0的向量PVec;Vec为该圆曲线的法向量,则过点P的切向向量RVec=PVec×Vec。如果柱面是外表面,则F2的外法向量N2=RVec×Vec,若柱面是内表面,则N2=Vec×RVec。接着计算向量N=Ne×N2,然后通过公式(1)计算N1与N的夹角θ,即可判断其凹凸性。在STEP AP203文件中,圆曲线的圆心P0和法向量Vec均可由其对应的实体CIRCLE中的AIX2_PLACMENT_3D实体获得。

3.2.2 圆弧边的凹凸性判断

如图3(c)所示,面F1和F2相交于圆边e,为了计算的可行性,取F1面的几何定义曲线上的一点P,其圆心为 P0,由 P,P0可以确定 PVec,进而计算e的方向矢量Ne=PVec×N1。取边e在柱面对应的几何定义圆曲线的AXIS2_PLACEMENT_3D实体中第一个DIRECTION实体确定的矢量记为Vec,则过点P的切向向量RVec=PVec×Vec。接着判断柱面是否为外表面,若是则N2=RVec×Vec,否则N2=Vec×RVec。为了判断边的凹凸性,首先计算方向矢量N=Ne×N2,然后计算N与N1之间的夹角θ,通过判断θ的范围获得边的凹凸性。

常见的还有平面与锥面、锥面与柱面相交,其判断方法类似,这里不再一一举例。通过完成边的凹凸性判断,可以构成完整的属性邻接图。

图3 不同类型面的相交

4 属性邻接图矩阵的构造

在计算机中,邻接图常用的存储方法有邻接矩阵和邻接表,传统的邻接矩阵在只用0,1来表达边的凹凸性时,会造成矩阵的二义性[4]。为了解决这个问题,使用经过扩展的矩阵来存储属性邻接图,在C++中以二维数组A[n,n]来表达,其定义如下:

(1)n表示构成零件的所有面的数量,用整数0来表示凹或者两个面不相交,1表示凸。

(2)对于数组元素 A[i,j],如果i≠j,表示i面与j面相交,可以用一个二位数来表示不同类型边的凹凸性,在个位上以0,1表示边凹凸性,在十位上以数字1,2,3,… 代表直线、圆弧、椭圆、…,例如以11来表示凸的直线边,10表示凹的直线边,21表示凸的圆弧边,20表示凹的圆弧边,以此类推。如果i=j,此时数组元素A[i,j]用来存放面的类型。同样在个位以0,1来表示零件的内表面和外表面,在十位以数字1,2,3,…来区分不同类型的面,如以10表示平面(平面没有内外之分),21表示使用外表面作为实体表面的圆柱面(如零件的轴),20表示内表面作为实体表面的圆柱面(如零件的孔)。

使用这种方法可以构建一个唯一的零件属性邻接图矩阵。根据STEP-NC定义的制造特征分别为其建立特征邻接矩阵,存入预定义特征邻接矩阵库,以方便在后面的特征矩阵匹配中调用。以如图4(a)零件为例,分别为其建立属性邻接图(如图4(b)所示)及邻接图矩阵(如图4(c)所示)。

图4 属性邻接图与属性邻接矩阵

5 特征识别过程

零件的属性邻接图中包含着与预定义特征匹配的子图,通过子图匹配可以识别出零件所包含的特征。但是直接在零件属性邻接图中搜索子图是NP问题[5],算法复杂度与零件复杂度相关,因此在子图匹配前进行属性邻接图分解可降低算法复杂度。具体的过程如下:

a.检查矩阵的每一行,先忽略表示面类型的元素A[i,i],接着计算数组的其他元素是否能被10整除,如果能则存在凹边,如果都不能被10整除,则判断是否为单一特征矩阵,如通孔等,输出识别的结果。

b.检查含有凹边的每一行,确定与它相交的所有面,构造特征子图矩阵,并记录维数m。

c.根据维数m查找维数相同的预定的特征邻接矩阵,将其与特征子图矩阵对比,如果相等则该子图矩阵为一个特征,记录并输出结果。

6 特征识别示例

为了验证该特征识别方法的正确性,在Windows7+VS 2005平台上开发了一个特征识别软件原型系统。系统基于MFC对话框技术,使用AutoVue控件实现STEP文件的三维显示与查错,系统可以读入Pro/E软件输出的STEP AP203文件,通过数据处理,将文件的几何拓扑信息以树形结构模型显示,经过特征识别后,输出零件中所包含的制造特征以及组成这个特征的各个面。以图5所示零件为例,经过识别,零件包含了6个特征,分别为台阶(Step)、封闭槽(Close_pocket)、开口槽(Open_pocket)、狭槽(Slot)、通孔(Hole)和盲孔(Blind Hole)。

图5 STEP-NC特征识别器

7 结束语

特征识别技术一直以来是制约STEP-NC发展的一个关键,针对这个问题采用基于属性邻接图的方法识别STEP-NC所定义的制造特征。在VS 2005平台下开发了特征识别器,经过验证可以有效地识别2.5轴加工特征。对于相交特征和过渡特征的识别,该系统还需要进一步的完善,研究对于后续零件进行工艺规划、进而生成STEP-NC程序具有一定的意义。

[1] 中华人民共和国国家质量监督检验检疫总局.GB/T 19903.1-2005工业自动化系统与集成物理设备控制计算机数值控制用的数据模型第1部分:概述与基本原理[S].北京:中国标准出版社,2005.

[2] 花广如,周雄辉.特征识别的现状与存在的问题及解决方案[J].机床与液压,2008(4):19-23.

[3] Joshi S,Chang TC.Graph-based heuristics for recognition of machined features from a 3D solid model[J].Computer Aided-Design,1988,20(2):58-661.

[4] 戴百生.基于STEP的制造特征与三维重建技术研究[D].哈尔滨:东北农业大学,2010.

[5] Nezis K,Vosniakos G .Recognizing 2.5D shape features using a neural network and heuristics[J].Computer-Aided Design ,1997,29(7),523-539.

猜你喜欢
柱面凹凸子图
含有陡峭势阱和凹凸非线性项的Kirchhoff型问题的多重正解
基于单摄像头的柱面拼接
Maple动画功能在高等数学教学中的应用示例(Ⅱ)
临界完全图Ramsey数
最易写错笔顺的字
矩形孔径柱面镜面形拟合基底多项式研究
基于频繁子图挖掘的数据服务Mashup推荐
消除凹凸纹理有妙招!
基于节点刚度的柱面巨型网格结构静力性能研究
春享陌上