宋一淇,王佩瑜,常守明,符安邦
1 中國艦船研究設(shè)計中心,湖北武漢430064
2 武昌船舶重工有限責(zé)任公司,湖北武漢430060
三維設(shè)計作為提高船舶設(shè)計制造效率和質(zhì)量的有效手段,以及作為數(shù)字樣船及虛擬仿真技術(shù)的基礎(chǔ),正在被越來越廣泛地應(yīng)用于船舶的設(shè)計制造過程中。目前,國內(nèi)許多設(shè)計院所、船廠都已在設(shè)計制造過程中應(yīng)用了三維CAD/CAM 系統(tǒng),如國外引進(jìn)的CADDS5,TRIBON,F(xiàn)ORAN,CATIA,以及國產(chǎn)的東欣、SB3DS 等[1]。
隨著三維CAD/CAM 系統(tǒng)應(yīng)用的推廣和深入,對其數(shù)據(jù)利用的需求逐漸增多,利用的形式越來越多樣化,而其系統(tǒng)本身的通用化功能往往難以滿足用戶對三維數(shù)據(jù)多樣化及個性化利用的要求。同時,由于對底層數(shù)據(jù)結(jié)構(gòu)的研究是進(jìn)行二次開發(fā)的前提和基礎(chǔ),使得對三維CAD/CAM 系統(tǒng)底層數(shù)據(jù)結(jié)構(gòu)的研究逐漸成為研究熱點(diǎn),而對船體結(jié)構(gòu)底層數(shù)據(jù)的研究更是重中之重[2-4]。
FORAN 系統(tǒng)采用與Oracle 數(shù)據(jù)庫高度集成的方式,使用Oracle 數(shù)據(jù)庫全程管理其船舶三維模型。其數(shù)據(jù)表數(shù)量眾多,結(jié)構(gòu)復(fù)雜。但其Oracle數(shù)據(jù)庫完全向用戶開放,為對其底層數(shù)據(jù)結(jié)構(gòu)的研究和開發(fā)利用提供了可能。
FORAN 系統(tǒng)是由西班牙SENER 集團(tuán)開發(fā),專門用于船舶與海洋工程設(shè)計制造的三維軟件系統(tǒng)。該系統(tǒng)在全球應(yīng)用廣泛,自2005年進(jìn)入中國市場后,也得到了成功的應(yīng)用[5-7]。
FORAN 系統(tǒng)涵蓋了總體、船體、舾裝、電氣、艙室布置等各專業(yè)的三維設(shè)計功能,可用于船舶的概念設(shè)計、初步設(shè)計、詳細(xì)設(shè)計、生產(chǎn)設(shè)計等各個設(shè)計環(huán)節(jié)[8]。
該系統(tǒng)各專業(yè)之間的設(shè)計相對獨(dú)立,每個專業(yè)均由多個模塊構(gòu)成,功能全面,且隨著版本的升級,其模塊功能不斷完善,模塊數(shù)量也相應(yīng)增加。其中,船體結(jié)構(gòu)專業(yè)主要由6 個模塊組成(V60R3.0 版),其關(guān)系如圖1 所示。
圖1 船體專業(yè)各模塊之間的關(guān)系Fig.1 The relationship between hull subsystem modules
從圖中可以看出,由FHULL 模塊創(chuàng)建的船體結(jié)構(gòu)三維模型直接存儲至Oracle 數(shù)據(jù)庫中,作為其他船體專業(yè)模塊的數(shù)據(jù)來源。
本文即針對FORAN 系統(tǒng)Oracle 數(shù)據(jù)庫中由FHULL 模塊創(chuàng)建的三維模型的數(shù)據(jù)結(jié)構(gòu)展開研究,為三維數(shù)據(jù)的深度利用提供基礎(chǔ)及條件。
船體結(jié)構(gòu)三維建模主要在FHULL 模塊中進(jìn)行。而其基礎(chǔ)庫的創(chuàng)建則是在NORM 模塊中完成,如材料庫、型材庫、板材庫、肘板庫、各類孔庫、端部削斜庫、貫穿切口及補(bǔ)板庫、剖口庫等。此外,F(xiàn)HULL 模塊中Block 的定義也是在NORM 模塊中進(jìn)行。
FHULL 模塊分為Shell and decks(曲面模式)和Internal structure(平面模式)兩種建模方式[9]。其中:Shell and decks 用于外板、甲板等曲面形式的板架結(jié)構(gòu)的建模;Internal structure 用于船體所有平直形式板架結(jié)構(gòu)的建模。FHULL 模塊的建模流程如圖2 所示。
圖2 FHULL 模塊建模流程Fig.2 Modeling process of FHULL
從圖中可以看出,F(xiàn)HULL 模塊建模的主要內(nèi)容為各類板和骨材等實(shí)體模型,以及表示結(jié)構(gòu)層次關(guān)系的非實(shí)體模型,如Section(承載結(jié)構(gòu)建模的平面)、Strutural element(結(jié)構(gòu)平直分段)、Zone(船體曲面分段)等。此外,Block(船體立體分段)和Surface(船體曲面)也對表征結(jié)構(gòu)層次關(guān)系至關(guān)重要,但前者是在NORM 模塊中進(jìn)行定義,后者則是在總體型線中進(jìn)行定義。
不同于基于結(jié)構(gòu)樹式的模型管理模式,F(xiàn)ORAN系統(tǒng)采用的是基于特征的模型管理模式,其模型的層次關(guān)系反映在模型的屬性中,即將模型所屬的Block,Section,Structural element,Surface 和Zone 等作為屬性附加給模型。這些表征結(jié)構(gòu)層次關(guān)系的屬性與表征模型本身特征的屬性,如名稱、材料、規(guī)格、位置等,一起構(gòu)成了結(jié)構(gòu)底層數(shù)據(jù)。
因此,對結(jié)構(gòu)底層數(shù)據(jù)的研究實(shí)質(zhì)上是對結(jié)構(gòu)模型各種屬性在Oracle 數(shù)據(jù)庫中存儲方式及其相互關(guān)系的研究。
FORAN 系統(tǒng)Oracle 數(shù)據(jù)庫中與結(jié)構(gòu)相關(guān)的數(shù)據(jù)表多達(dá)數(shù)十張,其中與FHULL 相關(guān)的也有二十余張。這些表主要可分為基礎(chǔ)信息表和各類結(jié)構(gòu)件的屬性信息表兩類。其中:基礎(chǔ)信息表包含了建模所需的標(biāo)準(zhǔn)板/型材、開孔、材料以及Block等通用信息,這些信息通過表之間的關(guān)聯(lián)關(guān)系供其他數(shù)據(jù)表引用;各類結(jié)構(gòu)件的屬性信息表既包含模型的名稱、幾何信息、重量重心等直接反映模型特征的屬性信息,也包含材料和Block 的Oid(對象標(biāo)識)等與基礎(chǔ)信息表相關(guān)聯(lián)的信息。此外,還有反映結(jié)構(gòu)節(jié)點(diǎn)層次關(guān)系的數(shù)據(jù)表。
對于上述數(shù)據(jù)表,其中基礎(chǔ)信息表多由NORM 模塊進(jìn)行定義,但其是FHULL 建模的基礎(chǔ),是分析結(jié)構(gòu)數(shù)據(jù)關(guān)系不可或缺的部分。而各類結(jié)構(gòu)件的屬性信息表中,受設(shè)計深度的影響,部分表可能為空。而且,其中如表示結(jié)構(gòu)件幾何形狀及其與輔助線之間關(guān)系的數(shù)據(jù)表等與數(shù)據(jù)的深度利用關(guān)系不大。此外,各類結(jié)構(gòu)件的屬性信息表中的屬性信息還有不同程度的重復(fù)。因此,研究結(jié)構(gòu)底層數(shù)據(jù)結(jié)構(gòu)的關(guān)鍵就在于對與FHULL模塊所建模型密切相關(guān)的表進(jìn)行分析。
通過使用FHULL 模塊的兩種模式進(jìn)行板和骨材的相關(guān)建模操作,同時結(jié)合SQL 語句監(jiān)測數(shù)據(jù)庫的變化情況,進(jìn)而分析表的變化與模型的關(guān)聯(lián)關(guān)系。經(jīng)過對表的內(nèi)容進(jìn)行初步分析,確定了其中與結(jié)構(gòu)層次關(guān)系及結(jié)構(gòu)特征屬性密切相關(guān)的表,如表1 所示。
表1 船體結(jié)構(gòu)主要相關(guān)表Tab.1 Main datasheets related to hull structure
對數(shù)據(jù)表內(nèi)容的分析是基于底層數(shù)據(jù)進(jìn)行二次開發(fā)的基礎(chǔ)。其分析的內(nèi)容包含表中字段本身的意義,以及字段的值所代表的具體含義。
通常,大多數(shù)字段的名稱就直接反映了字段所代表的含義,如字段Density 即代表密度。而對于無法從名稱中分析其含義的字段,則要結(jié)合對字段值的具體分析確定其含義。
對于字段的值,根據(jù)其自身體現(xiàn)數(shù)據(jù)含義的直接程度,主要可分為3 類:第1 類是可以直接反映數(shù)據(jù)含義的值,如描述信息、名稱等,這類值有的是設(shè)計者的輸入信息,有的是根據(jù)設(shè)計者設(shè)定的規(guī)則創(chuàng)建或是根據(jù)輸入數(shù)據(jù)自動計算所得,數(shù)據(jù)具有實(shí)際的意義,可直接明了地體現(xiàn)出值的含義;第2 類是與其他表相關(guān)聯(lián)的值,如字段Block_oid,Material_oid 的值等,這類值多是由數(shù)據(jù)表自動生成的各種Oid,數(shù)據(jù)本身并無實(shí)際含義,需要通過該值從其關(guān)聯(lián)的表中解讀出其含義;第3 類是間接反映結(jié)構(gòu)特征的值,如字段Part_type,Symmetry 的值等,這類值由系統(tǒng)定義,設(shè)計者不可更改,一般為一組特定值,并與用戶建模的某些操作相對應(yīng)。例如,用戶在曲面模式下創(chuàng)建一塊板,系統(tǒng)就會將其相應(yīng)表中字段Part_type 的值設(shè)為9。這類字段較少,但卻是字段值分析的難點(diǎn),也是分析的重點(diǎn)。
本節(jié)將通過建模操作對數(shù)據(jù)表的字段及值進(jìn)行正向分析,同時結(jié)合使用具體的字段值逆向驗(yàn)證相關(guān)模型等方法,得到表1 中數(shù)據(jù)表內(nèi)容的詳細(xì)分析結(jié)果。
1)基礎(chǔ)信息表。
基礎(chǔ)信息表有3 張,其內(nèi)容分析的結(jié)果如表2所示。其中,表Std_profile 為型材庫對應(yīng)的數(shù)據(jù)表。除表2 中所述的截面和材料相關(guān)字段外,還有表示庫存的字段,可供每種型材定義最多4 種不同長度規(guī)格的庫存相關(guān)信息。表Block,Material分別為定義立體分段和鋼材材料所對應(yīng)的數(shù)據(jù)表。
2)結(jié)構(gòu)屬性信息表。
結(jié)構(gòu)屬性信息表有5 張。其中:Prd_part,Prd_expl_part 和Inp_single_part_db 包含了所有板和骨材的相關(guān)屬性信息;而Inp_plate_att_db 和Prd_plate_att 則僅包含板的相關(guān)屬性信息。其內(nèi)容分析的結(jié)果如表3 所示。
表Inp_single_part_db 中字段數(shù)量較多,一部分為板和骨材通用的字段,還有一部分是僅屬于其中一者的字段。其中:字段Area,Thick 為板特有的;而Length,Kse_oid 則為骨材特有的。例如,在板的記錄條中,字段Area,Thick 的值不為0,而Length 的值為0,同時Kse_oid 的值為空。反之,在骨材的記錄條中,字段Area,Thick 的值為0,而Length 和Kse_oid 的值不為0。
表2 基礎(chǔ)信息表的主要字段說明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
一般而言,板和骨材的命名會依據(jù)一定的規(guī)則自動生成,如板以“P***”命名,而骨材則以“L***”命名等,其是區(qū)分構(gòu)建類型的最直觀的依據(jù)。但是,在某些特殊情況下,會出現(xiàn)全部以數(shù)字命名的結(jié)構(gòu)件,造成無法區(qū)分結(jié)構(gòu)的類型。因此,上述字段就成為了該數(shù)據(jù)表中區(qū)別記錄條所表示的結(jié)構(gòu)類型的準(zhǔn)確依據(jù)。
3)節(jié)點(diǎn)層次關(guān)系表。
表Bs_design_node 記錄了整個設(shè)計樹的層次關(guān)系,其字段及含義如表4 所示。
表4 表Bs_design_node 字段說明Tab.4 The description of fields in Bs_design_node
該表通過Oid 和Parent_node 兩個字段來組織所有模型的層次關(guān)系。如圖3 所示,“Oid=3001”表示的是Design tree(設(shè)計樹),其子節(jié)點(diǎn)有4 個,分別為Structure,Outfitting,Accommodation 和Structure outfitting。其中,Structure 下還有子節(jié)點(diǎn)Structural elements 等。據(jù)此,可以理清整個模型的層次關(guān)系。對于FORAN 系統(tǒng)來說,由于其基于特征的模型管理模式,還可依據(jù)模型的Block,Surface 和Zone 等屬性信息建立模型層次關(guān)系。
顯然,該表包括了結(jié)構(gòu)、設(shè)備、舾裝、鐵舾件在內(nèi)的所有模型的層次關(guān)系。而字段Model_oid 實(shí)際上表示的是結(jié)構(gòu)模型的標(biāo)識碼。因此,對于其他專業(yè)的模型該字段的值為空。
從前文對表內(nèi)容的分析中,可以看出有些表類型相同,其字段有不同程度的重復(fù)。而進(jìn)一步對其記錄條數(shù)進(jìn)行分析,發(fā)現(xiàn)這些同類表的記錄條數(shù)也不相同。這說明其記錄的結(jié)構(gòu)件的范圍和方式有差別。因此,對同類表差異性的分析就顯得尤為重要。
圖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 不僅包含F(xiàn)HULL 模塊創(chuàng)建的板和骨材,也包含Structure outfitting(鐵舾件)模塊創(chuàng)建的板和骨材。而Inp_single_part_db則只包含前者。此外,對于在FHULL 中采用對稱方式創(chuàng)建的板或骨材,在Prd_part 中僅為1 條記錄,而其余2 張表則分開記錄。
對于表Inp_plate_att_db 和Prd_plate_att,都表示板的屬性信息,但前者記錄的是采用Internal structure 模式創(chuàng)建的板的相關(guān)數(shù)據(jù),后者則記錄Shell and decks 模式下創(chuàng)建的板的相關(guān)數(shù)據(jù)。
由于用戶對數(shù)據(jù)需求的多樣性,單張數(shù)據(jù)表所含內(nèi)容往往不能涵蓋所有需求,通常需要從多張數(shù)據(jù)表中提取信息。因此,表的關(guān)聯(lián)關(guān)系的分析是基于底層數(shù)據(jù)進(jìn)行二次開發(fā)的關(guān)鍵。船體結(jié)構(gòu)主要表之間的關(guān)聯(lián)關(guān)系如圖4 所示。
從圖中可以看出,屬性表、基礎(chǔ)表以及不同屬性表之間都是通過各種Oid 關(guān)聯(lián)在一起。例如,如果要找出表Inp_single_part 中某條記錄所對應(yīng)骨材的截面類型,則可通過關(guān)聯(lián)關(guān)系Inp_single_part.kse_oid=Std_profile.oid 找到表Std_profile 中 相應(yīng)的記錄條,讀取所需的截面信息。
圖4 船體結(jié)構(gòu)主要表之間的關(guān)聯(lián)關(guān)系Fig.4 The relationship of main datasheets of hull structure
根據(jù)前文的分析,表Inp_single_part_db 僅包含F(xiàn)HULL 模塊所創(chuàng)建的結(jié)構(gòu)件的屬性信息,并且屬性信息較多。因此,可將該表作為結(jié)構(gòu)件材料屬性分析的主表,即從該表出發(fā)解析出每條記錄對應(yīng)結(jié)構(gòu)件的材料屬性。其分析的思路和方法如圖5 所示。
圖5 材料屬性分析方法Fig.5 The analysis method of material attributes
根據(jù)3.3 節(jié)表差異性分析的結(jié)果,選擇表Inp_single_part_db 的字段Kse_oid 作為判斷結(jié)構(gòu)件類型的依據(jù)。首先,對該值進(jìn)行判斷,即如果其值為空,則說明該記錄條表示的是板的數(shù)據(jù);反之,則表示的是骨材的數(shù)據(jù)。然后,根據(jù)判斷的結(jié)果,分別分析骨材和板的材料屬性。
1)骨材材料屬性的分析。
首先,通過表Inp_single_part_db 和表Std_pro?file 之間的關(guān)聯(lián)關(guān)系,查找到Std_profile.materi?al_oid;再通過表Std_profile 和表Material之間的關(guān)聯(lián)關(guān)系,查找到Material.code,該字段的值即為材料屬性。
關(guān)聯(lián)關(guān)系:
Inp_single_part_db.kse_oid=Std_profile.oid
Std_profile.material_oid=Material.oid
2)板材料屬性的分析。
根據(jù)前文的分析結(jié)果,板因在FHULL 模塊中創(chuàng)建模式的不同,其Material_oid 分別存儲在表Prd_plate_att 和Inp_plate_att_db 中。因此,先要對Inp_single_part_db.part_type 的值進(jìn)行判斷,其值為9,說明該板是在Shell and decks 模式下創(chuàng)建;反之,則說明板是在Internal structure 模式下創(chuàng)建。
(1)對于在Shell and decks 模式下創(chuàng)建的板,先通過表Inp_single_part_db 和表Prd_plate_att 之間的關(guān)聯(lián)關(guān)系查找到Prd_plate_att.material_oid,然后通過表Prd_plate_att 和表Material 之間的關(guān)聯(lián)關(guān)系查找到Material.code,獲取板的材料屬性。
其關(guān)聯(lián)關(guān)系為:
Inp_single_part_db.prd_part_oid=
Prd_plate_att.prd_part_oid
Prd_plate_att.material_oid=Material.oid。
(2)對于在Internal structure 模式下創(chuàng)建的板,先通過表 Inp_single_part_db 和 表Inp_plate_att_db 之間的關(guān)聯(lián)關(guān)系查找到Inp_plate_att_db.material_oid,然后通過表Inp_plate_att_db 和表Material 之間的關(guān)聯(lián)關(guān)系查找到Material.code,獲取板的材料屬性。
其關(guān)聯(lián)關(guān)系為:
Inp_single_part_db.prd_part_oid=
Inp_plate_att_db.inp_part_oid
Inp_plate_att_db.material_oid=Material.oid。
至此,便可分析出所有骨材和板的材料屬性。
根據(jù)對FORAN 系統(tǒng)FHULL 模塊船舶結(jié)構(gòu)相關(guān)數(shù)據(jù)表的分析結(jié)果,參考材料屬性的分析方法,可以解析出結(jié)構(gòu)模型所有重要的屬性信息?;谶@些數(shù)據(jù),可以進(jìn)行結(jié)構(gòu)重量重心、材料需求等的統(tǒng)計匯總,甚至可以通過結(jié)構(gòu)的重心和空間位置統(tǒng)計出結(jié)構(gòu)的重量分布。這些需求和用途是超出軟件本身功能之外的。
此外,在HULL 模塊中,結(jié)構(gòu)件有時會出現(xiàn)異常錯誤,造成模型無法讀取,且無法從用戶界面進(jìn)行錯誤處理。結(jié)合結(jié)構(gòu)底層數(shù)據(jù)的分析結(jié)果,可以確定跟實(shí)體結(jié)構(gòu)件密切相關(guān)的表,以及他們之間的關(guān)聯(lián)關(guān)系,基于此,可以直接從數(shù)據(jù)庫對發(fā)生異常錯誤的結(jié)構(gòu)件進(jìn)行處理。
因此,對結(jié)構(gòu)底層數(shù)據(jù)的研究結(jié)果是基于結(jié)構(gòu)數(shù)據(jù)進(jìn)行二次開發(fā)以及對數(shù)據(jù)進(jìn)行深度利用的基礎(chǔ)和前提。同時,對結(jié)構(gòu)底層數(shù)據(jù)的研究思路和方法可為其他專業(yè)模塊底層數(shù)據(jù)的研究提供有益參考。
[1]蘇文榮,陳錦晨,鄭斌華.三維CAD 技術(shù)在船舶設(shè)計中的應(yīng)用[J].上海船舶運(yùn)輸科學(xué)研究所學(xué)報,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]倪海參,汪學(xué)鋒.從CATIA 到TRIBON 的板架結(jié)構(gòu)數(shù)據(jù)轉(zhuǎn)換方法[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 的船體分段數(shù)據(jù)分析[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]苗贇,汪學(xué)鋒. 船舶主流CAD 軟件間的數(shù)據(jù)交換研究[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 軟件在船舶總體設(shè)計中的應(yīng)用[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]林銳,盧永進(jìn),房玉吉,等. Foran 軟件在輪機(jī)設(shè)計中的應(yīng)用[J].機(jī)械,2011,38(8):27-29.LIN Rui,LU Yongjin,F(xiàn)ANG Yuji,et al. Application of the Foran software on the engineer design[J]. Machin?ery,2011,38(8):27-29.
[7]盧永進(jìn),華志剛. 基于FORAN 的船舶管路三維設(shè)計研究[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 在船舶數(shù)字化設(shè)計全流程中應(yīng)用技術(shù)研究[J]. 造船技術(shù),2009(4):34-38.
[9]李軍,李櫻,羅白璐.基于FORAN 的結(jié)構(gòu)模型管理方法[J].船舶標(biāo)準(zhǔn)化工程師,2012(1):28-31.