朱青淳 曾文源
(中國(guó)船舶及海洋工程設(shè)計(jì)研究院 上海200011)
船舶結(jié)構(gòu)設(shè)計(jì)過程中,計(jì)算船體總縱強(qiáng)度時(shí)一般需多次計(jì)算各個(gè)典型橫剖面的剖面模數(shù):在設(shè)計(jì)階段初期,首先勾勒出典型橫剖面圖的草圖,此時(shí)構(gòu)件尺寸是依據(jù)局部強(qiáng)度計(jì)算書取值[1];隨后進(jìn)行總縱強(qiáng)度校核,若不滿足總強(qiáng)度要求,則調(diào)整縱向構(gòu)件尺寸,使該剖面的剖面模數(shù)達(dá)到總強(qiáng)度規(guī)范要求,最終確定典型橫剖面的方案。
BV船級(jí)社的MARS是一款建模操作簡(jiǎn)單、修改模型方便的規(guī)范校核軟件,故經(jīng)常用來(lái)輔助設(shè)計(jì)工作。它可以快速計(jì)算剖面積、剖面慣性矩、剖面模數(shù)等幾何要素。工作中,我們先在CAD中畫出二維橫剖面圖,依照?qǐng)D樣在MARS中建模。若圖紙需要修改,則在MARS中修改相應(yīng)的參數(shù)(如板厚、骨材尺寸、開口位置等),計(jì)算新的剖面模數(shù),重復(fù)此過程直到剖面模數(shù)滿足設(shè)計(jì)要求。
艦船的典型橫剖面外板線型較普通商船更為復(fù)雜。建商船模型時(shí)只需約5個(gè)節(jié)點(diǎn)就可以勾出外板線型,而艦船需要更多節(jié)點(diǎn)才能較準(zhǔn)確描繪。若以二維圖紙為輸入條件,在MARS中建立艦船的模型也需花費(fèi)一定時(shí)間。例如:在建立船體外板時(shí),描繪外板的線型需要依次輸入節(jié)點(diǎn)坐標(biāo)。這些點(diǎn)的坐標(biāo)需要從二維圖紙中依次量取,工作繁瑣且容易出錯(cuò)。
本文用VBA語(yǔ)言開發(fā)基于CAD二維圖紙、輔助MARS建模的程序,只需在圖紙上選擇建模范圍,就可以快速將構(gòu)件信息導(dǎo)入至MARS模型中,稍作修改便可計(jì)算剖面模數(shù),不僅節(jié)約建模時(shí)間,而且有效減少可能產(chǎn)生的人為錯(cuò)誤,大大提高工作效率。
慣性矩是一個(gè)描述截面抵抗彎曲能力的幾何量,如圖1所示,任意形狀截面對(duì)坐標(biāo)軸的慣性矩如式(1)定義。
圖1 面域慣性矩定義
船舯區(qū)域的船體剖面模數(shù)是衡量船體總縱強(qiáng)度的重要參數(shù),其定義見式(2)[2]:
式中:Wd為甲板剖面模數(shù),m3;Wb為船底剖面模數(shù),m3;I為船舯剖面對(duì)其中和軸的慣性矩,m4;Zd為中和軸到強(qiáng)力甲板邊線處的垂直距離,m;Zb為中和軸到平板龍骨上表面的(即基線)垂直距離,m。
計(jì)算剖面模數(shù)歸根結(jié)底是將剖面各構(gòu)件分別對(duì)剖面中和軸求慣性矩。慣性矩是一個(gè)積分量,故計(jì)算時(shí)需引入一些簡(jiǎn)化,骨材、縱絎、甲板、縱艙壁都可以準(zhǔn)確計(jì)算,外板與橫剖面(平行于YOZ的平面)的截交線為一條曲線,無(wú)法直接求出其慣性矩?,F(xiàn)將該曲線分為若干小段,把每一段都看成一塊矩形,便可分別求取慣性矩再相加。例如,在圖2中,外板可分為OA、AB、BC、CD四段計(jì)算,每一段近似為以節(jié)點(diǎn)距離和板厚為長(zhǎng)和寬的矩形。這是一個(gè)“以直線代曲線”的過程,計(jì)算結(jié)果的精度取決于曲線分割的段數(shù)。顯然,分的段數(shù)越多結(jié)果越精確,但分得太細(xì)會(huì)提高計(jì)算代價(jià),且對(duì)精度提高并無(wú)顯著貢獻(xiàn)。
圖2 分段求曲線慣性矩
那么計(jì)算剖面模數(shù)時(shí),一條曲線究竟分為多少段直線才合理?取一條典型的外板曲線,分別在MARS中用4種方式建立模型,如圖3所示。方案a為程序根據(jù)曲線線型的變化自動(dòng)匹配出節(jié)點(diǎn)數(shù),具體的處理方法見1.3節(jié);方案b僅在甲板處建立節(jié)點(diǎn);方案c插入2倍于方案a的節(jié)點(diǎn);方案d插入4倍于方案a的節(jié)點(diǎn)。
圖3 橫剖面典型外板曲線計(jì)算慣性矩的不同建模方案
分別計(jì)算各方案慣性矩,并將對(duì)比結(jié)果列于表1,其中的理論值可用CAD命令計(jì)算求得[3]。此例中,按方案a在MARS中建模,計(jì)算結(jié)果與理論值誤差為0.1%,對(duì)設(shè)計(jì)的影響可忽略不計(jì)。
表1 慣性矩計(jì)算結(jié)果對(duì)比(平行舯體剖面)
方案c和方案d的慣性矩(精確至小數(shù)點(diǎn)后4位)以及中和軸高度(精確至小數(shù)點(diǎn)后3位)與方案a的數(shù)值相同;方案b和方案a相比,慣性矩和中和軸位置都有偏差。方案a建模足以保證精度,而方案c、方案d繼續(xù)插入更多的節(jié)點(diǎn),軟件的計(jì)算結(jié)果不會(huì)影響計(jì)算精度。
圖4 計(jì)算尾鰭外板線型慣性矩的不同建模方案
再舉一外板線型凹凸變化明顯的例子。橫剖面的外板見圖4,分別按照?qǐng)D4所示四種方案取節(jié)點(diǎn)數(shù),并在MARS中計(jì)算慣性矩的結(jié)果,理論值用CAD命令計(jì)算,結(jié)果如表2所示。
表2 慣性矩計(jì)算結(jié)果對(duì)比(尾鰭剖面)
從圖4中可以直觀地看出,此例中曲線的曲率變化較復(fù)雜,方案c、方案d的節(jié)點(diǎn)數(shù)明顯比方案a、方案b密集。由計(jì)算結(jié)果可知,方案a、方案c、方案d比前一例有了更明顯的相對(duì)誤差,但依然滿足工程應(yīng)用要求,從而方案a的節(jié)點(diǎn)選擇優(yōu)于方案c、方案d。而方案b的計(jì)算誤差偏大,節(jié)點(diǎn)數(shù)量選取相對(duì)不合理。
假設(shè)橫剖面圖中的甲板、外板都以多段線(pline)或直線繪制,獲取其上節(jié)點(diǎn)的坐標(biāo)就可以準(zhǔn)確輸出該線到MARS。事實(shí)上,圖紙中的甲板多用直線或圓弧繪制,外板、內(nèi)舷側(cè)由樣條曲線、圓弧、多段線繪制。MARS建模只接受節(jié)點(diǎn)的輸入(不接受任何線型的輸入),即1.2節(jié)中所述“以直線代曲線”的思想,用若干節(jié)點(diǎn)將曲線分割成小段計(jì)算剖面模數(shù)。因此,必須先將所有的圓弧或樣條曲線轉(zhuǎn)換成直線或多段線,提取其上節(jié)點(diǎn)的坐標(biāo)后再輸出(CAD中只有直線和多段線可以直接提取節(jié)點(diǎn)坐標(biāo))。程序處理曲線的步驟如下。
1.3.1 圓弧、樣條曲線轉(zhuǎn)換成多段線
船體外板線是一條曲率不斷變化的曲線,并且過渡光順,制圖中往往用樣條曲線繪制。樣條曲線是三次多項(xiàng)式組成的分段函數(shù),程序可以在曲線上插入細(xì)密的點(diǎn)以描繪樣條曲線的形狀,再依照插值點(diǎn)將其組成多段線,圓弧的處理方式類似。圖5是某橫剖面圖中的外板。用程序?qū)訔l曲線轉(zhuǎn)化為多段線后,雖然細(xì)密的節(jié)點(diǎn)可以準(zhǔn)確地描繪曲線的形狀,但由1.2節(jié)的結(jié)論可知,不必將這些節(jié)點(diǎn)全部輸出至MARS。
1.3.2 節(jié)點(diǎn)優(yōu)化
為提高運(yùn)算效率,應(yīng)對(duì)節(jié)點(diǎn)進(jìn)行篩選。程序?qū)匆韵略瓌t自行判斷,過濾掉不必要的點(diǎn)。由1.2節(jié)可知,多段線上相鄰節(jié)點(diǎn)距離取縱骨間距比較合適,沒必要取過多的點(diǎn)。如圖6所示,取外板曲線中的一小段,并假設(shè)A、B、C為圓弧上的點(diǎn),弦AB、弦BC的中點(diǎn)分別為E、G。E到AB的距離記為d1,G到BC的距離記為d2。若d1、d2均小于ε,則可以認(rèn)為B點(diǎn)是多余的,用線段AC就可以代替ABC。其中ε是由經(jīng)驗(yàn)得出的許用值,經(jīng)測(cè)試,程序中 取為1.5 mm時(shí),既可以保證用線段代替的圓弧不會(huì)失形,又不至于節(jié)點(diǎn)過多。然后將A、C、D看作圓弧上的點(diǎn),繼續(xù)比較弦AC、弦CD的中點(diǎn)到圓弧的距離,若小于ε則C點(diǎn)多余,可用線段AD來(lái)代替這段曲線,否則應(yīng)保留C點(diǎn),繼續(xù)檢驗(yàn)下一段圓弧。以此類推,遍歷曲線上所有的節(jié)點(diǎn),過濾多余的節(jié)點(diǎn),提取有效節(jié)點(diǎn)的坐標(biāo)。
圖5 樣條曲線轉(zhuǎn)為多段線后的節(jié)點(diǎn)數(shù)
圖6 過濾多于節(jié)點(diǎn)的方法
在校核總縱強(qiáng)度時(shí),只有計(jì)入總強(qiáng)度的構(gòu)件才需要在MARS中建出,故在運(yùn)行程序之前需先刪去橫剖面圖中的橫梁、縱骨補(bǔ)板、垂向扶強(qiáng)材等不參與總縱強(qiáng)度的構(gòu)件。為便于闡述,采用與MARS中相一致的坐標(biāo)系規(guī)定,即橫剖面圖中,基線為Y軸,指向右舷為正,中心線為Z軸,豎直向上為正,基線與中心線的交點(diǎn)為原點(diǎn)。每個(gè)橫剖面建在YOZ平面中。
程序的工作的步驟如下。
用程序自動(dòng)生成xml文件,生成船舶的基本信息,如船長(zhǎng)等船型參數(shù)、航速、材料等。此部分對(duì)應(yīng)MARS中的BSD模塊。這些信息是由用戶在程序界面中輸入的,后期也可以在MARS軟件中修改。
在AutoCAD平臺(tái)中,主要用平面和空間直線、平面圓弧曲線、平面和空間多段線、平面非均勻B樣條以及空間非均勻B樣條曲線等函數(shù)來(lái)描述圖形[4]。 典型橫剖面圖中,規(guī)定用綠色的點(diǎn)劃線表示中心線,用白色的實(shí)線表示基線,此兩種線不表示結(jié)構(gòu)件。用鼠標(biāo)框選得的對(duì)象(程序會(huì)排除掉線型為點(diǎn)劃線和實(shí)線的Line對(duì)象),即為待輸出的結(jié)構(gòu)件,大致可分為3類:板材、桁材、骨材。板材包括外板(含底部和舷側(cè)外板)、內(nèi)舷側(cè)(僅雙殼情況時(shí)有)、甲板、縱壁。若建模時(shí)將桁材(T型材)當(dāng)作板材處理,并不影響剖面模數(shù)的計(jì)算結(jié)果,故先初步將對(duì)象分為板材和骨材這兩類,分別進(jìn)行處理。根據(jù)制圖規(guī)范,可見板材用粗實(shí)線表示,故所選對(duì)象的類型若不為紅色的直線、多段線、圓弧、樣條曲線中的一種,該對(duì)象即為骨材,否則為板材。(在CAD制圖中習(xí)慣用紅色表示粗線)
對(duì)于歸為“板材”這一類的對(duì)象,只可能是直線、多段線、圓弧和樣條這四種曲線之一。板材在MARS模型中對(duì)應(yīng)“板”(panel),panel又由若干“節(jié)點(diǎn)”(node)構(gòu)成并定義。需要指出的是,在MARS中建模是講究方向的,其板的延伸方向必須沿著坐標(biāo)軸的方向。
首先在典型橫剖面圖中選擇坐標(biāo)原點(diǎn),依照前述原則建立局部坐標(biāo)系YOZ。對(duì)于直線和多段線,運(yùn)用VBA命令直接提取其上節(jié)點(diǎn)的坐標(biāo)信息,并按照Y坐標(biāo)由小到大的順序排列,線上節(jié)點(diǎn)按此排序作為node依次寫入xml文件中,從而定義MARS模型中的板。若線上節(jié)點(diǎn)Y坐標(biāo)均相同,則按Z坐標(biāo)由小到大排列節(jié)點(diǎn)。
對(duì)于圓弧或者樣條曲線的處理,程序先將它們轉(zhuǎn)換為多段線,然后按照1.3節(jié)描述的思路,過濾曲線上不必要的點(diǎn),再按照多段線和直線的處理方式操作。
參與總縱強(qiáng)度計(jì)算的縱向連續(xù)構(gòu)件有T型材、扁鋼和球扁鋼。對(duì)于T型材和扁鋼,歸為板材處理。由于工作中遇到的縱骨大部分采用球扁鋼,繪制縱骨的投影采用內(nèi)部開發(fā)的“球扁鋼動(dòng)態(tài)塊”,它按常用球扁鋼型號(hào)、補(bǔ)板形式定義動(dòng)態(tài)塊,繪圖時(shí)可直接插入塊。用程序可以方便地讀取“球扁鋼動(dòng)態(tài)塊”的坐標(biāo)信息和型號(hào)。
xml是一種可擴(kuò)展標(biāo)記語(yǔ)言,以結(jié)構(gòu)化的方式描述各種類型的數(shù)據(jù)[5]。MARS的模型可以用xml語(yǔ)言來(lái)描述,形成的xml文件可以在MARS中直接打開操作,且xml文件也兼容于NAPA軟件。本文開發(fā)的程序按照MARS建模格式的要求自動(dòng)生成xml語(yǔ)句,將上述讀取的結(jié)構(gòu)件信息(包括外板、甲板、縱艙壁、縱骨和桁材的坐標(biāo)、以及球扁鋼的屬性)轉(zhuǎn)譯為xml文件,從而生成 MARS模型。
在MARS中打開2.5節(jié)中生成的xml文件,此時(shí),橫剖面基本完成,只需補(bǔ)充板材的厚度、定義開口,便可完成建模,隨后可計(jì)算剖面模數(shù)。
程序工作的流程圖如圖7所示。
圖7 程序工作流程圖
以下是一個(gè)使用程序輸出剖面到MARS的例子。
首先,在簡(jiǎn)化后的CAD橫剖面圖(圖8)中,加載開發(fā)的VBA應(yīng)用程序,點(diǎn)擊菜單中的“MARS建模工具”, 彈出如圖9左側(cè)所示的程序界面。若為第一次建立剖面,需填寫船型基本數(shù)據(jù),點(diǎn)擊“設(shè)置船型基本數(shù)據(jù)”按鈕,在彈出的對(duì)話框中填寫。
然后點(diǎn)擊圖9左側(cè)程序界面中的“鼠標(biāo)選擇原點(diǎn)按鈕”,選擇橫剖面的原點(diǎn)(中心線與基線的交點(diǎn)),再框選整個(gè)橫剖面,按鼠標(biāo)右鍵確認(rèn)選擇完畢,回到程序主界面,點(diǎn)擊“新增橫剖面”。此時(shí),在CAD圖紙文件同一路徑下就會(huì)生成一個(gè)xml文件,即模型文件。xml文件局部?jī)?nèi)容如下頁(yè)圖10所示,圖10(a)顯示xml模型文件的基本構(gòu)成,圖10(b)為定義節(jié)點(diǎn)坐標(biāo)的語(yǔ)句。
圖8 CAD橫剖面圖
圖9 操作界面
最后,打開MARS,導(dǎo)入剛才生成的xml文件,可以看到輸出的剖面。此時(shí),只需要再輸入板厚和開口參數(shù)就可以計(jì)算剖面模數(shù)(見下頁(yè)圖11)。
圖10 xml模型文件(部分)
圖11 在MARS中查看模型
本文介紹的這款自行開發(fā)的程序,在簡(jiǎn)化后的二維橫剖面CAD圖基礎(chǔ)上,可以將構(gòu)件信息直接輸出至船級(jí)社軟件MARS中,用戶只需修改少量參數(shù)就能完成建模并計(jì)算剖面模數(shù),可輔助設(shè)計(jì)人員在初期確定橫剖面方案。此程序配合現(xiàn)行的設(shè)計(jì)思路和流程設(shè)計(jì),不僅操作簡(jiǎn)單、提高工作效率,也有效減少人為錯(cuò)誤,具有一定的實(shí)用價(jià)值。