陳進(jìn)富,宋忠輝,董玉德*,張方亮,劉彥超,白蘇誠
[1.合肥工業(yè)大學(xué) 機(jī)械與汽車工程學(xué)院,安徽 合肥 230009;2.佳通輪胎(中國)研發(fā)中心,安徽 合肥 230601]
輪胎花紋作為車輛與地面直接接觸的部位,其形狀直接影響輪胎與地面的牽引力[1]、側(cè)滑力、排水性和噪聲等,同時汽車行駛過程中的操縱穩(wěn)定性和乘坐舒適性也與輪胎花紋有密切關(guān)系。輪胎花紋造型是由三維CAD軟件設(shè)計,其中CATIA軟件應(yīng)用最廣,鑒于輪胎花紋表面的復(fù)雜性,在利用CATIA軟件設(shè)計輪胎3D花紋時,通常先設(shè)計胎面2D花紋,然后利用develop命令將2D花紋纏繞到輪胎胎面上[2],利用一系列命令生成單節(jié)距花紋,最后對不同節(jié)距花紋進(jìn)行裝配形成整條輪胎。
胎面2D花紋的設(shè)計尤為重要,快速高效地獲取2D花紋的幾何參數(shù)并實現(xiàn)參數(shù)與模型的共享對提高胎面2D花紋的設(shè)計效率具有重要的作用。陳理君等[3]提出通過將掃描輪胎花紋圖案處理成[0-1]矩陣的算法識別出了輪胎花紋的周期與節(jié)距的排列規(guī)律,劉雨青等[4]提出利用輪廓提取和種子填充算法計算出花紋塊和花紋溝槽的面積,但該算法是基于AutoCAD二維軟件平臺下完成的,所測的數(shù)據(jù)也主要用于噪聲的分析并不能重構(gòu)出模型。
本工作提出基于特征遍歷算法用于2D花紋參數(shù)的自動測量,并結(jié)合數(shù)據(jù)庫技術(shù)和面向組件技術(shù)開發(fā)出的綜合系統(tǒng)。
系統(tǒng)以CATIA軟件為平臺,利用CAA組件應(yīng)用架構(gòu)進(jìn)行二次開發(fā),該方式提供了大量的API接口以便擴(kuò)展系統(tǒng)功能,具體是通過將RADE模塊以及API接口相結(jié)合來實現(xiàn)對CATIA的深層次開發(fā),其中RADE模塊集成在VC++開發(fā)環(huán)境中。同時采用SQLServer數(shù)據(jù)庫[5]對獲取的參數(shù)信息進(jìn)行管理,訪問數(shù)據(jù)庫方式采用的是ADO技術(shù)[6],該技術(shù)不僅具有OLE DB技術(shù)的優(yōu)點而且使用方便。系統(tǒng)原理如圖1所示。
圖1 系統(tǒng)原理示意
三維空間的2D花紋本質(zhì)上是其二維圖形的三維表現(xiàn),即將原有二維圖形中的點、直線和圓弧等擴(kuò)展到三維空間,難點在于如何通過程序獲取模型信息。另外,在CATIA軟件界面中的模型其特征樹中都會有對應(yīng)的信息,對于輪胎模型而言,為方便管理,通常會在模型樹中新建2D花紋幾何圖形集,因此只需獲取模型樹中的信息即可。而在零件文檔中,零件處于模型樹的根部,零件特征在所有特征中位于最高層,同樣在CAA開發(fā)模式中,零件也是Part文檔的最上層對象,該對象包含兩個對象:線框曲面對象(HybirdBodies)和實體對象(Bodies)。HybirdBodies對象在CATIA軟件交互界面中被稱為幾何圖形集,包含了類似零件設(shè)計中的其他對象如創(chuàng)建空間點、線條和平面等,因此在CATIA二次開發(fā)中具有非常重要的作用,Bodies對象與HybirdBodies對象類似。由上述分析可知,為實現(xiàn)參數(shù)的自動測量,可通過遍歷特征樹獲取所有幾何圖形集,然后通過用戶交互的方式獲取2D花紋幾何圖形集,進(jìn)而針對獲取的幾何特征采用不同的函數(shù)進(jìn)行測量。為了能夠?qū)y得的參數(shù)自動存入數(shù)據(jù)庫且達(dá)到模型重構(gòu)的要求,需要將其進(jìn)行細(xì)分直到不可再分以滿足第1范式。由分析可知,圖形是由圖素構(gòu)成,而每種圖素都有自己的特征數(shù)據(jù),如直線的起點和終點坐標(biāo),因此可將2D花紋圖形元素所對應(yīng)的特征數(shù)據(jù)存入數(shù)據(jù)庫中,使2D花紋與相應(yīng)數(shù)據(jù)庫中的數(shù)據(jù)一一對應(yīng),實現(xiàn)2D花紋圖與數(shù)據(jù)表的關(guān)聯(lián),不同用戶間可通過讀取數(shù)據(jù)庫中的圖形參數(shù)重構(gòu)2D花紋。具體步驟如下。
(1)獲取當(dāng)前根節(jié)點對象。首先通過文檔編輯器CATFrmEditor中的GetCurrentEditor()函數(shù)返回當(dāng)前激活的編輯器,進(jìn)而通過GetDocument()函數(shù)返回與該當(dāng)前編輯器對應(yīng)的文檔,其次通過IUnknown基接口中的接口查詢函數(shù)QueryInterface()獲取根路徑指針接CATInit,然后利用GetRootContainer()函數(shù)獲取根容器并將其轉(zhuǎn)化為Part容器,最后利用GetPart()函數(shù)獲取零件特征,也即根結(jié)點對象。
(2)遍歷2D花紋幾何圖形集。首先通過上一步獲取的零件特征QueryInterface檢索零件幾何特征集接口CATIPartRequest,然后通過該接口提供的GetSurfBodies()函數(shù)檢索所有幾何圖形集,根據(jù)GetPosition()函數(shù)確定2D花紋幾何圖形集在模型樹中的位置,進(jìn)而獲取花紋特征對象CATBaseUnknown指針,隨后就可通過CATIDescendants接口所提供的GetAllChildren()函數(shù)檢索零件中的所有子集合(點集合、線集合、圓弧集合等),然后利用遞歸的方法遍歷所有子集合中的元素,便可實現(xiàn)遍歷2D花紋幾何圖形集的功能。需要指出的是所有的接口(包括CATIDescendants接口以及CATIPartRequest接口)都繼承于基接口(IUnknown),而基接口主要通過3個基本函數(shù)(QueryInterface,AddRef,Release)對所有接口指針進(jìn)行管理。
(3)幾何參數(shù)的自動測量。首先利用Size()函數(shù)獲取不同子集合中元素的個數(shù),然后利用遍歷的方法提取集合中的元素,針對不同集合中的元素利用CATIMeasurableIn-Context接口下的不同函數(shù)進(jìn)行測量,具體功能的實現(xiàn)方法與其他接口一致,即通過用戶對象(Client Object)、接口(interface)、實現(xiàn)方法(Implementation)三部分實現(xiàn)對CATIA的開發(fā),這三部分有各自不同的分工和聯(lián)系,用戶對象包含通常所說的對象成員(如點、線、面等),接口是由一組操作集即純虛函數(shù)組成,用戶對象與實現(xiàn)方法的連接通過接口實現(xiàn),需要指出的是同一個實現(xiàn)方法可以同時為多個接口所共有。幾何參數(shù)的自動測量實現(xiàn)方法為:首先獲取CATIMeasurableInContext接口對應(yīng)的指針,然后利用該接口下不同的函數(shù)對被測對象進(jìn)行測量,從而實現(xiàn)獲取幾何參數(shù)的功能。
在輪胎花紋設(shè)計過程中,通常由于用戶操作習(xí)慣不同造成模型重構(gòu)過程的不確定性,因此如何通過程序來組合操作步驟以達(dá)到模型重構(gòu)的目的具有一定難度。由分析可知,不同圖元本身雖然是孤立的,但是他們之間通過頂點連接,因此模型重構(gòu)可以先從數(shù)據(jù)庫中讀取圖形參數(shù),然后利用CAA函數(shù)庫中的不同函數(shù)將構(gòu)成模型所需的所有基本線條繪制出來。由CAA提供的方式可知,基本線條的生成方式是多樣的,如生成一段直線,既可以通過直線的長度、方向和起始點的坐標(biāo)實現(xiàn),也可以只通過起始點與終止點坐標(biāo)的方式實現(xiàn),結(jié)合參數(shù)的自動測量過程,本工作采用第2種方式,這種方式雖然在建模過程中并不能體現(xiàn)線段之間的關(guān)系,但是當(dāng)模型建成之后通過依附于線段之間的頂點即可將整個模型聯(lián)系起來。
首先通過查詢輪胎的基本信息查找需要進(jìn)行重構(gòu)的輪胎花紋,然后可讀取數(shù)據(jù)庫中對應(yīng)的2D花紋參數(shù)信息。為方便查詢,系統(tǒng)提供了2種方式可供選擇:(1)精確查詢,直接在編輯框中輸入輪胎花紋的ID信息,即可查詢該輪胎花紋的基本信息;(2)模糊查詢,采用的是下拉菜單的方式,該方式結(jié)合了層次結(jié)構(gòu)的設(shè)計以便減少下拉選項中的內(nèi)容。另外系統(tǒng)還提供了可視化預(yù)覽功能,首先在多選框中單擊輪胎花紋基本信息,然后通過ftp站點[7]將對應(yīng)的花紋圖片從服務(wù)器下載到本地,再利用CAA加載圖片功能[8]將對應(yīng)模型的圖片顯示在界面中。
輪胎2D花紋的重構(gòu)及顯示步驟如下。
(1)創(chuàng)建幾何圖形集。首先利用編輯文檔類CATFrmEditor中 的GetCurrentEditor()函 數(shù)返回當(dāng)前已激活編輯器,進(jìn)而通過GetDocument()函數(shù)獲取當(dāng)前文檔,然后利用Part容器實現(xiàn)CATIMechanicalRootFactory接口,該接口主要用于創(chuàng)建幾何圖形集、有序幾何圖形集和幾何體,因此可利用該接口中的CreateGeometricalSet()函數(shù)創(chuàng)建輪胎2D花紋幾何圖形集以便模型的管理。
(2)線框模型的重構(gòu)。利用該文檔容器CATIContainerOfDocument中的GetSpecContainer()函數(shù)獲得規(guī)格容器,進(jìn)而將其轉(zhuǎn)化為幾何工廠CATIGSMFactory接口,該接口模塊提供的函數(shù)可以實現(xiàn)絕大多數(shù)創(chuàng)建底層幾何對象的操作,如點、線、面、圓弧、多段線、球體、旋轉(zhuǎn)體、拉伸體和填充面等,因此可以先通過其提供的CreatePoint()函數(shù)創(chuàng)建圓弧以及直線的起始點與終止點,然后利用CreateLine()函數(shù)和CreateCircle()函數(shù)創(chuàng)建直線與圓弧,當(dāng)利用for循環(huán)將所有的直線和圓弧都創(chuàng)建出來之后,即整個線框模型重構(gòu)完成。
(3)線框模型的顯示。通過CATIGSMProceduralView接口將創(chuàng)建的CATISpecObject類型的幾何特征對象添加到幾何集中,然后利用InsertInProceduralView()函數(shù)將其顯示在窗體中。
為方便用戶察看與分析研究,本系統(tǒng)提供2種數(shù)據(jù)顯示方式。
(1)界面顯示。該方式主要通過選擇器列表類CATDlgSelectorList中的SetLine()函數(shù)將需要輸出的數(shù)據(jù)顯示在多選框中,同時為了只顯示當(dāng)前數(shù)據(jù),需要用ClearLine()函數(shù)對之前的數(shù)據(jù)進(jìn)行清空。
(2)文件導(dǎo)出。首先利用SetVisibility()函數(shù)將選擇路徑窗體顯示出來,并利用GetSelection()函數(shù)獲取用戶選擇的文件路徑,然后就可以利用fopen()函數(shù)打開該文件,進(jìn)而利用fputs()函數(shù)按指定的數(shù)據(jù)格式寫入文件中,最后利用fclose()函數(shù)關(guān)閉文件。
當(dāng)用戶完成單節(jié)距花紋后,首先利用系統(tǒng)提供的交互界面輸入該輪胎花紋的基本信息,然后選擇模型樹中的2D花紋幾何圖形集即可,界面如圖2所示,系統(tǒng)會自動測量模型的幾何參數(shù)將其存入到數(shù)據(jù)庫中,并與其基本信息一一對應(yīng)。
圖2 選擇胎面2D花紋幾何圖形集界面
當(dāng)其他用戶設(shè)計輪胎花紋時即可利用服務(wù)器中已有的模型及其參數(shù),具體方法為:先通過系統(tǒng)提供的檢索界面(如圖3所示)篩選出需要的輪胎花紋,然后系統(tǒng)會利用數(shù)據(jù)庫中的幾何參數(shù)將對應(yīng)的模型重構(gòu)出來,同時將其幾何參數(shù)顯示在界面中,如圖4所示。如果需要對數(shù)據(jù)進(jìn)行分析,也可將其幾何參數(shù)導(dǎo)出。
圖3 輪胎花紋基本信息檢索界面
圖4 胎面2D花紋模型及其對應(yīng)參數(shù)顯示界面
由此可見,通過本系統(tǒng)不僅大大提高了測量效率,而且可以實現(xiàn)模型與數(shù)據(jù)的共享。
針對輪胎2D花紋自動測量的關(guān)鍵技術(shù)提出相應(yīng)算法,該算法不僅可以用于輪胎花紋的測量,而且對于其他線框模型也有很好的適用性,同時自動測量所生成的基本參數(shù)信息可自動導(dǎo)入到數(shù)據(jù)庫中并相互關(guān)聯(lián)。對于不同的輪胎可以通過檢索輪胎花紋的基本信息重構(gòu)出對應(yīng)的輪胎2D花紋(包括但不限于單節(jié)距花紋),從而實現(xiàn)了數(shù)據(jù)與模型共享,并且開發(fā)出的系統(tǒng)能夠無縫嵌入到CATIA軟件中。