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