宋一淇,王佩瑜,常守明,符安邦
1 中國艦船研究設計中心,湖北武漢430064
2 武昌船舶重工有限責任公司,湖北武漢430060
三維設計作為提高船舶設計制造效率和質量的有效手段,以及作為數字樣船及虛擬仿真技術的基礎,正在被越來越廣泛地應用于船舶的設計制造過程中。目前,國內許多設計院所、船廠都已在設計制造過程中應用了三維CAD/CAM 系統,如國外引進的CADDS5,TRIBON,FORAN,CATIA,以及國產的東欣、SB3DS 等[1]。
隨著三維CAD/CAM 系統應用的推廣和深入,對其數據利用的需求逐漸增多,利用的形式越來越多樣化,而其系統本身的通用化功能往往難以滿足用戶對三維數據多樣化及個性化利用的要求。同時,由于對底層數據結構的研究是進行二次開發的前提和基礎,使得對三維CAD/CAM 系統底層數據結構的研究逐漸成為研究熱點,而對船體結構底層數據的研究更是重中之重[2-4]。
FORAN 系統采用與Oracle 數據庫高度集成的方式,使用Oracle 數據庫全程管理其船舶三維模型。其數據表數量眾多,結構復雜。但其Oracle數據庫完全向用戶開放,為對其底層數據結構的研究和開發利用提供了可能。
FORAN 系統是由西班牙SENER 集團開發,專門用于船舶與海洋工程設計制造的三維軟件系統。該系統在全球應用廣泛,自2005年進入中國市場后,也得到了成功的應用[5-7]。
FORAN 系統涵蓋了總體、船體、舾裝、電氣、艙室布置等各專業的三維設計功能,可用于船舶的概念設計、初步設計、詳細設計、生產設計等各個設計環節[8]。
該系統各專業之間的設計相對獨立,每個專業均由多個模塊構成,功能全面,且隨著版本的升級,其模塊功能不斷完善,模塊數量也相應增加。其中,船體結構專業主要由6 個模塊組成(V60R3.0 版),其關系如圖1 所示。

圖1 船體專業各模塊之間的關系Fig.1 The relationship between hull subsystem modules
從圖中可以看出,由FHULL 模塊創建的船體結構三維模型直接存儲至Oracle 數據庫中,作為其他船體專業模塊的數據來源。
本文即針對FORAN 系統Oracle 數據庫中由FHULL 模塊創建的三維模型的數據結構展開研究,為三維數據的深度利用提供基礎及條件。
船體結構三維建模主要在FHULL 模塊中進行。而其基礎庫的創建則是在NORM 模塊中完成,如材料庫、型材庫、板材庫、肘板庫、各類孔庫、端部削斜庫、貫穿切口及補板庫、剖口庫等。此外,FHULL 模塊中Block 的定義也是在NORM 模塊中進行。
FHULL 模塊分為Shell and decks(曲面模式)和Internal structure(平面模式)兩種建模方式[9]。其中:Shell and decks 用于外板、甲板等曲面形式的板架結構的建模;Internal structure 用于船體所有平直形式板架結構的建模。FHULL 模塊的建模流程如圖2 所示。

圖2 FHULL 模塊建模流程Fig.2 Modeling process of FHULL
從圖中可以看出,FHULL 模塊建模的主要內容為各類板和骨材等實體模型,以及表示結構層次關系的非實體模型,如Section(承載結構建模的平面)、Strutural element(結構平直分段)、Zone(船體曲面分段)等。此外,Block(船體立體分段)和Surface(船體曲面)也對表征結構層次關系至關重要,但前者是在NORM 模塊中進行定義,后者則是在總體型線中進行定義。
不同于基于結構樹式的模型管理模式,FORAN系統采用的是基于特征的模型管理模式,其模型的層次關系反映在模型的屬性中,即將模型所屬的Block,Section,Structural element,Surface 和Zone 等作為屬性附加給模型。這些表征結構層次關系的屬性與表征模型本身特征的屬性,如名稱、材料、規格、位置等,一起構成了結構底層數據。
因此,對結構底層數據的研究實質上是對結構模型各種屬性在Oracle 數據庫中存儲方式及其相互關系的研究。
FORAN 系統Oracle 數據庫中與結構相關的數據表多達數十張,其中與FHULL 相關的也有二十余張。這些表主要可分為基礎信息表和各類結構件的屬性信息表兩類。其中:基礎信息表包含了建模所需的標準板/型材、開孔、材料以及Block等通用信息,這些信息通過表之間的關聯關系供其他數據表引用;各類結構件的屬性信息表既包含模型的名稱、幾何信息、重量重心等直接反映模型特征的屬性信息,也包含材料和Block 的Oid(對象標識)等與基礎信息表相關聯的信息。此外,還有反映結構節點層次關系的數據表。
對于上述數據表,其中基礎信息表多由NORM 模塊進行定義,但其是FHULL 建模的基礎,是分析結構數據關系不可或缺的部分。而各類結構件的屬性信息表中,受設計深度的影響,部分表可能為空。而且,其中如表示結構件幾何形狀及其與輔助線之間關系的數據表等與數據的深度利用關系不大。此外,各類結構件的屬性信息表中的屬性信息還有不同程度的重復。因此,研究結構底層數據結構的關鍵就在于對與FHULL模塊所建模型密切相關的表進行分析。
通過使用FHULL 模塊的兩種模式進行板和骨材的相關建模操作,同時結合SQL 語句監測數據庫的變化情況,進而分析表的變化與模型的關聯關系。經過對表的內容進行初步分析,確定了其中與結構層次關系及結構特征屬性密切相關的表,如表1 所示。

表1 船體結構主要相關表Tab.1 Main datasheets related to hull structure
對數據表內容的分析是基于底層數據進行二次開發的基礎。其分析的內容包含表中字段本身的意義,以及字段的值所代表的具體含義。
通常,大多數字段的名稱就直接反映了字段所代表的含義,如字段Density 即代表密度。而對于無法從名稱中分析其含義的字段,則要結合對字段值的具體分析確定其含義。
對于字段的值,根據其自身體現數據含義的直接程度,主要可分為3 類:第1 類是可以直接反映數據含義的值,如描述信息、名稱等,這類值有的是設計者的輸入信息,有的是根據設計者設定的規則創建或是根據輸入數據自動計算所得,數據具有實際的意義,可直接明了地體現出值的含義;第2 類是與其他表相關聯的值,如字段Block_oid,Material_oid 的值等,這類值多是由數據表自動生成的各種Oid,數據本身并無實際含義,需要通過該值從其關聯的表中解讀出其含義;第3 類是間接反映結構特征的值,如字段Part_type,Symmetry 的值等,這類值由系統定義,設計者不可更改,一般為一組特定值,并與用戶建模的某些操作相對應。例如,用戶在曲面模式下創建一塊板,系統就會將其相應表中字段Part_type 的值設為9。這類字段較少,但卻是字段值分析的難點,也是分析的重點。
本節將通過建模操作對數據表的字段及值進行正向分析,同時結合使用具體的字段值逆向驗證相關模型等方法,得到表1 中數據表內容的詳細分析結果。
1)基礎信息表。
基礎信息表有3 張,其內容分析的結果如表2所示。其中,表Std_profile 為型材庫對應的數據表。除表2 中所述的截面和材料相關字段外,還有表示庫存的字段,可供每種型材定義最多4 種不同長度規格的庫存相關信息。表Block,Material分別為定義立體分段和鋼材材料所對應的數據表。
2)結構屬性信息表。
結構屬性信息表有5 張。其中:Prd_part,Prd_expl_part 和Inp_single_part_db 包含了所有板和骨材的相關屬性信息;而Inp_plate_att_db 和Prd_plate_att 則僅包含板的相關屬性信息。其內容分析的結果如表3 所示。
表Inp_single_part_db 中字段數量較多,一部分為板和骨材通用的字段,還有一部分是僅屬于其中一者的字段。其中:字段Area,Thick 為板特有的;而Length,Kse_oid 則為骨材特有的。例如,在板的記錄條中,字段Area,Thick 的值不為0,而Length 的值為0,同時Kse_oid 的值為空。反之,在骨材的記錄條中,字段Area,Thick 的值為0,而Length 和Kse_oid 的值不為0。

表2 基礎信息表的主要字段說明Tab.2 The description of main fields in datasheets of basic information

表3 屬性信息表的主要字段說明Tab.3 The description of main fields in datasheets of structure attributes
一般而言,板和骨材的命名會依據一定的規則自動生成,如板以“P***”命名,而骨材則以“L***”命名等,其是區分構建類型的最直觀的依據。但是,在某些特殊情況下,會出現全部以數字命名的結構件,造成無法區分結構的類型。因此,上述字段就成為了該數據表中區別記錄條所表示的結構類型的準確依據。
3)節點層次關系表。
表Bs_design_node 記錄了整個設計樹的層次關系,其字段及含義如表4 所示。

表4 表Bs_design_node 字段說明Tab.4 The description of fields in Bs_design_node
該表通過Oid 和Parent_node 兩個字段來組織所有模型的層次關系。如圖3 所示,“Oid=3001”表示的是Design tree(設計樹),其子節點有4 個,分別為Structure,Outfitting,Accommodation 和Structure outfitting。其中,Structure 下還有子節點Structural elements 等。據此,可以理清整個模型的層次關系。對于FORAN 系統來說,由于其基于特征的模型管理模式,還可依據模型的Block,Surface 和Zone 等屬性信息建立模型層次關系。
顯然,該表包括了結構、設備、舾裝、鐵舾件在內的所有模型的層次關系。而字段Model_oid 實際上表示的是結構模型的標識碼。因此,對于其他專業的模型該字段的值為空。
從前文對表內容的分析中,可以看出有些表類型相同,其字段有不同程度的重復。而進一步對其記錄條數進行分析,發現這些同類表的記錄條數也不相同。這說明其記錄的結構件的范圍和方式有差別。因此,對同類表差異性的分析就顯得尤為重要。

圖3 表Bs_design_node 的部分信息Fig.3 Part of Bs_design_node
對于Prd_part,Prd_expl_part 和Inp_single_part_db等3張表,其記錄的對象都是板和骨材。但是,Prd_part 和Prd_expl_part 不僅包含FHULL 模塊創建的板和骨材,也包含Structure outfitting(鐵舾件)模塊創建的板和骨材。而Inp_single_part_db則只包含前者。此外,對于在FHULL 中采用對稱方式創建的板或骨材,在Prd_part 中僅為1 條記錄,而其余2 張表則分開記錄。
對于表Inp_plate_att_db 和Prd_plate_att,都表示板的屬性信息,但前者記錄的是采用Internal structure 模式創建的板的相關數據,后者則記錄Shell and decks 模式下創建的板的相關數據。
由于用戶對數據需求的多樣性,單張數據表所含內容往往不能涵蓋所有需求,通常需要從多張數據表中提取信息。因此,表的關聯關系的分析是基于底層數據進行二次開發的關鍵。船體結構主要表之間的關聯關系如圖4 所示。
從圖中可以看出,屬性表、基礎表以及不同屬性表之間都是通過各種Oid 關聯在一起。例如,如果要找出表Inp_single_part 中某條記錄所對應骨材的截面類型,則可通過關聯關系Inp_single_part.kse_oid=Std_profile.oid 找到表Std_profile 中 相應的記錄條,讀取所需的截面信息。

圖4 船體結構主要表之間的關聯關系Fig.4 The relationship of main datasheets of hull structure
根據前文的分析,表Inp_single_part_db 僅包含FHULL 模塊所創建的結構件的屬性信息,并且屬性信息較多。因此,可將該表作為結構件材料屬性分析的主表,即從該表出發解析出每條記錄對應結構件的材料屬性。其分析的思路和方法如圖5 所示。

圖5 材料屬性分析方法Fig.5 The analysis method of material attributes
根據3.3 節表差異性分析的結果,選擇表Inp_single_part_db 的字段Kse_oid 作為判斷結構件類型的依據。首先,對該值進行判斷,即如果其值為空,則說明該記錄條表示的是板的數據;反之,則表示的是骨材的數據。然后,根據判斷的結果,分別分析骨材和板的材料屬性。
1)骨材材料屬性的分析。
首先,通過表Inp_single_part_db 和表Std_pro?file 之間的關聯關系,查找到Std_profile.materi?al_oid;再通過表Std_profile 和表Material之間的關聯關系,查找到Material.code,該字段的值即為材料屬性。
關聯關系:
Inp_single_part_db.kse_oid=Std_profile.oid
Std_profile.material_oid=Material.oid
2)板材料屬性的分析。
根據前文的分析結果,板因在FHULL 模塊中創建模式的不同,其Material_oid 分別存儲在表Prd_plate_att 和Inp_plate_att_db 中。因此,先要對Inp_single_part_db.part_type 的值進行判斷,其值為9,說明該板是在Shell and decks 模式下創建;反之,則說明板是在Internal structure 模式下創建。
(1)對于在Shell and decks 模式下創建的板,先通過表Inp_single_part_db 和表Prd_plate_att 之間的關聯關系查找到Prd_plate_att.material_oid,然后通過表Prd_plate_att 和表Material 之間的關聯關系查找到Material.code,獲取板的材料屬性。
其關聯關系為:
Inp_single_part_db.prd_part_oid=
Prd_plate_att.prd_part_oid
Prd_plate_att.material_oid=Material.oid。
(2)對于在Internal structure 模式下創建的板,先通過表 Inp_single_part_db 和 表Inp_plate_att_db 之間的關聯關系查找到Inp_plate_att_db.material_oid,然后通過表Inp_plate_att_db 和表Material 之間的關聯關系查找到Material.code,獲取板的材料屬性。
其關聯關系為:
Inp_single_part_db.prd_part_oid=
Inp_plate_att_db.inp_part_oid
Inp_plate_att_db.material_oid=Material.oid。
至此,便可分析出所有骨材和板的材料屬性。
根據對FORAN 系統FHULL 模塊船舶結構相關數據表的分析結果,參考材料屬性的分析方法,可以解析出結構模型所有重要的屬性信息。基于這些數據,可以進行結構重量重心、材料需求等的統計匯總,甚至可以通過結構的重心和空間位置統計出結構的重量分布。這些需求和用途是超出軟件本身功能之外的。
此外,在HULL 模塊中,結構件有時會出現異常錯誤,造成模型無法讀取,且無法從用戶界面進行錯誤處理。結合結構底層數據的分析結果,可以確定跟實體結構件密切相關的表,以及他們之間的關聯關系,基于此,可以直接從數據庫對發生異常錯誤的結構件進行處理。
因此,對結構底層數據的研究結果是基于結構數據進行二次開發以及對數據進行深度利用的基礎和前提。同時,對結構底層數據的研究思路和方法可為其他專業模塊底層數據的研究提供有益參考。
[1]蘇文榮,陳錦晨,鄭斌華.三維CAD 技術在船舶設計中的應用[J].上海船舶運輸科學研究所學報,2007,30(2):144-149.SU Wenrong,CHEN Jinchen,ZHENG Binhua. Appli?cation of 3D CAD technology in ship design[J]. Jour?nal of SSSRI,2007,30(2):144-149.
[2]倪海參,汪學鋒.從CATIA 到TRIBON 的板架結構數據轉換方法[J].中國艦船研究,2012,7(5):66-70.NI Haishen,WANG Xuefeng. Data transformation from CATIA to TRIBON for naval ships[J]. Chinese Journal of Ship Research,2012,7(5):66-70.
[3]賈琪琳. TRIBON 的船體分段數據分析[J]. 船舶工程,2010,32(增刊1):67-69.JIA Qilin. Data analysis of ship segments by TRIBON[J].Ship Engineering,2010,32(Supp 1):67-69.
[4]苗贇,汪學鋒. 船舶主流CAD 軟件間的數據交換研究[J].中國造船,2011,52(3):190-197.MIAO Yun,WANG Xuefeng. Research on data trans?formation between principal ship CAD softwares[J].Shipbuilding of China,2011,52(3):190-197.
[5]張凱,謝承福,涂躍紅,等. FORAN 軟件在船舶總體設計中的應用[J]. 中國艦船研究,2009,4(4):76-80.ZHANG Kai,XIE Chengfu,TU Yuehong,et al. Appli?cation of Foran to the general design for ships[J]. Chi?nese Journal of Ship Research,2009,4(4):76-80.
[6]林銳,盧永進,房玉吉,等. Foran 軟件在輪機設計中的應用[J].機械,2011,38(8):27-29.LIN Rui,LU Yongjin,FANG Yuji,et al. Application of the Foran software on the engineer design[J]. Machin?ery,2011,38(8):27-29.
[7]盧永進,華志剛. 基于FORAN 的船舶管路三維設計研究[J].船海工程,2012,41(5):77-80.LU Yongjin,HUA Zhigang. Study on the 3D ship pip?ing design based on FORAN[J]. Ship & Ocean Engi?neering,2012,41(5):77-80.
[8]陳寧.FORAN 在船舶數字化設計全流程中應用技術研究[J]. 造船技術,2009(4):34-38.
[9]李軍,李櫻,羅白璐.基于FORAN 的結構模型管理方法[J].船舶標準化工程師,2012(1):28-31.