王清華
(宜昌測試技術(shù)研究所,湖北 宜昌 443003)
IGES文件是實體信息傳遞的媒介和載體,為滿足精簡和通用性要求,將不同實體的同類信息以固定格式集中記錄;在線檢測系統(tǒng)需要的參照信息是定義任意NURBS曲面的所有實體信息。IGES文件解釋器是把NURBS曲面信息從以信息類別為分類依據(jù)的IGES文件中析取,然后將這些信息以實體為分類依據(jù)進(jìn)行存儲,供在線檢測系統(tǒng)調(diào)用。本文以IGES文件為對象,研究從中析取NURBS曲面信息的方法,在Visual C++6.0平臺開發(fā)IGES文件解釋器[1-3],為在線檢測系統(tǒng)提供參照曲面信息,生成測量點集。
k×l次NURBS曲面S的數(shù)學(xué)描述如下:
其中:di,j為控制點坐標(biāo),按(m+1)×(n+1)矩形陣列排列;ωi,j為di,j對應(yīng)的權(quán)因子;(u,v)為參數(shù)域坐標(biāo),Ni,k(u)和Nj,l(v)分別為u向的k次基函數(shù)和v向的l次基函數(shù)。
S=p(u,v)定義的NURBS曲面不能描述任意邊界的自由曲面,這種曲面稱為原始曲面;修剪曲面是由曲面S上的數(shù)條曲線形成的閉合曲線鏈對原始曲面S的邊界修剪后的曲面,修剪S曲面能描述任意曲面。修剪外邊緣的閉合曲線鏈稱為外邊界,修剪曲面只有唯一外邊界;修剪內(nèi)邊緣的閉合曲線鏈稱為內(nèi)邊界,內(nèi)邊界可以有任意個,但各個閉合曲線鏈不能相交。內(nèi)邊界必須位于外邊界的內(nèi)部,修剪曲面就是S中內(nèi)邊界外部與外邊界內(nèi)部的公共區(qū)域。
IGES文件的基本信息包括記錄點、線、面、體信息的幾何實體和記錄幾何實體間結(jié)構(gòu)、標(biāo)注等信息的非幾何實體[4]。完整的IGES文件由6段組成:標(biāo)識段B指明文件記錄格式,CAD系統(tǒng)輸出IGES文件一般采用壓縮ASCII格式,每行有固定的80列字符;開始段S記錄文件來源信息;全局參數(shù)段G提供CAD系統(tǒng)生成文件的屬性信息;目錄條目段D每個實體占用兩行,記錄其屬性數(shù)據(jù)及定義數(shù)據(jù)在P段的索引;參數(shù)數(shù)據(jù)段P使用自由格式記錄實體的定義數(shù)據(jù);T段記錄文件各段大小。
IGES文件通過字符以特定格式記錄NURBS曲面信息。定義緩沖區(qū)后,把IGES文件的所有字符存入緩沖區(qū),就有唯一地址指針與字符對應(yīng)。借助緩沖區(qū)的地址指針處理IGES文件的字符信息,實現(xiàn)析取NURBS曲面信息的解釋功能,用于在線檢測的測量點集的數(shù)據(jù)處理。緩沖區(qū)的結(jié)構(gòu)體定義如下:
IGES文件解釋器需從緩沖區(qū)中析取NURBS曲面及其修剪信息,并將這些信息分類存儲。根據(jù)1.1節(jié)NURBS曲面的數(shù)學(xué)描述,定義如下結(jié)構(gòu)體存儲從IGES文件中析取的NURBS曲面及修剪信息:
IGES文件中NURBS曲面信息的屬性信息記錄于D段,定義信息記錄于P段,同一NURBS曲面的屬性信息與定義信息通過如圖1所示的兩種方式實現(xiàn)通訊:
(1)每個實體在D段中第1行的9~16列、第2行的25~32列分別記錄該實體定義信息在P段中的首地址和占用行數(shù)。
(2)實體在P段每行的65~72列都給出的地址是指向該實體屬性信息在D段的地址。
圖1 目錄條目段與參數(shù)數(shù)據(jù)段的映射關(guān)系
析取同一實體完整信息的關(guān)鍵就是通過上述兩條通訊途徑建立屬性信息和定義信息之間的聯(lián)系。通過結(jié)構(gòu)體數(shù)組*de[i]和*pd[i]記錄第i個實體的屬性信息和定義信息,數(shù)組下標(biāo)i是緩沖區(qū)中第i個實體屬性信息與定義信息通訊的紐帶。
定義char line[80],每次讀取IGES文件一行的80列字符,根據(jù)2.1節(jié)定義的緩沖區(qū)數(shù)據(jù)存儲格式以及上述D,P段通訊途徑實現(xiàn)同一實體不同數(shù)據(jù)的關(guān)聯(lián)存儲,實現(xiàn)流程見圖2。
實體在D段中記錄第1行65~72列的8個字符,從左至右每兩位一組依次控制著實體的可見性、獨(dú)立性、用途、層次4種特性信息,緩沖區(qū)中第i個實體的屬性數(shù)據(jù)分別記錄于de[i].visible,de[i].dependency,de[i].use,de[i].hierarchy,通過處理4個屬性值析出可見幾何實體數(shù)據(jù),實現(xiàn)流程見圖3。
圖2 各實體信息的讀取與存儲流程
圖3 可見幾何實體信息的析取流程
IGES文件中,修剪曲面(實體類型號為144)信息通過NURBS曲線(126)、直線(110)與?。?00)等組成的組合曲線鏈(102)修剪NURBS曲面(128)形成;組合曲線鏈(102)與NURBS曲面(128)通過參數(shù)曲面實體上的曲線(142)記錄的方式建立聯(lián)系。在IGES文件中,1.2節(jié)介紹的修剪拓?fù)潢P(guān)系通過144,142,102表述。NURBS曲面及修剪信息的析取與存儲流程見圖4。
圖4 NURBS曲面及修剪信息的析取與存儲流程
由于外邊界的唯一性,根據(jù)144中邊界指針順序和讀取順序規(guī)定trim_loop[0]存儲外邊界,其后的其他元素存儲內(nèi)邊界。
IGES文件解釋器實現(xiàn)過程是讀入IGES文件,過濾掉非幾何信息,析取可見的模型輪廓曲面信息,按2.1節(jié)介紹的方式存儲、輸出NURBS曲面,修剪曲線鏈及其拓?fù)潢P(guān)系等。IGES文件解釋器的完整實現(xiàn)流程見圖5。
圖6為Pro/E 3.0中原始模型。圖7為開發(fā)的解釋器輸出數(shù)據(jù)通過OpenGL平臺再現(xiàn)模型。IGES文件大小為3 224kB,經(jīng)過與原始模型對比,無特征丟失。表1列出了解釋出的各實體數(shù)量。
圖5 IGES文件解釋器的實現(xiàn)流程
圖6 Pro/E3.0中原始模型
圖7 IGES文件解釋器輸出數(shù)據(jù)在OpenGL的再現(xiàn)模型
(1)解析了IGES文件中使用NURBS曲面及修剪信息描述模型輪廓曲面的方法,以及NURBS曲面與修剪信息的拓?fù)潢P(guān)系;提出一種NURBS曲面及修剪信息的拓?fù)浯鎯Ψ绞?,實現(xiàn)了在線檢測系統(tǒng)與CAD系統(tǒng)之間的數(shù)據(jù)無損傳遞。
(2)開發(fā)了面向NURBS曲面的IGES文件解釋器,經(jīng)過反復(fù)驗證,其能夠高效、穩(wěn)定、完整地解釋IGES V5.2/5.3文件中NURBS曲面及修剪信息。
表1 IGES文件解釋器解釋的IGES文件中各實體數(shù)量
[1]施法中.計算機(jī)輔助幾何設(shè)計與非均勻有理B樣條[M].北京:北京航空航天大學(xué)出版社,1994.
[2]雷源忠.我國機(jī)械工程領(lǐng)域研究進(jìn)展與展望[J].中國科學(xué)基金,2009(3):134-138.
[3]王清華.基于IGES的NURBS曲面在線檢測系統(tǒng)關(guān)鍵技術(shù)研究[D].武漢:武漢理工大學(xué),2012:23.
[4]中國標(biāo)準(zhǔn)化研究院.GB/T14213-1993初始圖形交換規(guī)范[S].北京:中國標(biāo)準(zhǔn)出版社,2009:1-269.