?

基于二維布置圖的三維艙室自動建模技術

2021-08-31 01:08黃衛剛林科
中國艦船研究 2021年4期
關鍵詞:艙室邊界建模

黃衛剛,林科

中國艦船研究設計中心,湖北 武漢 430064

0 引 言

艦船總體設計目前正值二維設計和三維設計重疊的階段。其中,二維設計對象是甲板分層布置圖,圖中包含艙室邊界、艙室名稱等信息。根據這些信息可確定艙室之間的相鄰關系以及艙室面積容積等關鍵信息,對總體設計而言具有重要的影響[1],確定甲板分層圖中的信息將為艦船艙室容積面積統計以及不沉性等性能計算分析奠定基礎?;诙S圖紙自動構建的艦船三維艙室布置模型將為三維設計提供基礎對象,是三維總體設計的基礎。如何實現二維圖紙向三維模型方向的轉換是目前工程中需要解決的一個問題。

現階段總體方案三維設計領域的主要研究方向集中在船舶設計的軟件化和智能化。例如:Kowalski 等[2]開發了基于船舶設計方法和程序的知識庫,輔助控制設備的船舶自動控制系統;Kang 等[3]利用C 語言對三維設計軟件CADDSS進行了二次開發,研制了船舶管路自動布置設計的智能船舶CAD 系統;李俊華等[4]應用專家系統原理,開發了可進行船舶艙室三維優化的計算機系統;蔡乾亞等[5]研究開發了集裝箱船穩性計算及中橫剖面結構設計的計算機系統;Michalek 等[6]開發了一套人機交互建筑布置優化軟件,允許用戶根據初始輸入數據生成可行方案,然后根據設計者個人意圖對可行方案進行改造,如此反復后得出最優布局結果;Michalek 等[7]首先將戶型優化問題用網格進行離散,變為整數規劃問題,采用人機交互的方法,結合整數規劃方法和專家系統在戶型優化設計中的應用,設計人員可動態地修改機器解后再進行迭代;張濤等[8]應用公理化設計原理及基于知識工程的模塊化機理有效探索了大型郵輪的布置設計規律。

由于設計歷史數據是二維圖紙,艦船設計人員仍習慣繪制二維圖紙。因此,面向三維設計,需要基于二維圖紙轉化為三維設計的方案。機器學習等人工智能技術在總體設計中的應用需要積累大量基礎數據集,目前這些數據集仍主要以二維圖紙的形式存在,如何實現二維布置圖智能識別及三維模型的自動構建和數據化,是目前艦船智能設計亟待解決的一個問題。

本文針對上述問題,將提出一種基于總布置圖信息自動建模艙室三維模型的技術,實現艙室信息的自動分析、建模等功能,為針對二維布置信息實現數據自動提取提供技術條件。

1 總體框架

基于二維總布置信息的三維艙室自動建模技術的主要思路為:首先,采用數據分析技術提取AutoCAD 二維分層布置圖中的艙室邊界、名稱、編號等信息,建立二維艙室的圖元;然后,根據艙室的上、下二維圖元之間的對應關系自動構建艙室三維圖元;最后,形成針對三維軟件的數據接口,實現數據的有效輸出(圖1)?;谠摷夹g開發了相應的軟件,包括二維艙室邊界識別、二維艙室屬性識別、三維艙室建模和數據輸出等功能。

圖1 軟件基本流程Fig. 1 Basic sofware process

2 二維艙室邊界識別

基于二維總布置信息的三維艙室自動建模是利用總布置圖中的艙室邊界、艙室名稱及艙室編號三類信息構建三維艙室模型。開展工程設計時,在總布置圖中通過不同圖層表示不同的信息,如艙室邊界、艙室名稱及艙室編號分別位于3 個不同的圖層。AutoCAD 二維分層布置圖一般包括多種圖層,艙室邊界只含艙室的輪廓線(包括舷側邊界信息)。為方便分析,艙室名稱、艙室編號需位于艙室輪廓范圍內??紤]到項目的關注點,首先需過濾總布置圖中包含的其他圖層(本研究的無關信息),然后識別并處理艙室邊界,對于需要識別的艙室邊界線較多(線型包括了直線、多段線、圓弧甚至樣條線),可以通過布爾運算的方式實現。

具體步驟如下:

1) 基于Parisolid 的輸入接口導入AutoCAD格式的圖紙文件。建立一個1 000×1 000 的四邊形面域S,將所有艙室的邊界線向該面域進行映射,容差定義為1×10-6。此時,所有艙室邊界的延長線均變成了面域的邊界線,面域之間的邊界線將面域S打散成為數百個小碎面,如圖2 所示。

圖2 面域提取Fig. 2 Surface domain extraction

2) 提取面域所有碎面,去掉包含面域S邊界的碎面,每個碎面包含了各自的邊界線及內部硬線(自由邊界)。

3) 解析碎面的邊界拓撲。邊界可識別為由一系列順序排列的散點形成的封閉域,起點坐標等于終點坐標。遍歷所有內部點(除起點和終點外),若坐標值相同,則該兩點間的所有點構成了非邊界的內部硬線。如圖3 所示,第n點和n+2點坐標一致,則表明從n到n+2 形成了一條回歸的內部硬線。

圖3 自由邊界處理Fig. 3 Free boundary processing

4) 若一條硬線上存在硬線分支,只需采用最小分支判斷即可。判斷i點和i+2 是否一致,若一致,i和i+1 就形成了一條單向的硬線。遍歷時,找到所有分支的最頂部節點以及單向中間分支。

5) 基于干凈的(即面域內無內部硬線)外輪廓建立新的面域Sj,并反向延伸所有最頂部節點,與所有單向中間分支一起映射到面域Si上,形成新的面域SI′。

6) 提取SI′的所有碎面,重新生成新的沒有碎面的面域SI″,再從SI″中繼續提取子面,此即為需要識別出的艙室邊界。

在處理識別艙室邊界的過程中,不可避免地會存在繪制不規范的問題。針對該問題,本文總結相關情況,給出了如表1 所示解決方案。

表1 艙室邊界繪制不規范問題處理表Table 1 The non-standard problems of tank boundary

3 二維艙室屬性識別

確定了艙室邊界后,需要識別每一個艙室的屬性(包含艙室編號、艙室名稱)。AutoCAD 二維圖紙中,艙室編號及名稱通過艙室區域內的文本形式顯示??紤]到本文研究目標之一是實現二維布置狀態和三維設計方案之間的自動轉化,提出采用Parasolid 內核tag 屬性(特有的)輔助關聯艙室及其對應的屬性,tag 方式可實現屬性的快速匹配,經幾千個面域的測試,可在1 s 內完成屬性匹配。

為實現二維艙室屬性識別算法,本研究引入以下內容:

1) 艙室流水號:將艙室從1 開始編號,順序實現艙室的逐次處理,以便處理艙室。

2) 點流水號:描述與艙室流水號對應的艙室編號所在位置,從1 開始排序。

具體算法如下:

1) 識別頂部和底部艙室區域屬性。針對每個艙室申明1 個二維的tag 屬性,并賦予艙室流水號。面1 增加1 個tag 屬性1。同時,組合所有識別出來的艙室形成面域S(無布爾運算操作,僅簡單合并為一個幾何體)。針對艙室編號的位置創建散點對象,并將散點對象申明零維的tag 屬性,同時賦予點流水號。散點1 和2 分別賦予了零維tag 屬性1 和2。將所有的散點映射到組合面上,形成包含一系列硬點的面域S′。至此,散點1 和2 映射至面1 上(圖4)。布爾等操作下tag屬性除刻意覆蓋外,均具有屬性不變性。即經過幾何布爾、切分等操作后,點、線、面、體的tag 屬性信息仍為初始幾何對應維度的tag 信息。屬性不變性意味著可方便地追溯到Si’原始艙室和對應的編號。圖4 映射后形成的新面包含6 個頂點,其中1~4 邊界點屬于原始四邊形的頂點,并未標注任何零維信息,5 和6 點對應原來的散點1 和2(即艙室編號和艙室名稱)。

圖4 艙室屬性識別Fig. 4 Cabin property identification

2) 提取S′的所有子面Si′,依次處理直到實現艙室名稱與艙室邊界逐一對應。

3) 劃分艙室的子艙。對艙室的輪廓點進行x向排序,并在每個中間站位增加一條硬線,將艙室打斷成子艙。如圖5 所示,圖中的多邊形艙室通過2 根硬線打斷成了3 個四邊形區域,這3 個區域就是3 個子艙。

圖5 艙室分割Fig. 5 Compartment segmentation

4) 對頂部、底部相同艙室編號的艙室進行匹配處理。為了實現映射匹配,需要對子艙及其頂點進行排序。子艙的創建是基于x方向分割實現的,x向分段編號依次為1,2,3,···,取子艙的形心位置y,取d=x+y/1 000。對所有子艙基于d值的大 小 進 行 排 序(1 000 表 示 船 寬 不 超 過1 000 m,y/1 000<1)。如圖6 所示,實現了在xy平面上的排序。

圖6 艙室頂點xy 平面排序Fig. 6 Cabin vertex sorting on xy plane

對子艙頂點排序,判別式為d=x+y/1 000,四邊形子艙由點1,2,4 和3 組成,三角形子艙由點1~3 組成(圖7)。

圖7 艙室頂點的排序示意圖Fig. 7 Cabin vertex sorting

兩次排序后,就可以進行頂部、底部子艙的映射判斷。圖8 中4 和3 代表相應子艙的構成是四邊形還是三角形。子艙信息采用多段線的方式描述子艙截面,圖中節點編號為空表示艙室編號缺失,一般為圖紙中存在的問題區域。

圖8 子拓撲面檢查Fig. 8 Checking sub-topology

4 三維艙室建模

基于修正后的艙室數據和船體外形構建三維艙室模型,便于后續的艙室修正及艙室肋骨型值的輸出,為不沉性計算等提供信息。三維艙室建?;趐arasolid 內核的自研程序完成。

基于parasolid 內核的三維艙室建模輸入信息包括以下內容。

1) 擴大邊界的甲板信息,單層甲板信息格式如表2 所示。

表2 單層甲板信息及格式Table 2 Single deck information and format

2) 與甲板對應的擴大邊界的艙室信息。格式如下,艙室名稱、艙室上下面的二維邊線信息(上下表面均為四邊形,各邊均允許為樣條線,每一個括號內為一條邊線的控制點)。如表3 所示。

表3 擴大邊界的艙室信息及格式Table 3 Cabin information and format of the expanded boundary

基于parasolid 內核的三維艙室建模程序算法流程如下:

1) 基于艙室上、下面的二維信息及上、下甲板高度,構建艙室的六面體實體模型(如圖9 中陰影實體);

圖9 三維艙室實體模型自動建模Fig. 9 Automatic physical modeling of 3D cabin

2) 計算六面體實體的包圍盒,搜索外形面與該包圍盒干涉的子面,與該六面體完成修剪操作,修剪點x的坐標取船舯x,y坐標為0,z坐標為100。修剪后的實體即為艙室實體(圖10)。

圖10 三維艙室自動建模(橫剖圖)Fig. 10 Automatic modeling of 3D cabin (cross section)

通過網格填充相鄰截面的方式生成的船體外形,在球鼻艏處和艉軸孔處是不封閉的。當艙室部分區域與這兩處存在交集時,無法通過修剪操作獲得正確的艙室邊界,可先將中縱剖線雙向拉升成如圖11 所示的修剪面。利用該修剪面修剪一次六面體子艙,然后再利用船體外形進行艙室修剪即可。

圖11 三維艙室自動建模(修減面)Fig. 11 Automatic modeling of 3D cabin (tailoring section)

利用網格面做船體外形進行布爾運算,每個截面大概有近200 個型值點,而復雜船型又有數百個截面,因此參與布爾運算的網格面可能達到四、五萬個。如布爾運算模型不進行優化,生成一個艙室就需要數秒鐘,數千個艙室的生成往往需要較長時間,這種速度很難滿足工程需求。這里采用外形和艙室分級處理的布爾方式提升艙室實體的計算效率(圖12)。

圖12 分級布爾運算Fig. 12 Hierarchical Boolean operation

5 三維艙室截面型值輸出

若要利用現有的靜力性能計算軟件、不沉性計算軟件,則需輸入艙室外形。本研究恰恰可以提供艙室外形。鑒于上述軟件一般利用肋骨線描述艙室形狀,因此,基于二維總布置信息的三維艙室自動建模技術還需要實現三維艙室截面型值的輸出,可為其他計算軟件提供輸入(圖13)。修正完成的三維艙室,可以通過布爾運算直接截出二維的子艙截面,并根據需要自行加密(圖14)。

圖13 三維艙室型值輸出Fig. 13 Output results of 3D compartment offset

圖14 多段線描述子艙截面輸出Fig. 14 Section output of multi-segment description sub-cabin

6 三維艙室應用案例說明

1) 基于三維艙室的數據輸出。

基于該系統實現了三維艙室的數據輸出,如圖15~圖16 所示。

圖15 三維艙室建模數據輸出Fig. 15 Data output of 3D cabin modeling

圖16 三維艙室局部圖Fig. 16 Local view of 3D cabin modeling

2) 艙室數據的查詢及數據管理。

艙室數目眾多,進行屬性定義的工作量非常繁重,極易出錯,針對這個問題,提供了查詢和批量處理功能(圖17)。

圖17 艙室屬性處理Fig. 17 Treatment of cabin attributes

7 結 語

本文提出一種基于二維總布置圖信息的三維艙室自動建模技術,實現布置信息的自動收集和分析功能,具有以下用途:

1) 適應人工智能及智能設計的需求,方便實現大量總體方案的數據快速分析及建模,為采用智能算法進行方案評估及優化創造了一種新的技術途徑;

2) 適應二維甲板分層布置圖和三維設計方案之間的數據自動交互功能,為三維艙室建模提供了快捷的數據轉化渠道;

3) 自動數據收集功能可為總體設計中的艙室容積分析、不沉性計算等提供預處理數據,從而能夠有效提高計算及設計效率,并提升設計質量。

依據本方法開發的軟件通過軟件測試驗證了該技術的可行性和良好效果,可簡化相關總體設計工作的工作量,有效提高設計中相關工作的計算效率和設計效率,為總體方案的智能設計等提供樣本數據。

猜你喜歡
艙室邊界建模
艙門振動對艙室噪聲特性影響研究
守住你的邊界
物理建模在教與學實踐中的應用
在經歷中發現在探究中建模
艦炮彈藥連續內爆對艙室毀傷效應的仿真分析
聯想等效,拓展建?!浴皫щ娦∏蛟诘刃鲋凶鰣A周運動”為例
“新永安”號客滾船整體艙室空調系統設計
求距求值方程建模
有邊界和無邊界
OF MALLS AND MUSEUMS
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合