王龍,宋永增,孫妍婷,王彩霞
(北京交通大學 機械與電子控制工程學院,北京 100044)
在鋁合金車體結構有限元建模過程中,往往通過車體的三維設計圖轉換成有限元模型,以加快有限元建模的速度。具體方法是,先將車體的三維設計圖通過數據交換文件,導入專門的有限元網格劃分軟件進行網格劃分,然后將劃分好的網格模型,通過數據交換文件導入有限元分析軟件進行模型的完善,最終得到有限元模型。車體的有限元模型與其三維設計圖之間存在一定差別,例如,鋁合金車體廣泛采用殼體結構,在三維設計圖中,殼體具有厚度屬性,而在有限元模型中,殼體用其中性面表示即可。因此,需要對車體的殼體結構進行抽取中性面處理,然后對抽取的中性面進行網格劃分,這種處理往往采用交互式操作。對于大型的車體結構,抽取中性面的操作工作量非常大,容易出錯。因此,研究殼體結構自動抽取中性面方法具有較大的工程應用價值。
IGES(Initial Graphics Exchange Specification)是初始化圖形交換規范,用來定義在各種幾何建模系統之間進行文件轉換的中間文件,現已成為廣泛應用的產品定義標準,已被我國轉換成國家標準GB/T14213。
IGES文件包括固定長ASCII碼、壓縮的ASCII及二進制3種格式。固定長ASCII碼格式的IGES文件每行為80個字符,整個文件分為開始段、全局參數段、目錄條目段、參數數據段和結束段5部分。
開始段,代碼為S,該段是為提供一個可讀文件的序言,主要記錄圖形文件的最初來源及生成該IGES文件的相同名稱。IGES文件至少有一個開始記錄。
全局參數段,代碼為G,主要包含前處理器的描述信息及為處理該文件的后處理器所需要的信息。參數以自由格式輸入,用逗號分隔參數,用分號結束一個參數。主要參數有:文件名、前處理器版本、單位、文件生成日期、作者姓名及單位、IGES的版本、繪圖標準代碼等。
目錄條目段,代碼為D,該段主要為文件提供一個索引,并含有每個實體的屬性信息,文件中的每個實體都有一個目錄條目,大小一樣,由8個字符組成一個域,共20個域,每個條目占用2行。
參數數據段,代碼為P,該段主要以自由格式記錄與每個實體相連的參數數據,第一個域總是實體類型號。
結束段,代碼為T,該段只有一個記錄,并且是文件的最后一行,它被分成10個域,每域8列,第1~4域及第10域為上述各段所使用的表示段類型的代碼及最后的序號。
如果要對殼體進行抽取中性面處理,首先生成殼體的IGES文件,然后對殼體的IGES文件圖形參數進行處理。本文運用MATLAB工具箱將殼體的IGES文件讀取到MATLAB的工作空間,借助于MATLAB強大的數據處理功能,對殼體參數進行抽取中性面處理,再將處理后的中性面參數輸出成新的IGES文件,即所要的殼體中性面IGES文件。
以B樣條曲面抽取中性面為例,將其生成“example.igs”文件,運用MATLAB工具箱直接讀取該文件,其格式如下:
[Parameter Data,Entity Type,num Entity Type]=iges2matlab('example.igs');
其中,Parameter Data為圖形參數;EntityType為實體類型;numEntity Type為實體類型數目。讀入后,Parameter Data為一元胞數組,其中含有每種實體類型的結構體參數數據,見表1。
在表1中,type為實體類型編號;name為實體名稱B樣條曲面;k1和k2分別為第1個和第2個總和的上限;m1和m2分別為第1組和第2組基本函數的階;prop1表示是否封閉于第1個參變量方向;prop2表示是否封閉于第2個參變量方向;prop3表示是有理式還是多項式;prop4和prop5分別表示第1和第2個參變量方向上的周期性;u和v分別表示參數方向;nurbs參數為一結構體數據,其中包含了B樣條曲面控制點坐標等重要參數。當對上述參數進行抽取中性面處理后,即可將抽取的中性面參數按IGES格式編寫一個IGES輸出函數igesout。

表1 B樣條曲面參數表
將B樣條曲面提取出來,即將type為128的元胞數組提取到一個新的數組內,然后進行抽取中性面處理。
殼體如圖1。確定該殼體的所有邊界面。根據殼體的結構特點,其邊界面應由2個樣條組成,其控制點坐標見表2。

圖1 殼體結構示意圖

表2 控制點坐標
運用MATLAB的norm函數求出控制點間的距離,即樣條寬度。程序段如下:

其中bian_wz為包含所有2樣條曲面的控制點坐標矩陣,kuan(i)為6個面的寬度矩陣,見表3。
對于平面而言,計算其厚度實際是殼體的長或寬。在計算所有寬度后,取寬度最小值來判斷主要面。程序段如下:
mkuan=min(kuan);%提取最小寬度
[mm wz_mkuan]=find(kuan==mkuan);%找到最小寬度的位置

表3 各對應面的寬度
從表3,即可找到主要面為1和2。其他為邊界面,殼體厚度為2mm。得到邊界面的原位置wz_kuan=[3 4 5 6]。
將主要面提取出來,組成新的元胞數組peidui1_wz和peidui2_wz。由于誤差的存在,往往造成厚度的計算沒有表3中的數值那樣規整。所以在計算偏移量時,需要重新計算2個主要面的距離,同樣用norm計算得到。將結果的一半作為偏移距離TAO,即:
TAO=(peidui2_wz{1}.wz(1:3,1,1)-peidui1_wz{1}.wz(1:3,1,1))./2;
根據計算機圖形學,把空間中一個點由位置(x, y, z)平移至位置(x', y', z')可用以下矩陣運算實現:

其中,參數、(Tx, Ty, Tz)、規定了坐標平移距離,它們構成了一個平移向量[Tx, Ty, Tz]。這里不妨令τ=[Tx, Ty, Tz],可由主要面2個對應點的坐標計算得到。例如控制點1和控制點3:
τ =([- 24.521]-[- 22.521])/2=[0100]
所以,可以通過平移主要面形成中性面:

其中:ZM為中性面的控制點坐標矩陣,ZY為主要面的控制點坐標矩陣。
不規則的殼體結構如圖2,IGES文件名為EXP1。

圖2 不規則殼體結構
(1)首先將其讀入matlab
clear%清除內存空間
makeIGESmex;%編譯c文件
[ParameterData]=iges2matlab('prt_100_100_2.igs');%讀入IGES文件參數(2)進行抽取中性面處理
NrbSurf=midface(ParameterData);%調取抽取中性面函數
(3)將中性面輸出成IGES文件
OutName = 'EXP1_midf.igs';%確定輸出文件名
igesout(NrbSurf,OutName)%輸出IGES文件
經過上述處理,即可得到抽取的中性面‘EXP1_midf.igs’,如圖3。
動車組鋁合金車體結構如圖4。通過抽取中性面可得到的中性面結構如圖5。然后,對中性面結構進行網格劃分,得到有限元分析模型。

圖3 不規則殼體結構的中性面

圖4 鋁合金車頂結構
本文以MATLAB為平臺,在分析IGES文件結構基礎上,提出了基于IGES的鋁合金車體結構中性面抽取方法,編制出相應的應用程序。以常見的有理B樣條曲面為例,對所提出的方法進行了驗證,并取得了較為滿意的結果。將該方法應用到鋁合金車體的殼體結構,為車體結構的有限元建模提供一種快捷的方法,提高了車體結構的建模效率。

圖5 鋁合金車頂結構的中性面
[1]王瑁成.有限單元法[M]. 北京:清華大學出版社,2003.
[2]余心宏,吳向陽. 基于IGES的數據接口實現[J].計算機工程與應用,2002(10):133-134.