肖 赟, 田榴敏, 張士超, 王德禹
(1.上海交通大學船舶海洋與建筑工程學院,上海200240;2.上海外高橋造船有限公司設計一部IT技術室,上海200137)
大型郵輪稱為世界造船“皇冠上的明珠”,設計建造國產(chǎn)大型郵輪已成為造船強國的重要標志之一。國內(nèi)首艘大型郵輪設計建造采用Intergraph Smart 3D 三維設計軟件,Smart 3D(以下簡稱S3D)是鷹圖PP&M的新一代三維工程設計解決方案,在船舶設計建造過程中覆蓋各個領域,提供了基礎的建模、出圖、生產(chǎn)信息輸出等功能,且有著先進的底層技術,支持用戶對其功能擴充,是一套全面的智能解決方案。郵輪的3D設計的獨特性和船廠自身設計生產(chǎn)條件對S3D 設計軟件產(chǎn)生一系列的特定需求,這些需求要通過二次開發(fā)予以實現(xiàn),郵輪的開孔管理系統(tǒng)便是其一。
船舶生產(chǎn)設計過程中,船體結構舾裝開孔是船體專業(yè)與舾裝專業(yè)協(xié)同設計的重要組成部分,在協(xié)調(diào)開孔過程中各專業(yè)會形成大量的數(shù)據(jù),而這些數(shù)據(jù)掌握在各專業(yè)手中,并未在S3D 設計軟件中統(tǒng)一管理,因此形成信息孤島,從而無法保證設計數(shù)據(jù)的準確性與及時性,給協(xié)同設計帶來滯后性。船體結構開孔是船舶設計建造過程中的基本操作,但對船舶的建造效率有著重要影響,結構預開孔率的提升,減少現(xiàn)場手工開孔,且將工序前移,減少船舶預舾裝時遇到的障礙。面對國內(nèi)首艘大型郵輪的設計建造,由于大型郵輪結構和系統(tǒng)的復雜性,功能的特殊性,其開孔量較于一般船舶大大提升,開孔數(shù)據(jù)的管理顯得尤為重要。
本文通過對S3D 設計系統(tǒng)二次開發(fā)能力以及船舶跨專業(yè)協(xié)同設計的分析,研發(fā)出基于S3D 船舶設計軟件開孔管理系統(tǒng),針對性強化3D 設計軟件在郵輪設計方面的功能和設計效率,以數(shù)字化、信息化為導向,滿足大型郵輪數(shù)字化設計的需要,提升大型郵輪的3D 生產(chǎn)設計技術水平,形成大型郵輪的自主建造和實現(xiàn)我國大型郵輪發(fā)展的戰(zhàn)略目標提供保障。
S3D 軟件系統(tǒng)二次開發(fā)功能系統(tǒng)也是基于Microsoft.NET技術構建,利用.NET FrameWork 劃分成兩層結構,客戶層和中間層,如圖1 所示。
圖1 S3D系統(tǒng).NET FrameWork 開發(fā)框架圖
客戶層即表現(xiàn)層,主要功能為顯示數(shù)據(jù)和接受用戶傳輸?shù)拿?,在S3D系統(tǒng)中表現(xiàn)為菜單、工具箱、可視化工具以及對話框等。用戶可以熟練地在GUI 中對諸如SelectSet服務、圖像窗口以及包含定位器,標注工具,視角操作等在內(nèi)的軟件支持構件進行交互操作?;赟3D的開孔管理系統(tǒng)為了實現(xiàn)以上操作,需要在客戶層進行定制開發(fā),即系統(tǒng)必須在S3D 運行環(huán)境下工作。
中間層,即邏輯層,在該層內(nèi)命令可以直接對模型對象進行操作,例如,艙壁、甲板、管子、電纜、主機等,這些對象均被劃分到了中間層。對象間存在相互聯(lián)系,關系定義了模型對象間的交互方式。S3D 關系管理系統(tǒng)(Relationship Management System)是一項專利技術,其作用是當交互對象中的一個發(fā)生變化時,關系會做出相應的反應確保相應的完整性以及數(shù)據(jù)的連續(xù)性?;赟3D的開孔管理系統(tǒng)需分析利用中間層提供的API接口,對交互對象進行邏輯處理,完成開孔管理工作。
數(shù)據(jù)訪問層,S3D 以SQL Server 和Oracle 大型關系型數(shù)據(jù)庫為數(shù)據(jù)平臺,為客戶層與數(shù)據(jù)層提供數(shù)據(jù)支持服務,中間層可通過調(diào)用該層接口對數(shù)據(jù)進行增刪查改的操作。
由此分析,在.NET環(huán)境下利用3 層架構構,將各層功能分離開,分別設計,互相解耦,,使設計更加便捷,并且易于分工合作[1-2]。
S3D二次開發(fā)框架由于采用.NET FrameWork 框架平臺,.NET 開發(fā)語言同樣是應用最廣泛的應用程序開發(fā)語言(如C#、VB.NET等)。.NET FrameWork平臺,提供了大量的.NET 開發(fā)類庫接口,這就為使用.NET程序開發(fā)語言進行S3D 二次開發(fā)提供了不少便利。利用其提供的接口基類和實例化工具,用戶在Visual Studio.NET 開發(fā)環(huán)境按照不同的用戶需求,可以開發(fā)功能強大的應用程序并集成到系統(tǒng)中。
S3D中基于.NET的API包括兩大類(見圖2),第1 類處于客戶層,所涉及到的dll 文件主要有:CommonClient DLL; SP3FrmDeHelper.dll;CustomFormDefinition Controls.dll.。第2 類處于中間層,所涉到的主要文件有:CommonMiddle.DLL;SystemsMiddle.DLL; Ref DataMiddle.DLL;CommonRouteMiddle.DLL; Grids Middle.DLL;SpaceMiddle.DLL; SupportMiddle.DLL;SmartPlantStructureMidde.DLL。
這些API的主要作用:
(1)允許用戶使用VB.net、C?;蛉魏?net語言編程,編寫交互式自動化環(huán)境和非交互式自動化定制,即文獻[3]中提到的Command 開發(fā)與Standalone 開發(fā),Command開發(fā)面向客戶層開發(fā),嵌入S3D,參與用戶交互。Standalone 開發(fā)面向中間層開發(fā),獨立于S3D運行環(huán)境外。
圖2 S3D基于.NET的API接口
(2)允許用戶可以自定義規(guī)則,如命名規(guī)則/符號/IFC規(guī)則等,文獻[4-5]中通過優(yōu)化IFC 規(guī)則,減少不必要的碰撞檢查,減輕主程序加載負擔。
上文指出基于S3D 的開孔管理系統(tǒng)需在客戶層與中間層中做開發(fā),就確定了其開發(fā)方式為Command。通過對S3D 設計系統(tǒng)二次開發(fā)能力的分析,可知S3D 設計系統(tǒng)的二次開發(fā)可借助其開發(fā)框架,利用.NET開發(fā)語言(C#、VB),開發(fā)出其API 支持范圍內(nèi)的Command程序。
船舶生產(chǎn)設計是一項復雜且涉及多個領域的綜合性工作,其中包括了船體、輪機、電氣等專業(yè)設計,且各專業(yè)又包括設計、校隊、審核等不同的設計任務。各專業(yè)設計任務既是相互獨立,又是相互依賴,因此在設計過程中需加強各專業(yè)之間的協(xié)作,解決沖突,以縮短產(chǎn)品的設計周期,提高設計質(zhì)量。
(1)船舶跨專業(yè)協(xié)同設計定義。船舶跨專業(yè)協(xié)同設計是指不同專業(yè)、不同身份的技術人員利用計算機在同一個項目內(nèi),各自負責相應的設計任務,且設計任務處在并行交互的狀態(tài)下進行,最終取得理想的產(chǎn)品方案的設計方法[6-7]。
(2)船舶跨專業(yè)協(xié)同設計關鍵點。根據(jù)船舶跨專業(yè)協(xié)同設計的定義,可以得知其包含4 個關鍵元素,即組織、人員、任務流程和最終方案。以這4 個關鍵元素為出發(fā)點,需解決以下關鍵點:① 人員與組織管理。船舶設計部門包含多個船體、輪機、電氣等多個專業(yè)科室,而專業(yè)科室又細分為多個專業(yè)小組。將不同專業(yè)、不同身份的人員組織起來,賦予相應的角色與權限統(tǒng)一管理。②設計流程管理。不同專業(yè)有各自的設計、校隊、審核流程,分析各專業(yè)流程,形成滿足各專業(yè)協(xié)同設計的流程,將其流程固化。各專業(yè)人員按照賦予的角色與權限進行任務操作,將任務推進,直至任務結束。③數(shù)據(jù)管理。協(xié)同設計過程中必會產(chǎn)生大量的數(shù)據(jù),其中包括設計新建數(shù)據(jù)與設計變更數(shù)據(jù),將數(shù)據(jù)及時歸檔,從而便于數(shù)據(jù)的保管與設計的可追溯性。
船體專業(yè)與舾裝專業(yè)的開孔協(xié)同是一個不斷進行信息互換的過程,舾裝專業(yè)向船體專業(yè)提供開孔申請單,船體根據(jù)規(guī)范對船體結構預開孔,同時將不滿足規(guī)范要求或不合理的開孔請求反饋給舾裝專業(yè),舾裝專業(yè)對開孔信息進行修改更新后,重新提交船體專業(yè)審核。這是不斷循環(huán)的過程,直至形成最終方案。文獻[8]中分析了AM軟件的開孔管理流程,文獻[9]中分析了基于國產(chǎn)自主軟件SPD 船舶設計和建造系統(tǒng)開發(fā)的開孔管理,參考不同設計軟件的設計思路,基于S3D的開孔管理系統(tǒng)以開孔申請單貫穿整個流程并將此流程固化到軟件中,形成基于S3D 的開孔管理系統(tǒng)的運轉邏輯,結果如圖3 所示。
圖3 開孔管理系統(tǒng)的運轉邏輯圖
根據(jù)船舶跨專業(yè)開孔協(xié)同流程分析的結果,需建立供船舶各專業(yè)使用的開孔專用數(shù)據(jù)庫,用來儲存開孔中間過程信息,信息主要包括開孔協(xié)同人員信息和開孔協(xié)同管理信息兩大類。開孔協(xié)同人員信息包括id、專業(yè)、角色等標識其身份的信息。開孔協(xié)同管理信息包括開孔聯(lián)系單標識、開孔位置標識、開孔聯(lián)系單狀態(tài),開孔狀態(tài)及各類日期信息等。根據(jù)數(shù)據(jù)庫的設計范式[11],在S3D采用的Microsoft SQL Server關系型數(shù)據(jù)庫中建立開孔專用數(shù)據(jù)庫,如圖4 所示。
為了規(guī)范開孔流程,確保開孔數(shù)據(jù)準確性與及時性,實現(xiàn)各專業(yè)信息共享,制定開孔協(xié)同處理規(guī)則:
圖4 開孔協(xié)同數(shù)據(jù)庫ER圖
(1)用戶登錄后,根據(jù)賬號信息檢測賬號類型,進行相關的業(yè)務流程,以滿足不同專業(yè)的業(yè)務,防止越權操作引起的設計失誤。如果是舾裝人員登錄,可進行創(chuàng)建開孔聯(lián)系單、待辦開孔聯(lián)系單和打開開孔聯(lián)系單;而船體專業(yè)可進行接收開孔聯(lián)系單、待辦開孔聯(lián)系單和打開開孔聯(lián)系單;打開的開孔聯(lián)系單只能是只讀狀態(tài),不允許修改。
(2)開孔聯(lián)系單的流程狀態(tài)包括未提交、已提交、設計審核、舾裝審核、船體審核、完結6 種狀態(tài),此流程串行進行。
(3)開孔聯(lián)系單的生命周期包括Working、InReview、Reject、Approval、done 狀態(tài),其中只有是Working狀態(tài)時,3D模型對象才能夠被修改。
(4)船體專業(yè)針對開孔對象只有兩種操作:開孔與補孔。
文獻[3]中分析了S3D.NET 提供的Business Object基本類,其包括了Plate、Pipeline、Profile、Line3D等S3D常見的船舶設計對象,并提供相應的訪問和修改對象的方法,應用程序可通過繼承該類擴展模型對象和開發(fā)接口。
舾裝專業(yè)提出的開孔請求需要在3D 模型中反映出來,可通過在S3D 中打開HoleManagement 模塊,調(diào)出開孔范圍內(nèi)的船舶3D 模型,點擊需要開孔的船體模型及穿過船體構件的舾裝模型,經(jīng)過布爾運算生成Hole Trace 預開孔線對象,Hole Trace 對象繼承于BusinessObject,不僅包含開孔的必要的幾何信息,而且還包含了開孔的拓撲結構和OID 信息,OID 是模型對象的唯一標識。以Hole Trace 對象為導向,通過S3D提供的Repository Browser可以查看Hole Trace對象的現(xiàn)有關系及實現(xiàn)接口,如圖5 所示。通過這些關系開發(fā)接口,將Hole Trace 對象與開孔申請單關聯(lián),并將Hole Trace對象和拓補模型OID信息記錄到開孔管理系統(tǒng)中,來實現(xiàn)開孔信息流的記錄。當發(fā)生設計新增與設計變更時,根據(jù)記錄的信息可以幫助用戶快速定位開孔位置,調(diào)出相應模型審核,進行開孔/補孔操作。Hole Trace 在船體構件上開孔,會在船體構件對象節(jié)點下產(chǎn)生Cut 對象,同理再利用Repository Browser 查看Hole Trace 對象的關系,根據(jù)當前Hole Trace 是否關聯(lián)到Cut對象來區(qū)分已開孔和未開孔。
圖5 HoleTrace對象關系圖
基于以上的研究內(nèi)容,研發(fā)出基于S3D 船舶設計軟件開孔管理系統(tǒng),并于郵船生產(chǎn)設計過程中應用。主要界面如下:
(1)設計業(yè)務界面,如圖6 所示。其主要功能包括:①根據(jù)登錄賬號類型及權限,顯示相應的業(yè)務畫面;②開孔聯(lián)系單的建立、接收、發(fā)布與開孔,并更改開孔聯(lián)系單的流程狀態(tài)。
圖6 舾裝設計用戶界面
(2)校核業(yè)務界面,如圖7 所示。其主要功能包括:①開孔聯(lián)系單的分類;② 各專業(yè)對開孔聯(lián)系單的審核過程,并更改開孔聯(lián)系單狀態(tài);③ 通過開孔聯(lián)系單記錄的信息快速調(diào)入相關模型(按分段、專業(yè)、開孔聯(lián)系單調(diào)入模型)。
依據(jù)郵輪的業(yè)務現(xiàn)狀和各專業(yè)后端的數(shù)據(jù)需求,分析船舶跨專業(yè)協(xié)同設計流程和S3D 設計系統(tǒng)二次開發(fā)能力,基于S3D 二次開發(fā)架構,結合S3D 軟件提供的API接口,研發(fā)出基于S3D船舶設計軟件開孔管理系統(tǒng)。該系統(tǒng)通過直連大型關系型數(shù)據(jù)庫,對開孔生命周期進行管理,實現(xiàn)船體生產(chǎn)設計數(shù)據(jù)的有效協(xié)同和數(shù)據(jù)統(tǒng)一。加強各專業(yè)協(xié)同設計能力,以流程驅(qū)動開孔申請單,在流程節(jié)點中對開孔申請單生命周期,確保了開孔準確性、流程可控、歷史可追溯,提高了結構預開孔的開孔率,更好地輔助郵輪設計。
圖7 校審業(yè)務界面
(1)系統(tǒng)分析。分析理解系統(tǒng)的基本需求,確定其框架,確定開發(fā)方式。Command 開發(fā)、Standalone 開發(fā)或是自定義規(guī)則開發(fā)。
(2)系統(tǒng)設計。主要任務是系統(tǒng)的總體設計,如畫面、規(guī)則、數(shù)據(jù)庫設計等。
(3)熟悉S3D 中模型對象的數(shù)據(jù)結構與數(shù)據(jù)對象描述,如類、接口、屬性、關聯(lián)等,利用MetaDataBrowser 查看模型對象的實現(xiàn)接口,如圖8所示。
圖8 S3D對象描述圖
(4)利用RepositoryBrowser 查看模型對象的關聯(lián)關系,可以幫助用戶迅速找到對象的實現(xiàn)接口。
S3D是一套優(yōu)秀的三維建模及可視化解決方案,基于S3D的開孔管理系統(tǒng)是獲得S3D 三維設計優(yōu)勢的同時提高其設計效率,使其更加用戶化與專業(yè)化。目前三維設計技術正在推動造船工業(yè)的設計手段、運行模式、管理方式等各方面的變革,S3D應用的深度與廣度將對郵輪綜合建造水平的高低起到?jīng)Q定性的作用。隨著我國大型郵輪的自主建造和國內(nèi)船舶制造業(yè)產(chǎn)業(yè)升級,用戶的郵輪設計建造需求會不斷增長,對S3D軟件進行二次開發(fā)是非常必要的,且隨著郵輪旅游市場不斷增長,S3D 作為國內(nèi)首艘大型郵輪設計軟件將會面臨更廣的應用,其二次開發(fā)也將面臨更多的需求與挑戰(zhàn),通過二次開發(fā)項目的實施以滿足大型郵輪數(shù)字化設計的需要,也為大型郵輪國產(chǎn)化奠定技術基礎。