陳 強 馬 坤
大連理工大學船舶工程學院,遼寧大連 116024
基于ObjectARX的船舶快速分艙程序設計
陳 強 馬 坤
大連理工大學船舶工程學院,遼寧大連 116024
艦船艙室形狀復雜、數量眾多,給船舶初步設計階段的艦船分艙工作帶來很大困難。文章提出基于有向分艙線的艙室定義方法,以降低艦船艙室定義階段的復雜性,同時提高直觀性。基于有向分艙線的概念,結合船型曲線的有序化組織,對AutoCAD進行二次開發,完成軟件編制。在實際應用中,不僅極大減少了艙室定義的時間和復雜性,同時為艦船艙室劃分提供結構化的組織和管理方法。
快速分艙;分艙線;參數化;自頂向下建模;二次開發
艦船艙室的劃分是船舶初始設計階段的主要任務,其本質是在船體外殼給定的情況下如何對船體空間進行快速合理的劃分,以使艦船滿足穩性、抗沉性等重要的性能指標要求。艦船的艙室劃分理論及相關性能計算發展至今已經相當完善,在這些性能計算中,艦船各艙室的數學描述,艙室中若干斷面的型值點數據往往是構成艦船艙容計算、自由液面修正,及完整穩性計算的基礎要素。然而,艦船艙室眾多,倘若對各艙室都采取手動采集型值點的方式,必定是相當繁瑣且容易出現差錯的過程。
面對經濟全球化下的激烈市場競爭,中國造船行業需要實現數字化造船,以提高行業的核心競爭力,為行業的發展提供有力的支撐[1]。計算機技術的發展,以及各種大型CAD/CAM等自動化軟件在艦船設計過程中的應用,使得艦船的總設計周期得到了相應縮短。艦船設計的數字化進程經歷了二維繪圖、半三維(線框)建模、實體電子三維產品建模和船體部件生產線緊密集成的三個階段[2]。當前,被艦船設計單位廣泛使用的艙室定義和建模軟件有 SIKOB,NAPA,TRIBON Initial Design,以及中國船級社的 Compass。 SIKOB[3]軟件的主要弊端在于艙室要素的信息只能夠通過文本進行輸入,這實際上是把設計者頭腦中的圖形概念到計算機圖形的轉化過程進行了分離,因此不利于設計者和計算機圖形的反饋互動及錯誤檢查,更不用說將其應用于艙室信息未知的嘗試性分艙;Compass的弊端在于,其本身圖形系統的缺乏,導致圖形顯示不夠直觀,因而就無法達到實時的圖形反饋及實時交互;NAPA[4]和 TRIBON Initial Design[5]功能強大,但是其建模過程比較繁瑣復雜,各艙室的構建始于包裹空間的6個面。這種分艙方式是自底向上的,既只能一個一個艙室的構建,如圖1所示。此外,在艦船初始設計階段通常只想獲得艙室的型值點以及直觀的圖形顯示,對于視覺效果的要求是次要的。所以,能夠開發出一個簡單易用且實時交互性強的分艙軟件就具有一定的經濟價值。

圖1 NAPA和TIBBON Initial Design的分艙模式
2.1.1 提出背景
艦船分艙設計是設計中的一項重要內容,涉及艦船的多個方面:首先是功能需求,其次分艙要考慮規范要求,最后還要考慮剪力、彎矩等結構因素[6]。在艦船設計的初步階段,設計者的諸如產品的功能、配置、幾何形體、部件關系等概念,在不斷的反復分析過程中得到優化[7]。減少這個過程的復雜性,也在一定程度上縮短了船舶的設計周期。
艦船艙室的定義和建模,單從圖形的角度來看僅僅是屬于計算機繪圖領域,關鍵在于如何對艙室形狀進行描述。船體分艙可分別按橫向、縱向和豎向進行。橫向以縱艙壁沿船寬方向劃分艙室,以減少自由流動的貨物對艦船穩性的影響。縱向以橫艙壁沿船長方向劃分艙室,其作用是隔開不同用途的船艙,保證艦船具有足夠的橫向和縱向強度、破艙進水后的浮態和穩性,以及防止因某一艙內發生火災從而波及全船的危險等。豎向則以內底、平臺、各層連續甲板和上層建筑甲板將船體和上層建筑予以分隔,以保證航行安全和船體強度,滿足載貨及乘員的工作和生活需要以及設備的布置和使用要求等[8]。
基于艦船艙室形狀大多是橫剖面形狀較為復雜,而縱向比較簡單。因此,本文主要討論艙室橫剖面的幾何要素。目前對艙室的定義通常采取以下三種方法:
1)取平均截面為規則的幾何形狀(矩形或是梯形)近似計算;
2)各斷面形狀分別用左壁和上壁的型值點由下至上進行描述;
3)各斷面形狀用能夠近似表達其形狀的一組有序離散點進行描述。
以上三種方法中,第一種方法很簡單,但因為只是一種近似,因此會有一定的誤差。第二種和第三種方法能夠對艙室形狀進行比較精確描述。很多學者直接采用第三種方法對艙室形狀進行描述,其大致方法如下:
1)在船體空間中選取兩個肋位作為待求艙室的橫艙壁位置;
2)分別給出兩個橫艙壁位置上的描述艙壁的關鍵點列;
3)插值生成各中間斷面的艙壁型值點。
楊帆[9]等正是通過引入艙室特征點概念(艙室橫斷面有序離散點列)對艙室形狀進行描述,并用Visual Basic 6.0進行了相應軟件的開發。直接使用特征點對艙室進行描述的弊端在于無論怎樣對這些艙室特征點進行信息提取,它們始終是孤立點。這種方法僅僅只是抓住了這些點作為個體的孤立信息,但是卻忽視了這些點作為整體的拓撲信息,不利于艙室空間的拓撲結構描述,并且無法對空間進行劃分,只能支持自底向上的設計模式。在給出離散特征點的設計方法中,通常是對點的性質進行劃分,然后進行文本的輸入。但是這種方法很不直觀,不能有效地使設計者與圖形進行交互。
船體空間內部的艙室特征點實際上是構成艙室封閉空間的艙壁折角點在某個與中橫剖面平行的平面上的投影,因此這些點之間的關系是艙壁間關聯關系的反映。此外,在船舶快速分艙過程中,尤其是在艙室信息未知的自由分艙中,這些點列結合相應的輔助點信息還蘊含著設計者的設計意圖。所謂設計意圖,指對于一個空間分割的取舍指示。如圖2所示,如何在最少的輸入情況下判斷出設計者對A和B的取舍。如果軟件設計能夠充分利用這些蘊含的關系進行判斷就可以大大減輕設計者的負擔。

圖2 對一個空間分割的取舍
2.1.2 有向分艙線的概念
艦船快速分艙的實現,除了盡可能地實現參數化,還應該在那些必須由設計者參與的環節中盡量減少對設計者提出交互的要求,因此對設計者設計意圖的捕獲就顯得相當重要。圖形作為設計者思想的一種表達形式,完全蘊含了設計者想要表達的意圖,關鍵是如何從圖形中把這個意圖進行捕獲。
本文在楊帆等研究成果的基礎上,基于艙室特征點列整體作為艙壁間關聯特性反映的事實,利用參數化曲線的性質,提出了有向分艙線的概念:能夠描述艙室特征點的空間位置關系及設計者意圖的有向線段。有向分艙線的數學本質是一條參數化的多段線,本文所實現的軟件正是利用了有向分艙線的參數化特性對設計者的意圖進行捕獲。在此給出軟件實現過程中用到的幾種有向分艙線。
1)首先選取艙室某橫斷面上完全落入艙室空間內部點列(如圖3中的B、C、D三個點),分別在以上有序點列的基礎上自兩端(B、D兩點)過與船體的交點(1、2兩點)分別延伸出船體,得到兩個輔助點(A、E兩點),構成一條分艙線。輔助點主要是在自由分艙中輔助程序去找到有向分艙線與船體的交點,這樣就可以支持設計者在屏幕上直觀畫出艙壁外形,而不會因為誤差導致無交的情況。如圖3所示ABCDE就構成了有向分艙線的關鍵點。

圖3 第一類
2)對于完全在船體外殼內部的橫斷面艙型,僅僅選取其封閉邊界上的點夠成的有向封閉多變形點列,作為有向分艙線關鍵點,如圖4中ABCD。

圖4 第二類
3)在首端只有一個輔助點,尾端有兩個輔助點。這種分艙線是為了支持自頂向下的分艙模式而采用,如圖5中ABCDE。

圖5 第三類
結合有向分艙線的概念,本文對船體橫斷面曲線進行逆時針排序。這樣,只要設計者選取船體某橫斷面并畫出一條分艙線,程序就會對分艙線上的點進行測試,區分出有向分艙線上的輔助點和船體內部的點。然后從有向分艙線終點開始按逆時針繞行并截取船體上與之夠成封閉的曲線。
基于以上實現方法,設計者不用事先知道該艙室的具體信息。在船體外輪廓曲線已知的情況下,任意選取艏艉兩個橫斷面,分別給出所選艏艉斷面的分艙線,程序會自動插值生成各中間橫斷面的有向分艙線,并在各橫斷面處截取與對應有向分艙線構成逆時針的船型曲線及圖形化顯示。
本文所實現的軟件中,有向分艙線實際上是艙壁在船體各橫剖面的投影。基于各橫剖面投影對應點之間呈線性關系,艏艉兩條分艙線相結合進行插值就可以模擬艙壁板,實現對船體空間的劃分。艙室首尾斷面有向分艙線的給出可以通過參數化輸入,也可以直接在屏幕上畫出,真正實現了從設計者觀念到計算機圖形的快速轉換,提高了設計效率。有向分艙線參數化定義如圖6所示,可以在左邊的表格中直接輸入分艙線的坐標值進行分艙線的創建。
艦船通常有許多的艙室,如果完全采用自底向上的分艙模式,既對所有的艙室都進行從頭設計勢必相當繁瑣,沒有對已劃分的空間進行充分利用。因此,本軟件基于有向分艙線的概念并結合LEE SU[10]等提出的自頂向下的設計模式對該艙

圖6 有向分艙線的參數化定義
室劃分模式提供了支持。該設計模式的理論很簡單,本質上就是不斷地去切割一塊“面包”。該方法的實現主要是利用前文中的第三種分艙線把已經產生的艙室一分為二,這樣就不需要對每個艙室進行從頭創建,提高了分艙的效率,如圖7所示。

圖7 將一個艙室一分為二的自頂向下分艙模式
艦船艙室眾多,如果不能對劃分的艙室進行結構化的組織和管理,就會給其后的性能計算帶來不必要的麻煩。實際上艦船眾多的艙室相互之間都有一定的關系,因為艦船的分艙過程總是先劃分出若干的大隔艙段,然后在對大隔艙段進行細化,或者說是對某個艙室進行細分,所以構建艙室之間的空間層級關系就相當重要。本文所實現的軟件正是基于此構建了分艙層級樹。如圖8所示,左邊為分艙過程中形成的分艙層級樹,表明1號燃油艙等小艙室都是在1號大隔艙的空間中細分得到。

圖8 艙室的結構化組織
參數驅動的功能是任何建模軟件都應該具備的。但是艙室的形狀復雜參數眾多,而且很多時候設計者都會提出特定需求,很難將所有的參數都考慮進去,但仍然可以嘗試在一定范圍內進行參數化,以減少設計者負擔,加快設計過程。本文軟件所實現的目的是幫助設計者完成艦船快速分艙,旨在快速獲得艙室的幾何信息。因此本文所實現軟件直接選取有向分艙線關鍵點的幾何信息作為參數,取得了一定效果。
1)首先在艙室的定義階段,本文所實現的軟件支持對分艙線的參數化定義,直接在表格中輸入精確坐標(圖6)。
2)在對艙室定義的修改過程中,無論是直接對分艙線圖形的修改或是對其參數進行修改,圖形都會被驅動變化,如圖9所示。
3)在同一個大隔艙內無論修該了任何一個小艙室,其余小艙室都會自動做出相應的變化,如圖10所示。

圖9 修改有向分艙線導致艙型變化

圖10 調整深色艙室導致淺色艙室自動調整
在以上的參數化分艙過程中,關鍵的實現是艙室之間的布爾運算。在對其中任何一個艙室的修改后,都應該去測試是否與其他艙室構成相交關系。如修改A艙室導致與B艙室構成了相交關系,就應該在兩個艙室之間做布爾減法運算(BA)調整B艙室。本文在三維空間中基于線框模型完成了參數化分艙過程。
1)判斷修改后的艙室與其他艙室是否相交。主要實現是判斷各艙室的有向分艙線在中橫剖面投影是否出現相交,以及各艙室在船長方向是否出現重疊。
2)相交艙室的橫斷面補齊。使兩艙室在相交區間內部計算橫斷面數目及位置一致。
3)相同船體縱向位置橫剖面線框間的布爾運算[11],調整與修該后艙室相交艙室的線框。
具體情況,可參考圖11。

圖11 程序流程圖
艦船分艙系統,作為一種交互式的圖形系統,其實現方式基本有兩種方式。
1)自行研發圖形平臺,這種開發方式的優點在于擁有完全自主的知識產權,系統功能的擴充不受外界限制。但其弊端是系統的開發及維護難度較大,開發周期較長。
2)利用第三方開放的軟件平臺進行二次開發,這種方式多為規模較小的公司所采用[12]。由于船舶設計中大多數工程圖都是使用AutoCAD軟件繪制的,而且AutoCAD具有強大的繪圖能力和一個開放的體系結構,因此本文采用AutoCAD軟件作為船舶分艙軟件的二次開發平臺。

圖12 類型設計及功能
圖形系統是復雜的,因為圖形系統中要管理大量的圖形基本元素以及處理其間的各種抽象相互關系。基于圖形的復雜性,本文采用C++語言對AutoCAD進行二次開發,完成了程序的編制。所開發的程序與AutoCAD共享同一個應用程序進程空間,直接嵌入AutoCAD中運行,獲得了較大的快速性。
CShipLinesManager是全局管理類,提供計算內核與界面的交互。
CStaMgr是站線管理類,封裝了對站線的創建及管理。
CWlMgr是水線管理類,封裝了對水線的創建及管理。
CHold是對艙室的抽象,封裝了艙室的屬性及方法,如艙室的名稱,所關聯的艙室及艙室的創建方法等。
CStaLine是站線類,封裝了站線的數據準備等方法.
CWLline是水線類,封裝了水線的數據準備等方法。
CTranLine是艙室的橫剖線類,封裝了橫剖線的數據準備等方法。
CSubDL是有向分艙線類,封裝了有向分艙線的方法,如起始點判斷,求交等方法。
CLawTool僅僅是對一些輔助方法的封裝,是個工具類,封裝了點在圖形內外的測試等工具。
1)坐標系選取
采用船體坐標系,坐標系原點取在船體的中縱剖面、中橫剖面、基平面的交點。X軸船首為正,Y軸右舷為正,Z軸向上為正。注意,AutoCAD中的世界坐標系與船體坐標系的Y軸是相反的,需要進行坐標系的轉換。
2)船體型值表導入及站線、水線的生成
B樣條作為幾何造型中的重要工具,因為其具有良好的局部支撐等性質,在CAD/CAM系統中得到廣泛應用。本文所編制的軟件同樣也采用B樣條曲線對船型曲線進行表達,具體算法參見文獻[13]。
本文所導入型值表為艦船各站橫剖面上的一系列離散點。基于導入的型值點數據,調用CShipLinesManager的 createStationlines()方法,利用B樣條曲線插值生成站線,然后在站線的基礎上根據具體輸入的水線間距調用CShipLinesManager的createWaterlines()方法插值生成各水線。至此,船體的基本數據實際上已經生成。此過程中要注意對一些特殊的位置,如艏艉部進行曲線修正。
3)大隔艙的生成
根據用戶輸入的大隔艙首尾斷面的位置及各中間斷面的間距,調用CShipLinesManager的createMainHold()方法插值生成相應斷面的大隔艙橫剖面,如圖13所示。為了與有向分艙線結合實現后期小艙劃分中對作者意圖的捕獲,大隔艙橫剖線逆時針存儲在橫剖線類CTranLine的對象中,如圖14所示。

圖13 程序界面及生成大隔艙

圖14 船體曲線排序
4)小艙室的劃分
艦船小艙室劃分要做到任意、快速以及簡便,因此軟件設計應該盡量減少艙室設計者的負擔,減少不必要的輸入,盡量挖掘圖形本身所蘊含的信息。其難點在于如何通過最少的輸入產生符合設計者意圖的艙室,其關鍵就在于對設計者意圖的捕獲。在基于艙室特征點的分艙程序中,必須通過對隨船體上點的坐標進行特殊處理,才能區分出要截取的船體部分,這無疑是增加了設計者的記憶負擔且容易出錯。
本文結合有向分艙線的概念和對船體曲線進行有序組織,實現了僅僅通過一條設計者手畫的有向分艙線對設計者意圖進行捕獲。該功能的內部實現充分利用了有向分艙線和船體曲線作為參數曲線的特性,以及船體曲線的有序組織。其實現大致為:首先求出有向分艙線與船體型線的交點以及與之有交的船體型線在有序數組中的索引;其次,利用船體型線的參數化特性求出交點在所屬船體型線的參數值;最后結合船體型線的逆時針組織順序,就可以通過交點及船體型線端點參數走勢來判斷曲線的逆時針走向。程序從有向分艙線上靠近終點的交點開始沿逆時針方向對船體曲線進行截取,一直到靠近有向分艙線起點的交點為止。只要設計者畫出一條簡單的多段線,就會得到一個與其構成逆時針走向的艙型。對自頂向下的分艙模式的支持其內部實現與上類似,二者的關鍵都是對曲線進行有序組織及求交判斷。
1)基本艙室的劃分。首先在尾斷面給出分艙線,然后在首斷面給出分艙線,最后程序自動插值生成小艙室。圖15和圖18分別表示小艙室A和B在尾斷面的分艙線,圖16和19分別表示小艙室A和B在首斷面的分艙線,圖17和20則為生成的小艙室。可以看出,因分艙線的給出方向不同生成不同的艙室。

圖15 艉斷面A→E

圖16 艏斷面A→E

圖17 生成艙室A

圖18 艉斷面A→E

圖19 艏斷面A→E

圖20 生成艙室B
2)自頂向下的分艙模式。對已經生成艙室的切分,只需給出第三種分艙線,程序自動把圖21中右邊深色艙室切分為兩個艙室,如圖21中左圖所示。

圖21 用第三類有向分艙線A→D分隔艙室的自頂向下模式
本文綜合國內外艙室建模軟件的應用經驗以及相關學者的研究基礎,基于艙室特征點作為一個整體實際反映了艙壁的拓撲關系的事實,提出了有向分艙線的概念。基于有向分艙線的概念并結合船體參數化曲線的有序組織,編寫了船舶快速參數化分艙系統,對自底向上和自頂向下的分艙模式提供了支持,提高了船舶初始階段對艙室建模的效率,為后期船舶性能的計算提供了基礎。
[1] 李玉剛.面向數字化造船的XML及其相關標準應用研究[D].大連:大連理工大學,2007.
[2] 戰翌婷.船舶分艙程序實現[J].船舶工程,2007,29(5):48-51.
[3] SIKOB(currently,SEASAFE).[2009-07-15].http://www.seasafesoftware.com.
[4] NAPA.[2009-07-15].http: //www.napa.fi.
[5] TRIBON Solution (currently,AVEVA).[2009-06-20].http://www.tribon.com.
[6] 周曉明,張明霞,林焰,等.基于VBA的船舶交互式智能分艙方法[J].船舶工程,2006,28(4):43-45.
[7] ROH M I,LEE K Y.Generation of the 3D CAD model of the hull structure at the initial ship design stage and its application[J].Computers in Industry, 2007,58(6):539-557.
[8] 陸叢紅.基于NURBS表達的船舶初步設計關鍵技術研究[D].大連:大連理工大學,2005.
[9] 楊帆,馬坤,紀卓尚.油船參數化定義方法研究[J].造船技術,2007,(5):20-23,8.
[10] LEE SU,ROHM Y I,CHA JH,et al.Ship compartment modeling based on non-manifold polyhedron modeling kernel [J].Advances in Engineering Software,2009,40(5):378-388.
[11] 周培德.計算幾何-算法設計于分析[M].2版.北京:清華大學出版社,2005.
[12] 單婷.基于ObjectARX的三維重建系統的研究與開發[D].大連:大連理工大學,2006.
[13] 朱心雄.自由曲線曲面造型技術[M].北京:科學出版社,2000.
Program Design for Quick Bulkhead Subdivision Based on ObjectARX
Chen Qiang Ma Kun
School of Naval Architecture Engineering, Dalian University of Technology, Dalian 116024, China
Due to the irregular shapes of shi p compartment and its large quantity, the risk of the bulkhead subdivision project increases significantly at initial design phase.Targeting to reduce the difficulties and improve the visualization of bulkhead subdivision,this article introduce d a new method ofmodeling the bulkhead based on subdivision line,which followed the concept of subdivision line and the ordering of ship lines, and through the secondary development on the AUTOCAD, the program was implemented.In practical application, the complexity and period of bulkhead subdivision are reduced enormously, the program provides an organized controlmethod to the designer.
quick bulkhead subdivision; subdivision line;p arametric; top-down modeling;secondary development
U663.8
A
1673-3185(2010)03-67-07
10.3969/j.issn.1673-3185.2010.03.016
2009-12-29
陳 強(1983-),男,碩士研究生。研究方向:智能船舶CAD與集成信息系統。E-mail:cq_1031@yahoo.com.cn
馬 坤(1961-),女,教授,博士生導師。研究方向:智能船舶CAD與集成信息系統