可編輯NURBS曲線在AutoCAD與CATIA間的相互轉(zhuǎn)換
分析了AutoCAD中NURBS曲線的特點、相關(guān)的函數(shù)及參數(shù),以及CATIA中NURBS曲線的手工交互繪制與VBA程序自動繪制方法。通過ACIS到IGES格式轉(zhuǎn)換,將AutoCAD中的NURBS曲線轉(zhuǎn)換成CATIA中的NURBS曲線,不再能編輯節(jié)點。提出通過提取AutoCAD中NURBS曲線的有關(guān)信息,在CATIA中進行二次開發(fā)編程,由指定NURBS曲線的切線、曲率參數(shù)來顯示約束繪制的方法,直接生成NURBS,從而保證可編輯性。CATIA中的NURBS輸出成IGES格式,經(jīng)Gambit轉(zhuǎn)換成ACIS格式,在AutoCAD中打開,經(jīng)參數(shù)提取后反算出NURBS曲線的擬合點來,使其重具過擬合點的可編輯性,并對AutoCAD中用NURBS曲線擬合Polyline進行了探討。
1、引言
NURBS曲線是AutoCAD中的一種常用曲線,在船舶設(shè)計中描述復(fù)雜船體曲面時尤為方便。有時需要將AutoCAD中含NURBS曲線在內(nèi)的二維圖形轉(zhuǎn)換成CATIA中的三維模型,以查看效果。不過AutoCAD中的NURBS曲線包含原始擬合點、控制點及權(quán)重等有關(guān)信息,而CATIA中SplineCurve通過擬合點、各擬合點處的切線方向、強度、曲率方向、曲率半徑等有關(guān)參數(shù)來表達(dá)。雖然可以將AutoCAD中的NURBSCurve先Export成ACIS格式文件(*.sat),再經(jīng)Gambit轉(zhuǎn)換成IGES格式文件(*.igs),在CATIA中直接打開,但其節(jié)點不再可以編輯。同樣CATIA中的樣條曲線轉(zhuǎn)換到AutoCAD中時,擬合點不再可編輯。實現(xiàn)NURBS曲線在AutoCAD與CATIA間的相互轉(zhuǎn)換后仍能保持可編輯性,是要解決的問題。
2、AutoCAD中NURBS曲線分析
B樣條曲線按節(jié)點矢量特點可分為5種,即:均勻B樣條曲線、準(zhǔn)均勻B樣條曲線、分段貝齊爾曲線、一般非均勻B樣條曲線、非均勻有理B樣條曲線。AutoCAD中通過Spline命令產(chǎn)生的即為NURBS曲線,它是一種具有描述與設(shè)計自由型曲線的數(shù)學(xué)方法,ISO在1991年頒布的STEP標(biāo)準(zhǔn)將NURBS作為定義幾何形狀的唯一數(shù)學(xué)方法。NRBS曲線以B樣條函數(shù)為基,樣條函數(shù)具有局部性,NURBS曲線上某個僅受到臨近幾個擬合點的影響,這與人的認(rèn)知活動由遠(yuǎn)及近相類似,而與“蝴蝶效應(yīng)”、量子萬里感應(yīng)當(dāng)然是不同的。AutoCAD中由系統(tǒng)變量“SplineType”來確定NURBS曲線的階數(shù),若為6,則生成3次(4階)NURBS曲線;若為5,則生成2次(3階)NURBS曲線。用Spline命令繪制NURBS曲線時,先給出曲線經(jīng)過的一系列擬合點(FitPoint),再給定起點、終點切矢邊界條件來完成。AutoCAD中NURBS曲線的權(quán)值默認(rèn)為-1,采用起始擬合點的累加弦長作為節(jié)點參數(shù)。通過將系統(tǒng)變量“SplFrame”的置設(shè)為1,同時顯示NURBS曲線與其控制多邊形,則可通過直接操控控制點來調(diào)整曲線的局部凹凸程度。可用SplinEdit命令修改生成的NURBS曲線,如擬合數(shù)據(jù)、閉合、移動頂點、精度(添加控制點/提高階數(shù)/權(quán)值)、反轉(zhuǎn)等。但用SplinEdit命令編輯修改NURBS曲線后,用Entget方法可以發(fā)DXF(DrawingExchangeFile)代碼中無擬合點坐標(biāo)的相關(guān)消息。雖然可以用SplinEdit\Refine\ElevateOrder方法來提升NURBS曲線的階次(最高到26階),但實踐中發(fā)現(xiàn),升階后曲線自身形狀沒有改變,而且相應(yīng)的DXF代碼中只是增加了原擬合點對應(yīng)得累加弦長參數(shù)的重復(fù)次數(shù),并未增加新的擬合點,僅增加控制點的數(shù)目,同時控制點形成的控制多邊形更加貼近NURBS曲線。圖1中,在控制點處帶空心小矩形框的虛線為3次(4階)NURBS曲線的控制多邊形,在控制點處帶圓形框的虛線為4次(5階)的控制多邊形,在控制點處帶實心小矩形框的虛線為5次(6階)NURBS曲線的控制多邊形。不同階次下的NURBS曲線相應(yīng)的DXF部分代碼參表1所示。
圖1 AutoCAD中NURBS曲線控制多邊形隨階次的變化
表1 AutoCAD中NURBS曲線編輯升階后DXF代碼變化
AutoCAD中的NURBS曲線不具備重節(jié)點的功能。此外,AUTOCAD中科利用vlax-curve函數(shù)(-getParamAtPoint、-get-FirstDeriv、-getSecondDeriv)、vla-get函數(shù)(-Knots、-Fit-Points、-ControlPoints、-StartTangent、-EndTangent)等提取NURBS曲線的有關(guān)參數(shù)信息。
7、結(jié)語
介紹了AutoCAD中NURBS曲線的表述方式,以及其一階切向、二階切向等參數(shù)的提取,利用這些信息可轉(zhuǎn)換成曲率方向、曲率半徑等,籍此通過二次開發(fā)在CATIA中直接繪制NURBS曲線,相對于ACIS至IGES格式文件轉(zhuǎn)換方式,該NURBS曲線仍具有可編輯功能。CATIA中NURBS曲線可由IGES方式輸出,經(jīng)Gambit轉(zhuǎn)換為ACIS格式在AutoCAD中打開,反算出NURBS的擬合點等,在AutoCAD中以直接繪制方式生成NURBS曲線,或者利用Subst與Entmod命令直接修改原曲線的DXF代碼,使其擬合點可自由編輯。此外,討論了用分段NURBS曲線擬合帶許多控制點的Polyline的可行性,并編制了相應(yīng)的LISP程序?qū)崿F(xiàn)該功能。