劉 杰,凌華星,金 勇,常興山,吳 迪
(武漢理工大學(xué) 能源與動(dòng)力工程學(xué)院,湖北 武漢 430063)
在船舶建造設(shè)計(jì)過程中,船舶軸系設(shè)計(jì)是至關(guān)重要的一環(huán)。目前的船舶軸系設(shè)計(jì)軟件,在進(jìn)行軸系校中計(jì)算分析、軸系振動(dòng)計(jì)算分析時(shí),均需要建立各自的計(jì)算模型,每一個(gè)模型的建立都需要相應(yīng)的模型數(shù)據(jù)[1-2]。當(dāng)前軸系設(shè)計(jì)軟件建模的實(shí)現(xiàn)方法均通過參數(shù)輸入界面手動(dòng)輸入軸系相關(guān)數(shù)據(jù)或以文件的形式讀取錄入,在進(jìn)行相應(yīng)的校中、振動(dòng)計(jì)算時(shí),通過獲取數(shù)據(jù)進(jìn)而建立相應(yīng)的分析模型。這種方法不僅使程序比較固化,還使軸系數(shù)據(jù)不能很好地被利用,而配置思想正好可以解決該類問題。此外,在編輯或修改模型數(shù)據(jù)時(shí),沒有可視化的軸系作為參考,給用戶帶來不便,因而將軸系建模進(jìn)行圖形化尤為必要[3]。針對(duì)以上問題,提出基于配置思想的船舶軸系設(shè)計(jì)軟件圖形化建模方法。
船舶軸系由許多部件組成,包括推力軸、中間軸、艉軸、螺旋槳軸以及其他附屬部件[4]。在進(jìn)行船舶軸系設(shè)計(jì)時(shí),若將船舶軸系進(jìn)行可視化,且可對(duì)其相應(yīng)的部件數(shù)據(jù)進(jìn)行實(shí)時(shí)編輯或修改,即進(jìn)行圖形化建模,將給用戶帶來一定的便捷性。同時(shí),也可與其他軸系校中軟件、軸系振動(dòng)分析軟件等進(jìn)行集成,方便了軸系校中、振動(dòng)計(jì)算。圖形化建模實(shí)現(xiàn)流程如圖1所示。
圖1 圖形化建模實(shí)現(xiàn)流程
在實(shí)現(xiàn)圖形化建模時(shí),首選將軸系各部件用相應(yīng)的圖元表示,圖元可利用系統(tǒng)自帶的類型,也可根據(jù)要求自定義。每添加一個(gè)部件,就在工作區(qū)顯示相應(yīng)部件圖元,并保證在添加時(shí)工作區(qū)中的每一個(gè)部件圖元的幾何中心線水平對(duì)齊。在移動(dòng)圖元時(shí),要避免與相連接的圖元重疊,為此,在移動(dòng)圖元時(shí)需要判斷所移動(dòng)圖元的位置是否與其他圖元重疊。軸系部件圖形化完成后,還應(yīng)將其與相應(yīng)的部件屬性建立聯(lián)系,在點(diǎn)擊部件圖元時(shí),顯示出相應(yīng)的部件圖元屬性,以方便用戶編輯,建立所需的模型數(shù)據(jù)。圖形化建模程序執(zhí)行流程如圖2所示。
圖2 圖形化建模程序執(zhí)行流程圖
軟件開發(fā)包括需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、代碼編寫以及測試與維護(hù)等步驟。在開發(fā)過程中,需求并不是一成不變的,而是隨著用戶的要求不斷變化[5]。為此,開發(fā)人員不得不為滿足用戶需求而對(duì)軟件系統(tǒng)進(jìn)行頻繁修改。在傳統(tǒng)思想的開發(fā)模式下,系統(tǒng)界面和功能實(shí)現(xiàn)均與代碼邏輯緊密相關(guān),耦合度較高,任何變更均需要通過重新編輯代碼完成,這大大降低了系統(tǒng)的靈活性,給開發(fā)人員增加了很多不必要的負(fù)擔(dān)[6]。配置思想可以很好地解決這些問題。配置思想是程序開發(fā)的一種實(shí)現(xiàn)方法,其將程序中需要的信息用配置信息進(jìn)行存儲(chǔ),程序的界面及相應(yīng)的流轉(zhuǎn)、控制等行為根據(jù)配置信息進(jìn)行自動(dòng)切換。所以當(dāng)用戶需求有變化時(shí),通過修改相應(yīng)的配置信息即可實(shí)現(xiàn)相應(yīng)效果,而不需修改程序源代碼[7]。配置思想的應(yīng)用,能夠大幅度減少業(yè)務(wù)代碼量,快速完成界面的創(chuàng)建與更新,提高系統(tǒng)的開發(fā)效率。
基于配置思想開發(fā)的系統(tǒng)具有數(shù)據(jù)可配置、界面可配置、流程可配置的優(yōu)點(diǎn)。在實(shí)現(xiàn)的過程中,最重要的就是配置文件的設(shè)計(jì)。配置文件可以對(duì)數(shù)據(jù)、界面中控件的類型與位置等信息進(jìn)行保存,配置文件的形式包括:ini文件、xml文件、數(shù)據(jù)庫表等多種類型。船舶軸系圖形化建模中,由于配置信息較多,配置文件將采用數(shù)據(jù)庫表的形式[8]。
1)配置信息與工具。要實(shí)現(xiàn)船舶軸系圖形化建模,需要較多配置信息,主要有項(xiàng)目登記表、部件類型配置表、部件屬性配置表及部件屬性值表。
(1)項(xiàng)目登記表。項(xiàng)目登記表主要用于保存圖形化建模與項(xiàng)目相關(guān)的信息,包括項(xiàng)目編號(hào)、項(xiàng)目名稱、版本號(hào)等內(nèi)容,如表1所示。
表1 項(xiàng)目登記表
表1中的“主鍵”只是作為項(xiàng)目的唯一標(biāo)識(shí),并沒有特殊的含義,所以該主鍵的賦值并不需要具體的編碼規(guī)則,可采用唯一的整數(shù)。父主鍵表示具體項(xiàng)目標(biāo)識(shí),由于同一個(gè)項(xiàng)目可以有不同的版本,因此父主鍵的值可重復(fù),并可自定義其編碼。
(2)部件類型配置表。部件類型配置表是圖形化建模中重要的配置表之一,主要用于配置圖形化建模中所需用到的部件,如表2所示。
表2 部件類型配置表
表2中的“主鍵”字段表示部件的唯一標(biāo)識(shí),對(duì)應(yīng)相應(yīng)的部件“名稱”字段。其中“數(shù)量”字段用于標(biāo)識(shí)該部件在項(xiàng)目中最多可以有幾個(gè)。在軸系圖形化建模過程中,當(dāng)添加的部件數(shù)量超過所規(guī)定的部件數(shù)量時(shí),將具體信息以彈出框的形式反饋給用戶?!皩傩越M合”字段用于標(biāo)識(shí)該部件所擁有的屬性,一般用屬性表中的屬性ID來表示,并用“,”分隔。
(3)部件屬性配置表。部件屬性配置表是圖形化建模中重要的配置表之一,主要用于配置圖形化建模中各部件相關(guān)屬性的信息,以及對(duì)其屬性值的取值范圍進(jìn)行相應(yīng)的規(guī)定,如表3所示。
表3 部件屬性配置表
在配置相應(yīng)的部件屬性時(shí),可對(duì)其屬性值類型進(jìn)行規(guī)定,以便后續(xù)對(duì)其相應(yīng)屬性值的顯示或編輯進(jìn)行解析。主要有“數(shù)值” “字符串”和“選項(xiàng)”3種類型。屬性值范圍可對(duì)輸入的屬性值進(jìn)行限制,增加了編輯屬性的友好性。
(4)部件屬性值表。部件屬性值表主要是用來保存項(xiàng)目中各部件的屬性值。當(dāng)用戶對(duì)部件的屬性進(jìn)行編輯或修改后,所編輯或修改后的屬性值存儲(chǔ)于部件屬性值表中,如表4所示。
表4 部件屬性值表
2)主要實(shí)現(xiàn)思路。運(yùn)行程序時(shí)通過加載配置信息,將軸系各部件加載進(jìn)程序,并為其添加相應(yīng)事件。部件圖元加載流程如圖3所示。
圖3 部件圖元加載流程
由于配置信息是以數(shù)據(jù)庫的形式存儲(chǔ),所以讀取配置信息實(shí)際上就是查詢數(shù)據(jù)庫表,將查詢結(jié)果填充到數(shù)據(jù)集,并賦值給定義好的DataTable類型。根據(jù)查詢結(jié)果為程序添加軸系部件圖元控件,同時(shí),通過AddHandler函數(shù)給各個(gè)部件圖元控件添加相應(yīng)的事件。以此往復(fù),直到加載完成。
在進(jìn)行圖形化建模時(shí),點(diǎn)擊部件圖元控件,將在工作區(qū)中添加相應(yīng)的圖元。若要對(duì)其屬性進(jìn)行編輯,則點(diǎn)擊相應(yīng)的圖元,將彈出相應(yīng)的屬性編輯窗口,部件屬性解析及編輯流程如圖4所示。
圖4 部件屬性解析及編輯流程
選項(xiàng)類型的解析處理,處理結(jié)果主要有2種情況:分別為單列列表框和名—值雙列列表框。當(dāng)屬性值的取值規(guī)定字符串不以“{”開頭,并且不以“}”結(jié)尾時(shí),當(dāng)作單列列表框處理,否則當(dāng)作雙列列表框處理。
在Visual Studio 2017開發(fā)平臺(tái)下,利用DevExpress第三方控件,采用VB.NET語言,實(shí)現(xiàn)了對(duì)船舶軸系圖形化建模。軸系設(shè)計(jì)的圖形化建模效果示意圖如圖5所示。
圖5 軸系設(shè)計(jì)的圖形化建模效果示意圖
當(dāng)點(diǎn)擊某一部件圖元時(shí),將會(huì)顯示其屬性窗口,用戶可對(duì)其進(jìn)行編輯。例如,點(diǎn)擊中間軸,將會(huì)出現(xiàn)對(duì)應(yīng)的屬性編輯窗口,如圖6所示。當(dāng)編輯選項(xiàng)類型的屬性值時(shí),將會(huì)顯示解析后的選項(xiàng)類型屬性值列表框,如圖7所示。當(dāng)用戶對(duì)部件圖元進(jìn)行移動(dòng)時(shí),如果所移動(dòng)部件圖元與其他圖元重疊,將會(huì)彈出提示框提醒用戶。
圖6 屬性編輯框
圖7 選項(xiàng)類型屬性值列表框
船舶軸系軸徑的良好設(shè)計(jì)是影響軸系安全運(yùn)行與可靠運(yùn)行的重要因素。根據(jù)現(xiàn)有船舶軸系校中、軸系振動(dòng)計(jì)算分析軟件在實(shí)際運(yùn)用中的問題,如均需建立各自的系統(tǒng)模型、程序較為固化、數(shù)據(jù)處理不便等,應(yīng)用配置思想,將軸系建模部分作為一個(gè)系統(tǒng)模塊進(jìn)行圖形化設(shè)計(jì),即實(shí)現(xiàn)基于配置思想的船舶軸系設(shè)計(jì)圖形化建模。該方法與傳統(tǒng)方法相比,具有更好的靈活性、適應(yīng)性與擴(kuò)展性,既提高了系統(tǒng)的開發(fā)效率,又使得其便捷程度得到提升,使開發(fā)人員以及用戶都得到良好的體驗(yàn)。該方法可以推廣到其他相似的應(yīng)用場景,具有一定的工程實(shí)用價(jià)值。