可編輯NURBS曲線在AutoCAD與CATIA間的相互轉(zhuǎn)換

2014-11-09 張宗科 中國船舶及海洋工程設(shè)計(jì)研究院

  分析了AutoCAD中NURBS曲線的特點(diǎn)、相關(guān)的函數(shù)及參數(shù),以及CATIA中NURBS曲線的手工交互繪制與VBA程序自動(dòng)繪制方法。通過ACIS到IGES格式轉(zhuǎn)換,將AutoCAD中的NURBS曲線轉(zhuǎn)換成CATIA中的NURBS曲線,不再能編輯節(jié)點(diǎn)。提出通過提取AutoCAD中NURBS曲線的有關(guān)信息,在CATIA中進(jìn)行二次開發(fā)編程,由指定NURBS曲線的切線、曲率參數(shù)來顯示約束繪制的方法,直接生成NURBS,從而保證可編輯性。CATIA中的NURBS輸出成IGES格式,經(jīng)Gambit轉(zhuǎn)換成ACIS格式,在AutoCAD中打開,經(jīng)參數(shù)提取后反算出NURBS曲線的擬合點(diǎn)來,使其重具過擬合點(diǎn)的可編輯性,并對(duì)AutoCAD中用NURBS曲線擬合Polyline進(jìn)行了探討。

1、引言

  NURBS曲線是AutoCAD中的一種常用曲線,在船舶設(shè)計(jì)中描述復(fù)雜船體曲面時(shí)尤為方便。有時(shí)需要將AutoCAD中含NURBS曲線在內(nèi)的二維圖形轉(zhuǎn)換成CATIA中的三維模型,以查看效果。不過AutoCAD中的NURBS曲線包含原始擬合點(diǎn)、控制點(diǎn)及權(quán)重等有關(guān)信息,而CATIA中SplineCurve通過擬合點(diǎn)、各擬合點(diǎn)處的切線方向、強(qiáng)度、曲率方向、曲率半徑等有關(guān)參數(shù)來表達(dá)。雖然可以將AutoCAD中的NURBSCurve先Export成ACIS格式文件(*.sat),再經(jīng)Gambit轉(zhuǎn)換成IGES格式文件(*.igs),在CATIA中直接打開,但其節(jié)點(diǎn)不再可以編輯。同樣CATIA中的樣條曲線轉(zhuǎn)換到AutoCAD中時(shí),擬合點(diǎn)不再可編輯。實(shí)現(xiàn)NURBS曲線在AutoCAD與CATIA間的相互轉(zhuǎn)換后仍能保持可編輯性,是要解決的問題。

2、AutoCAD中NURBS曲線分析

  B樣條曲線按節(jié)點(diǎn)矢量特點(diǎn)可分為5種,即:均勻B樣條曲線、準(zhǔn)均勻B樣條曲線、分段貝齊爾曲線、一般非均勻B樣條曲線、非均勻有理B樣條曲線。AutoCAD中通過Spline命令產(chǎn)生的即為NURBS曲線,它是一種具有描述與設(shè)計(jì)自由型曲線的數(shù)學(xué)方法,ISO在1991年頒布的STEP標(biāo)準(zhǔn)將NURBS作為定義幾何形狀的唯一數(shù)學(xué)方法。NRBS曲線以B樣條函數(shù)為基,樣條函數(shù)具有局部性,NURBS曲線上某個(gè)僅受到臨近幾個(gè)擬合點(diǎn)的影響,這與人的認(rèn)知活動(dòng)由遠(yuǎn)及近相類似,而與“蝴蝶效應(yīng)”、量子萬里感應(yīng)當(dāng)然是不同的。AutoCAD中由系統(tǒng)變量“SplineType”來確定NURBS曲線的階數(shù),若為6,則生成3次(4階)NURBS曲線;若為5,則生成2次(3階)NURBS曲線。用Spline命令繪制NURBS曲線時(shí),先給出曲線經(jīng)過的一系列擬合點(diǎn)(FitPoint),再給定起點(diǎn)、終點(diǎn)切矢邊界條件來完成。AutoCAD中NURBS曲線的權(quán)值默認(rèn)為-1,采用起始擬合點(diǎn)的累加弦長作為節(jié)點(diǎn)參數(shù)。通過將系統(tǒng)變量“SplFrame”的置設(shè)為1,同時(shí)顯示NURBS曲線與其控制多邊形,則可通過直接操控控制點(diǎn)來調(diào)整曲線的局部凹凸程度。可用SplinEdit命令修改生成的NURBS曲線,如擬合數(shù)據(jù)、閉合、移動(dòng)頂點(diǎn)、精度(添加控制點(diǎn)/提高階數(shù)/權(quán)值)、反轉(zhuǎn)等。但用SplinEdit命令編輯修改NURBS曲線后,用Entget方法可以發(fā)DXF(DrawingExchangeFile)代碼中無擬合點(diǎn)坐標(biāo)的相關(guān)消息。雖然可以用SplinEdit\Refine\ElevateOrder方法來提升NURBS曲線的階次(最高到26階),但實(shí)踐中發(fā)現(xiàn),升階后曲線自身形狀沒有改變,而且相應(yīng)的DXF代碼中只是增加了原擬合點(diǎn)對(duì)應(yīng)得累加弦長參數(shù)的重復(fù)次數(shù),并未增加新的擬合點(diǎn),僅增加控制點(diǎn)的數(shù)目,同時(shí)控制點(diǎn)形成的控制多邊形更加貼近NURBS曲線。圖1中,在控制點(diǎn)處帶空心小矩形框的虛線為3次(4階)NURBS曲線的控制多邊形,在控制點(diǎn)處帶圓形框的虛線為4次(5階)的控制多邊形,在控制點(diǎn)處帶實(shí)心小矩形框的虛線為5次(6階)NURBS曲線的控制多邊形。不同階次下的NURBS曲線相應(yīng)的DXF部分代碼參表1所示。

可編輯NURBS曲線在AutoCAD與CATIA間的相互轉(zhuǎn)換

圖1 AutoCAD中NURBS曲線控制多邊形隨階次的變化

表1 AutoCAD中NURBS曲線編輯升階后DXF代碼變化

可編輯NURBS曲線在AutoCAD與CATIA間的相互轉(zhuǎn)換

  AutoCAD中的NURBS曲線不具備重節(jié)點(diǎn)的功能。此外,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曲線,相對(duì)于ACIS至IGES格式文件轉(zhuǎn)換方式,該NURBS曲線仍具有可編輯功能。CATIA中NURBS曲線可由IGES方式輸出,經(jīng)Gambit轉(zhuǎn)換為ACIS格式在AutoCAD中打開,反算出NURBS的擬合點(diǎn)等,在AutoCAD中以直接繪制方式生成NURBS曲線,或者利用Subst與Entmod命令直接修改原曲線的DXF代碼,使其擬合點(diǎn)可自由編輯。此外,討論了用分段NURBS曲線擬合帶許多控制點(diǎn)的Polyline的可行性,并編制了相應(yīng)的LISP程序?qū)崿F(xiàn)該功能。