吳曉東,韓祖行
(福州大學機械工程及自動化學院,福建福州 350108)
STEP-NC(ISO 14649)是一種面向?qū)ο蟮男滦蛿?shù)控編程數(shù)據(jù)接口。我國于2005年引進作為國標GB/T 19903。STEP-NC的基本原理是使用制造特征來進行編程而不再是對刀具運動直接編程[1]。STEP-NC 是 STEP(ISO10303)標準在制造領(lǐng)域的擴展,其幾何信息描述和文件格式與STEP標準完全一致,因此在零件的STEP數(shù)據(jù)模型中識別出制造特征是實現(xiàn)STEP-NC的關(guān)鍵。
常見的特征識別方法有:語義法、規(guī)則法、圖論法、痕跡(Hint)法、神經(jīng)網(wǎng)絡(luò)法等等[2]。這些方法能識別出大多數(shù)的特征,但都沒有與STEP-NC標準定義的制造特征相結(jié)合。目前大部分實體造型CAD系統(tǒng)(如Pro/E,UG等)都能以STEP中性文件格式輸出零件的幾何模型,文件大多采用的是B-rep模型表示方法,而圖正是表示這種模型的重要方式,因此本文采用基于圖的方法來進行制造特征識別。
STEP-NC是這樣定義零件的制造特征的:為了得到零件的最終形狀而從零件毛坯上去除的那部分材料的形狀。
現(xiàn)行的STEP-NC標準中所涉及的特征按照從屬關(guān)系可以分為許多類型,如圖1所示。在實際工業(yè)產(chǎn)品中,最常用到的是2.5軸特征,它是數(shù)控機床上能夠使用二軸聯(lián)動,第三軸定期進給所能加工的特征總稱。本文主要討論STEP-NC中2.5軸制造特征的識別。
圖1 STEP-NC制造特征
STEP AP203文件由頭文件段和數(shù)據(jù)段組成。頭文件段包括STEP轉(zhuǎn)換器的版本和建立三維模型的CAD軟件的相關(guān)信息。數(shù)據(jù)段中存放的是零件的幾何拓撲信息,采用的是B-rep模型表示法,即所有的幾何形體都用點、邊、面、環(huán)來表示。在數(shù)據(jù)段中每一行表示一個幾何實體,且每行具有固定的表達結(jié)構(gòu):#數(shù)字=實體關(guān)鍵字(‘實體名稱’,屬性值1,屬性值2,…)。例如:
#105=ADVANCED_FACE('',(#104),#95,.T.);
該行定義了一個ID為105的ADVANCED_FACE高級面,其屬性值#104代表一個外邊界,#95為組成邊界的面,T表示#95面的方向與高級面的方向一致。
實體之間可以相互嵌套和調(diào)用,以實現(xiàn)零件拓撲結(jié)構(gòu)的表達,構(gòu)成完整的幾何實體模型。圖2為一個簡單的STEP數(shù)據(jù)模型結(jié)構(gòu)圖。
Joshi和Chang首先將屬性面鄰接圖(Attributed Adjacency Graph,AAG)作為基本結(jié)構(gòu)用于對拓撲關(guān)系進行描述[3]。在屬性鄰接圖中,零件的每個面構(gòu)成圖的節(jié)點,節(jié)點之間的連線用來表示兩個面之間公共邊,連線上的數(shù)字表示該邊的凹凸性。因此,要構(gòu)建零件的屬性鄰接圖,需要從 STEP AP203文件中提取零件的幾何拓撲信息并判斷邊的凹凸性。
圖2 簡單的STEP數(shù)據(jù)模型
參照AP203信息模型中幾何、拓撲實體之間的相互關(guān)系,為每個實體定義一個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的方向是否相同
}
通過定義文件各個實體的類,可以對文件中幾何拓撲信息進行提取,從而在內(nèi)存中建立零件完整的拓撲結(jié)構(gòu),其提取過程如下:
a.讀入AP203文件,忽略頭文件段,以“;”為間隔符號讀取文件的每一行,在每行中找到實體關(guān)鍵字,尋找與之匹配的C++類,并進行C++類的實例化。
b.遍歷文件,得到STEP AP203文件的各個實體,實體內(nèi)的屬性值通過指針調(diào)用的方式獲得,其中所有的ADVANCED_FACE類實體就是構(gòu)成零件的所有面的集合,可以用來構(gòu)造屬性鄰接圖的每個節(jié)點。值得注意的是,STEP AP203文件把圓柱或者圓錐等軸對稱實體分成兩個相等的半圓柱/錐面,只取其一個面作為屬性圖的節(jié)點,以便于完成邊的凹凸性判斷。
3.2.1 直線邊的凹凸性判斷
如圖3(a)所示,兩平面F1,F(xiàn)2相交于直線邊e,其外法向量分別為N1,N2,取F1為基面,根據(jù)右手螺旋法可以確定e的方向向量Ne的方向。令N=N2×Ne,計算 N 與 N1的夾角 θ,若 0< θ< π,則邊為凸邊;若π<θ<2π,則邊為凹邊。假設(shè)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,F(xiàn)1的法向量為N1,e的方向向量為 Ne。點P為邊e與柱面的一幾何定義圓曲線的交點(取邊e對應(yīng)的邊界曲線類實體(EDGE_CURVE)中的一個頂點(VERTEX_POINT)),該圓曲線的圓心記為P0,確定一個從P指向P0的向量PVec;Vec為該圓曲線的法向量,則過點P的切向向量RVec=PVec×Vec。如果柱面是外表面,則F2的外法向量N2=RVec×Vec,若柱面是內(nèi)表面,則N2=Vec×RVec。接著計算向量N=Ne×N2,然后通過公式(1)計算N1與N的夾角θ,即可判斷其凹凸性。在STEP AP203文件中,圓曲線的圓心P0和法向量Vec均可由其對應(yīng)的實體CIRCLE中的AIX2_PLACMENT_3D實體獲得。
3.2.2 圓弧邊的凹凸性判斷
如圖3(c)所示,面F1和F2相交于圓邊e,為了計算的可行性,取F1面的幾何定義曲線上的一點P,其圓心為 P0,由 P,P0可以確定 PVec,進而計算e的方向矢量Ne=PVec×N1。取邊e在柱面對應(yīng)的幾何定義圓曲線的AXIS2_PLACEMENT_3D實體中第一個DIRECTION實體確定的矢量記為Vec,則過點P的切向向量RVec=PVec×Vec。接著判斷柱面是否為外表面,若是則N2=RVec×Vec,否則N2=Vec×RVec。為了判斷邊的凹凸性,首先計算方向矢量N=Ne×N2,然后計算N與N1之間的夾角θ,通過判斷θ的范圍獲得邊的凹凸性。
常見的還有平面與錐面、錐面與柱面相交,其判斷方法類似,這里不再一一舉例。通過完成邊的凹凸性判斷,可以構(gòu)成完整的屬性鄰接圖。
圖3 不同類型面的相交
在計算機中,鄰接圖常用的存儲方法有鄰接矩陣和鄰接表,傳統(tǒng)的鄰接矩陣在只用0,1來表達邊的凹凸性時,會造成矩陣的二義性[4]。為了解決這個問題,使用經(jīng)過擴展的矩陣來存儲屬性鄰接圖,在C++中以二維數(shù)組A[n,n]來表達,其定義如下:
(1)n表示構(gòu)成零件的所有面的數(shù)量,用整數(shù)0來表示凹或者兩個面不相交,1表示凸。
(2)對于數(shù)組元素 A[i,j],如果i≠j,表示i面與j面相交,可以用一個二位數(shù)來表示不同類型邊的凹凸性,在個位上以0,1表示邊凹凸性,在十位上以數(shù)字1,2,3,… 代表直線、圓弧、橢圓、…,例如以11來表示凸的直線邊,10表示凹的直線邊,21表示凸的圓弧邊,20表示凹的圓弧邊,以此類推。如果i=j,此時數(shù)組元素A[i,j]用來存放面的類型。同樣在個位以0,1來表示零件的內(nèi)表面和外表面,在十位以數(shù)字1,2,3,…來區(qū)分不同類型的面,如以10表示平面(平面沒有內(nèi)外之分),21表示使用外表面作為實體表面的圓柱面(如零件的軸),20表示內(nèi)表面作為實體表面的圓柱面(如零件的孔)。
使用這種方法可以構(gòu)建一個唯一的零件屬性鄰接圖矩陣。根據(jù)STEP-NC定義的制造特征分別為其建立特征鄰接矩陣,存入預定義特征鄰接矩陣庫,以方便在后面的特征矩陣匹配中調(diào)用。以如圖4(a)零件為例,分別為其建立屬性鄰接圖(如圖4(b)所示)及鄰接圖矩陣(如圖4(c)所示)。
圖4 屬性鄰接圖與屬性鄰接矩陣
零件的屬性鄰接圖中包含著與預定義特征匹配的子圖,通過子圖匹配可以識別出零件所包含的特征。但是直接在零件屬性鄰接圖中搜索子圖是NP問題[5],算法復雜度與零件復雜度相關(guān),因此在子圖匹配前進行屬性鄰接圖分解可降低算法復雜度。具體的過程如下:
a.檢查矩陣的每一行,先忽略表示面類型的元素A[i,i],接著計算數(shù)組的其他元素是否能被10整除,如果能則存在凹邊,如果都不能被10整除,則判斷是否為單一特征矩陣,如通孔等,輸出識別的結(jié)果。
b.檢查含有凹邊的每一行,確定與它相交的所有面,構(gòu)造特征子圖矩陣,并記錄維數(shù)m。
c.根據(jù)維數(shù)m查找維數(shù)相同的預定的特征鄰接矩陣,將其與特征子圖矩陣對比,如果相等則該子圖矩陣為一個特征,記錄并輸出結(jié)果。
為了驗證該特征識別方法的正確性,在Windows7+VS 2005平臺上開發(fā)了一個特征識別軟件原型系統(tǒng)。系統(tǒng)基于MFC對話框技術(shù),使用AutoVue控件實現(xiàn)STEP文件的三維顯示與查錯,系統(tǒng)可以讀入Pro/E軟件輸出的STEP AP203文件,通過數(shù)據(jù)處理,將文件的幾何拓撲信息以樹形結(jié)構(gòu)模型顯示,經(jīng)過特征識別后,輸出零件中所包含的制造特征以及組成這個特征的各個面。以圖5所示零件為例,經(jīng)過識別,零件包含了6個特征,分別為臺階(Step)、封閉槽(Close_pocket)、開口槽(Open_pocket)、狹槽(Slot)、通孔(Hole)和盲孔(Blind Hole)。
圖5 STEP-NC特征識別器
特征識別技術(shù)一直以來是制約STEP-NC發(fā)展的一個關(guān)鍵,針對這個問題采用基于屬性鄰接圖的方法識別STEP-NC所定義的制造特征。在VS 2005平臺下開發(fā)了特征識別器,經(jīng)過驗證可以有效地識別2.5軸加工特征。對于相交特征和過渡特征的識別,該系統(tǒng)還需要進一步的完善,研究對于后續(xù)零件進行工藝規(guī)劃、進而生成STEP-NC程序具有一定的意義。
[1] 中華人民共和國國家質(zhì)量監(jiān)督檢驗檢疫總局.GB/T 19903.1-2005工業(yè)自動化系統(tǒng)與集成物理設(shè)備控制計算機數(shù)值控制用的數(shù)據(jù)模型第1部分:概述與基本原理[S].北京:中國標準出版社,2005.
[2] 花廣如,周雄輝.特征識別的現(xiàn)狀與存在的問題及解決方案[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的制造特征與三維重建技術(shù)研究[D].哈爾濱:東北農(nóng)業(yè)大學,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.