鄒夢(mèng)瑤 嚴(yán)利民 楊中源 林 蓁
(中國(guó)船舶及海洋工程設(shè)計(jì)研究院 上海200011)
傳統(tǒng)的船舶設(shè)計(jì)手段主要以二維為主,即在AutoCAD 中繪制各類圖紙(如系統(tǒng)圖、布置圖、結(jié)構(gòu)圖等),然后以各類圖紙作為送審和交付的載體。近年來,隨著船舶行業(yè)產(chǎn)業(yè)升級(jí)和數(shù)字化設(shè)計(jì)技術(shù)的不斷發(fā)展,業(yè)內(nèi)對(duì)于船舶設(shè)計(jì)高效性、專業(yè)協(xié)同性的要求也不斷提升,船舶設(shè)計(jì)手段由傳統(tǒng)二維設(shè)計(jì)向三維數(shù)字化協(xié)同設(shè)計(jì)轉(zhuǎn)型升級(jí)正在成為未來的技術(shù)發(fā)展方向[1-3]。與二維設(shè)計(jì)相比,三維設(shè)計(jì)具有可視化程度高、模型信息集成度高、設(shè)計(jì)協(xié)同性好、可拓展性強(qiáng)等特點(diǎn)。以船舶艙室布置設(shè)計(jì)為例,采用以船體三維結(jié)構(gòu)模型為背景的艙室布置模型不僅能夠?qū)崿F(xiàn)設(shè)備干涉檢查,而且可以輔助機(jī)電專業(yè)進(jìn)行放樣設(shè)計(jì)。同時(shí),由于具有設(shè)計(jì)信息與幾何信息相統(tǒng)一、屬性可擴(kuò)展等特點(diǎn),包含各專業(yè)設(shè)備的三維艙室布置模型還具有深入進(jìn)行各類仿真分析和計(jì)算的潛能,如機(jī)艙氣流場(chǎng)仿真、重量重心計(jì)算等。在二維設(shè)計(jì)向三維設(shè)計(jì)過渡階段,如何利用二維設(shè)計(jì)中成熟的開發(fā)工具輔助三維設(shè)計(jì),在提高三維設(shè)計(jì)效率的同時(shí)借助三維模型的視覺直觀性驗(yàn)證二維設(shè)計(jì)的準(zhǔn)確性成為船舶設(shè)計(jì)師關(guān)注的主要方向之一。
3DE 平臺(tái)是法國(guó)達(dá)索系統(tǒng)開發(fā)的新一代集CAD/CAE/CAM 于一 體的PLM 軟件 平臺(tái)[4],該 平臺(tái)旨在為企業(yè)提供一體化、智能化的工業(yè)解決方案,可以很好地滿足制造業(yè)在數(shù)字化轉(zhuǎn)型升級(jí)中的需求,為制造業(yè)帶來全新的設(shè)計(jì)和生產(chǎn)體驗(yàn)[5-6]。然而,由于用戶軟件使用習(xí)慣和所需功能側(cè)重點(diǎn)不同,再?gòu)?qiáng)大的軟件平臺(tái)也不可能同時(shí)滿足各類用戶的需求。與AutoCAD 相比,3DE 平臺(tái)在船舶行業(yè)內(nèi)的應(yīng)用起步較晚,相關(guān)專業(yè)功能和設(shè)置仍不完善。因此,結(jié)合船舶設(shè)計(jì)流程中的具體需求對(duì)3DE 平臺(tái)進(jìn)行二次開發(fā)研究,已受到國(guó)內(nèi)外許多科研院所、高校和船廠的重視。3DE 平臺(tái)提供多種開發(fā)語言,例如EKL(Enterprise Knowledge Language,知識(shí)工程語言)、VBA(Visual Basic for Applications,Visual Basic 宏語言)、CAA(Component Application Architecture,組件應(yīng)用架構(gòu))等,不同的語言在開發(fā)難易程度上有較大差距。CAA 是達(dá)索產(chǎn)品擴(kuò)展和客戶進(jìn)行定制開發(fā)的平臺(tái)[7],采用面向?qū)ο蟮某绦蛘Z言,本文所提出的方法正是基于CAA 進(jìn)行開發(fā)。
傳統(tǒng)艙室布置需要具有一定專業(yè)知識(shí)的人員借助CAD 軟件,不斷反復(fù)、螺旋上升、逐步求精,最后得出比較合理的布置方案[8]。在3DE 平臺(tái)中進(jìn)行艙室布置設(shè)計(jì)時(shí),原生功能提供的方法是從資源庫(kù)中逐個(gè)調(diào)用設(shè)備或利用平臺(tái)內(nèi)的二維原理圖對(duì)設(shè)備進(jìn)行驅(qū)動(dòng),將設(shè)備模型實(shí)例化至三維設(shè)計(jì)空間中,再運(yùn)用羅盤等工具依次對(duì)設(shè)備進(jìn)行移動(dòng)或方向調(diào)整,直到三維模型符合艙室布置設(shè)計(jì)的需要[9]。采用從資源庫(kù)中調(diào)用設(shè)備模板的方法時(shí),速度較慢,無法批量操作;采用二維原理圖進(jìn)行驅(qū)動(dòng)時(shí),則存在需要?jiǎng)?chuàng)建大量信息關(guān)聯(lián),操作繁瑣的問題。除此之外,以上兩種方法均不能將設(shè)備準(zhǔn)確定位在設(shè)計(jì)位置,需要進(jìn)行手動(dòng)調(diào)整。這些因素均導(dǎo)致采用原生功能無法實(shí)現(xiàn)高效的艙室布置設(shè)計(jì)。
針對(duì)以上問題,本文利用CAA 對(duì)3DE 平臺(tái)進(jìn)行二次開發(fā),提出了一種高效的艙室布置模型生成方法,可實(shí)現(xiàn)設(shè)備信息、自動(dòng)導(dǎo)入、模型節(jié)點(diǎn)創(chuàng)建和屬性擴(kuò)展、模型自動(dòng)調(diào)用及設(shè)備精確定位。與原生功能相比,能夠極大地提升艙室布置的設(shè)計(jì)效率和三維模型的創(chuàng)建速度,具體流程如圖1 所示。
圖1 二維布置驅(qū)動(dòng)三維建模流程
從該流程可知,從AutoCAD 布置圖中生成數(shù)據(jù)源是驅(qū)動(dòng)建模的基礎(chǔ),運(yùn)用CAA 二次開發(fā)工具讀取數(shù)據(jù)源中的信息是關(guān)鍵,根據(jù)信息在3DE 平臺(tái)中進(jìn)行三維布置模型的創(chuàng)建是核心。通過以上流程可實(shí)現(xiàn)對(duì)設(shè)備庫(kù)資源的檢索,并根據(jù)設(shè)備節(jié)點(diǎn)名稱對(duì)設(shè)備進(jìn)行批量替換,從而實(shí)現(xiàn)三維布置模型的快速生成。如果三維模型的布置不滿足設(shè)計(jì)需要,可直接在三維模型中對(duì)設(shè)備位置進(jìn)行調(diào)整,或者回到二維布置圖中對(duì)二維圖塊進(jìn)行調(diào)整,然后再次生成數(shù)據(jù)源,調(diào)用二次開發(fā)工具直接讀取新的設(shè)備位置信息實(shí)現(xiàn)對(duì)三維模型位置的調(diào)整。通過以上步驟的反復(fù)迭代完成三維模型的布置。
驅(qū)動(dòng)數(shù)據(jù)源中主要包含設(shè)備的屬性信息和位置信息,可通過AutoCAD 成熟的開發(fā)工具從布置圖中的圖塊信息中獲取。本文提出的二維布置驅(qū)動(dòng)三維建模方法所需的數(shù)據(jù)源參見圖2 所示表格。
圖2 驅(qū)動(dòng)數(shù)據(jù)源表格
屬性信息主要包括設(shè)備中英文名稱、數(shù)量、重量和性能參數(shù)位置信息等;位置信息即設(shè)備在船體三維坐標(biāo)系中的坐標(biāo)值,其中Pos.X 為沿船長(zhǎng)方向的坐標(biāo),Pos.Y 為沿船寬方向的坐標(biāo),Pos.Z 為沿高度方向的坐標(biāo)。為將數(shù)據(jù)源中的信息寫入到設(shè)備屬性中,需要對(duì)設(shè)備進(jìn)行屬性擴(kuò)展,從而使設(shè)備節(jié)點(diǎn)可以承載額外的設(shè)備屬性。
3DE 平臺(tái)結(jié)構(gòu)樹中3DPart 節(jié)點(diǎn)和三維設(shè)備具有一一對(duì)應(yīng)關(guān)系,通過讀取智能驅(qū)動(dòng)數(shù)據(jù)源可自動(dòng)計(jì)算二維布置圖中設(shè)備的數(shù)量,在三維建模時(shí)批量創(chuàng)建設(shè)備節(jié)點(diǎn)。雖然,3DE 平臺(tái)提供的原生Spread Sheet 功能可批量創(chuàng)建3DPart 節(jié)點(diǎn),但是在批量創(chuàng)建時(shí)無法添加用戶定制的擴(kuò)展屬性。為解決屬性擴(kuò)展的問題,可通過CAA 開發(fā)批量創(chuàng)建3DPart 節(jié)點(diǎn)并且在創(chuàng)建的同時(shí)添加擴(kuò)展屬性。CAA 開發(fā)批量創(chuàng)建3DPart 節(jié)點(diǎn),示例代碼如下:
AutoCAD 二維布置圖生成的數(shù)據(jù)源包含各設(shè)備的位置信息(PosX、PosY、PosZ=0)。如果知道該布置圖對(duì)應(yīng)的空間平面高度,則可以手動(dòng)將POSZ 的數(shù)值設(shè)置為平面高度,則數(shù)據(jù)源中完整表達(dá)了各設(shè)備的空間位置信息。在3DE 平臺(tái)中設(shè)備的位置信息通過其位置矩陣描述[10],如圖3 所示,Translation 欄中的數(shù)值表示設(shè)備在空間中相對(duì)三維坐標(biāo)原點(diǎn)的距離。
通過CAA 二次開發(fā)可批量讀取設(shè)備的位置信息并設(shè)置各方向的距離數(shù)值,從而實(shí)現(xiàn)設(shè)備的定位。這種設(shè)備定位的方式與3DE 平臺(tái)原生功能相比,極大提高了設(shè)備布置的效率和位置的準(zhǔn)確性。示例代碼如下:
圖3 位置矩陣
二維布置智能驅(qū)動(dòng)三維設(shè)計(jì)需要AutoCAD 和3DE 平臺(tái)進(jìn)行數(shù)據(jù)交互,并且讀取數(shù)據(jù)源之后需要將數(shù)據(jù)屬性信息記錄在三維模型中。AutoCAD 二維布置圖中一般以圖塊存儲(chǔ)設(shè)備屬性信息,圖塊中的屬性種類可由用戶自定義設(shè)置,如下頁(yè)圖4 所示。在3DE 平臺(tái)中,設(shè)備的屬性信息一般存儲(chǔ)在參考(Reference)屬性和實(shí)例(Instance)屬性中,如下頁(yè)圖5 所示。
由圖4 和圖5 可知,3DE 平臺(tái)中設(shè)備的參考和實(shí)例屬性和AutoCAD 中圖塊的屬性不匹配,無法直接將數(shù)據(jù)源中的設(shè)備屬性參數(shù)對(duì)應(yīng)地寫入到設(shè)備節(jié)點(diǎn)中,因此需要對(duì)設(shè)備屬性進(jìn)行定制化的擴(kuò)展。3DE 平臺(tái)中屬性擴(kuò)展對(duì)應(yīng)的角色為Customization Administrator,對(duì)應(yīng)的App 為Data Model Customization。擴(kuò)展屬性部署之后,可以將擴(kuò)展屬性添加到設(shè)備節(jié)點(diǎn)中,示例代碼如下:
圖4 AutoCAD設(shè)備屬性
圖5 3DE平臺(tái)設(shè)備屬性
設(shè)備擴(kuò)展屬性完成之后,需要將數(shù)據(jù)源中的屬性參數(shù)批量寫入到各設(shè)備節(jié)點(diǎn)中,從而使各3DPart 節(jié)點(diǎn)代表不同的設(shè)備。屬性參數(shù)寫入運(yùn)用CAA 中CATCkeObjectAttrWriteServices:SetValueWithString()方法實(shí)現(xiàn)。完成屬性擴(kuò)展和參數(shù)寫入后,3DE平臺(tái)結(jié)構(gòu)樹中的設(shè)備節(jié)點(diǎn)如圖6所示。
圖6 設(shè)備節(jié)點(diǎn)
通過以上步驟,僅實(shí)現(xiàn)了設(shè)備節(jié)點(diǎn)的批量創(chuàng)建和設(shè)備屬性的錄入,并未將設(shè)備三維幾何模型生成。為在3DE 平臺(tái)中呈現(xiàn)各設(shè)備節(jié)點(diǎn)對(duì)應(yīng)的三維模型,首先需要對(duì)設(shè)備庫(kù)資源進(jìn)行加載,然后按照設(shè)備節(jié)點(diǎn)的名稱在設(shè)備資源庫(kù)中進(jìn)行查找和調(diào)用,從而實(shí)現(xiàn)三維模型的自動(dòng)批量生成。
庫(kù)資源加載示例代碼如下:
在充分理解二維布置智能驅(qū)動(dòng)三維建模詳細(xì)流程的基礎(chǔ)上,筆者嘗試運(yùn)用CAA 開發(fā)語言進(jìn)行二次開發(fā)。首先,按照智能驅(qū)動(dòng)流程設(shè)計(jì)開發(fā)工具界面,二次開發(fā)工具界面如圖7 所示;然后,通過查詢CAA 中的函數(shù)方法為各命令按鈕實(shí)現(xiàn)的功能編寫相應(yīng)程序;最后,在開發(fā)平臺(tái)中對(duì)程序進(jìn)行編譯驗(yàn)證代碼的正確性。
為充分驗(yàn)證開發(fā)工具的適用性,本文以某貨船機(jī)艙三維布置模型生成為例,結(jié)合輪機(jī)專業(yè)機(jī)艙布置圖生成的智能驅(qū)動(dòng)數(shù)據(jù)源,通過CAA 二次開發(fā)工具實(shí)現(xiàn)了機(jī)艙三維模型的快速創(chuàng)建。原始AutoCAD 二維布置圖和3DE 平臺(tái)中生成的三維模型的比較如下頁(yè)圖8 和圖9 所示。
圖7 開發(fā)工具界面
圖8 AutoCAD二維布置圖
我國(guó)船舶制造業(yè)仍處于數(shù)字化設(shè)計(jì)和智能制造的起步階段,諸多問題亟待解決,如何利用傳統(tǒng)的二維設(shè)計(jì)智能驅(qū)動(dòng)三維建模值得深入探索。3DE平臺(tái)作為當(dāng)前船舶三維設(shè)計(jì)的主流平臺(tái),為用戶提供了良好的開發(fā)環(huán)境。本文針對(duì)如何提高船舶艙室三維建模效率的問題,基于3DE 平臺(tái)進(jìn)行二次開發(fā),提出了一種二維驅(qū)動(dòng)三維的艙室布置模型生成方法?;谀池洿瑱C(jī)艙三維模型的驅(qū)動(dòng)試驗(yàn)表明,該方法具有模型生成效率高、定位準(zhǔn)確、節(jié)點(diǎn)屬性可擴(kuò)展性強(qiáng)、界面簡(jiǎn)潔、操作簡(jiǎn)便等特點(diǎn),在充分利用現(xiàn)有二維設(shè)計(jì)資源的基礎(chǔ)上有效提高了船舶三維設(shè)計(jì)的效率和質(zhì)量,為船舶三維高效建模提供了一種新的方法。
圖9 三維布置模型
[ 2 ]張凱,謝承福,涂躍紅,等. FORAN 軟件在船舶總體設(shè)計(jì)中的應(yīng)用[J]. 中國(guó)艦船研究,2009(4):76-80.
[ 3 ]盧永進(jìn),華志剛. 基于FORAN 的船舶管路三維設(shè)計(jì)研究[J]. 船海工程,2012(5):77-80.
[ 4 ]曾魯山,曾凡明,劉金林. 基于CATIA 和VIRTOOLS技術(shù)的虛擬機(jī)艙漫游研究[J]. 中國(guó)艦船研究,2008(5):62-64.
[ 5 ]盧永進(jìn),林悅. CATIA V6 船舶三維設(shè)計(jì)實(shí)例[M].哈爾濱:哈爾濱工程大學(xué)出版社,2016.
[ 6 ]武振鋒,陳周鋒. 基于CATIA 的CRH380AL 動(dòng)車組頭車三維曲面設(shè)計(jì)[J].武漢大學(xué)學(xué)報(bào)(工學(xué)報(bào)),2013(5):635-639.
[ 7 ]何旺,柳存根,汪學(xué)峰.船舶機(jī)艙智能布置方法研究[J].船舶工程,2014(6):85-88.
[ 8 ]何朝良,杜廷娜,張超. 基于CAA 的CATIA 二次開發(fā)初探[J].計(jì)算機(jī)運(yùn)用,2006(9):37-40.
[ 9 ]鄒夢(mèng)瑤,管偉元,王充,等. 基于三維體驗(yàn)平臺(tái)的船舶設(shè)備驅(qū)動(dòng)與布置研究[J]. 船舶與海洋工程,2019(2):72-76.
[10]韓志仁,梁文馨,劉春峰,等.基于CATIA 裝配件位置信息提取與重構(gòu)技術(shù)研究[J].航空制造技術(shù),2016,11:103-106.