王秋嬌 謝志祥
(1.西南交通大學希望學院基礎部 成都 610400)(2.航空工業航宇救生裝備有限公司 襄陽 441000)
CATIA是法國達索公司研發的一款高端CAD設計軟件,在汽車、航空、船舶、水利水電等領域有非常廣泛的應用[1~4],是全球應用最廣泛的軟件之一。作為一款通用性的軟件,CATIA原生命令選項較多,設計靈活,能滿足不同領域的不同應用場景。但是,當在某些場景下,需要快速設計的時候,繁多的選項反而限制了設計速度。為此,CATIA提供了模塊化的圖形接口工具CAA(Component Ap?plication Architecture),其包含了眾多的基于C++程序語言的API,供客戶定制化使用。文獻[5~10]等分別在不同的領域研究應用了CATIA二次開發,以提高設計效率。文獻[11~13]研究應用了CATIA V6平臺下的API。
多截面(Lofting)曲面也稱放樣曲面,是指根據多個不同的截面輪廓以及引導線做出的適應性的曲面,相鄰截面間平滑過渡,在汽車、飛機、工藝品等造型設計中有很廣泛的應用。每個截面(Sec?tion)控制最終模型的橫截面,閉合點(Closing Point)控制縱輪廓線,脊線(Spine)對整體形狀進行引導優化。如圖1(a)所示,當選擇矩形截面1、圓形截面2以及正六邊形截面3來創建多截面時,CATIA自動在每個截面輪廓上預生成閉合點,這些閉合點一般為曲線的極值點。
由圖可見,使用CATIA現有的算法,每個截面默認生成的閉合點并不處在截面的相同方位,截面1和截面2的閉合點處在偏右側方位,而截面3的閉合點處在偏左的方位。若執行確定命令,則生成失敗,CATIA生成的預覽圖形如圖1(b)所示。圖1(c)為手動調整了截面3的閉合點位置后的預覽圖,由圖可知,若不設置脊線,CATIA會生成一條默認的脊線來引導整體走向。
文獻[14~17]研究了與曲面相關的API,并依據各自所處的場景特點開發出快速建模工具,但尚未有學者在多截面曲面的API使用和優化方面公開研究成果。
CATIA多截面曲面對應的API為

可以對多截面曲面模型進行復雜的處理,如設置截面順序、設置或替換閉合點、設置引導線等。
雖然CATIA API提供了對截面設置閉合點的方法,并且可以通過相關接口很方便地設置點在曲線上的位置,但很難保證不同截面閉合點的對應位置關系。比如,對于圖1所示的場景,為了與閉合點1和閉合點2的位置對應,以保證造型的平滑,一般要求閉合點3在圖1(c)所示的位置附近,而不在圖1(a)、1(b)所示的位置或其他位置,但現有API無法保證這一點。
為解決該問題,本文借助CATIA現有API設計了一種對多截面曲面進行平滑的算法,并以插件的形式驗證了該算法的可行性和高效性。事實上,該算法既適用于多截面的曲面特征,也適用于實體特征,這里以曲面為例。
為更準確地敘述核心算法,在使用該算法之前,本文給出以下約定:
1)截面已經通過API或手動創建出來,并且是閉合曲線;

圖1 多截面曲面的創建過程
2)多截面以一條非閉合曲線作為脊線,該曲線通過所有截面曲線的內部,并且不與任何截面所在的平面平行;
3)算法所述API均基于CATIA V6平臺。
本文算法核心為任意取一個輸入截面,在其曲線上任意位置作一個點,作為該截面的閉合點。然后從該閉合點出發,以投影的方式,創建該點在其他輸入截面上對應位置的投影點。以下為具體步驟,為便于闡述算法步驟,具體步驟中對某些一般量作了特殊化處理,如以第一個截面的極值點作為投影原始點等。
首先,通過CATIA相關API獲取模型結構樹中已經定義好的截面曲線,通過函數:

創建一個多截面特征對象,可以通過函數:

來設置脊線。
然后,使用函數

在截面1(本文按順序對第n個截面稱為“截面n”,n=1,2,3,…)上創建極值點A,作為截面1的閉合點。此時,如果直接創建點A在其他截面上的投影點,可能無法獲取理想的投影點,如圖2所示,點A在截面Sb中的理想投影點為點B0,但由于點B1距離點A更近,所以,若直接創建點A在截面Sb中的投影點,則投影的結果為點B1。
為此,對于任意相鄰兩個截面Sa與Sb,在其之間的脊線上等距創建n個過渡點,即將截面Sa與截面Sb之間的曲線等分為n+1份,過每個點分別創建脊線的垂直平面,在每個垂直平面上創建大小合適的過渡圓C1,C2,C3,…Cn。使用函數:

創建截面Sa的極值點A在圓C1上的投影點P1,創建P1在圓C2上的投影點P2,以此類推,創建點Pn-1在圓Cn上的投影點Pn,然后創建點Pn在截面b上的投影點B,作為截面b的閉合點。
如圖2所示,依據上述步驟,可根據點A依次創建投影點P1,P2,P3以及投影點B。當截面均為規則曲線時,點B與理想投影點B0重合;否則與點B0接近,過渡點的數量越多,最終取得的投影點與理想閉合點B1越接近。但隨著過渡點數量的增多,程序所用的時間也越長,因此,過渡點的數量需要在精度和效率上作出一定的考量。

圖2 創建投影閉合點過程
最后,使用函數:

對步驟1中創建的多截面特征設置閉合點為點A,B,C,…。
抽象的算法流程圖如圖3所示,其中圖3(a)為總流程圖,圖3(b)為創建截面投影點的流程圖。

圖3 算法流程
以CATIA V6插件的形式實現了該算法,交互界面如圖4所示。
對于圖1(a)所示的場景,使用CATIA原生API無法一次性創建成功,需要手動修改閉合點參數或創建新的閉合點。并且通過觀測并多次嘗試修改參數來確定每個閉合點的位置,不僅操作繁瑣,影響設計效率,而且所設置的閉合點的位置參數隨機性大,設計質量也很難達到最佳。

圖4 插件交互界面
如圖5所示,使用本文所述的優化算法,當過渡圓的數量為1時,依然生成失敗,閉合點的位置參數沒有被正確地傳遞。當過渡圓的數量為4時,閉合點位置的方位通過過渡圓被傳遞到截面3,使得曲面創建成功,但具體的位置參數卻沒有被精確地傳遞,所以創建的結果依然有較大的扭曲變形。當過渡圓的數量為9時,閉合點位置的方位和具體參數均被較好地傳遞到截面3,創建結果較為理想。


圖5 不同過渡圓數量n的創建結果
分析了CATIA多截面曲面算法在自動生成閉合點方面的算法缺陷問題,在現有API的基礎上,提出一種通過過渡截面傳遞閉合點參數的算法,以達到光順最終模型的效果。以CATIA V6插件的形式實現了該算法,設計師可以控制過渡閉合點的迭代次數,在效率與精度之間靈活處理。經實驗驗證,該算法可快速準確地根據輸入元素創建比較光順的曲面模型,既可以以插件形式單獨使用,也可以作為系統性二次開發設計中的一部分,可大大提高設計和開發效率。