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