朱安慶, 杜兆陽 , 何 佳
(1. 江蘇科技大學(xué) 船舶與海洋工程學(xué)院, 江蘇 鎮(zhèn)江 212003;2.江蘇現(xiàn)代造船技術(shù)有限公司, 江蘇 鎮(zhèn)江 212003)
CATIA是法國達索公司旗下的CAD/CAE/CAM一體化軟件,其功能覆蓋了產(chǎn)品設(shè)計制造的各個方面[1]。近年來CATIA發(fā)布了V6版本,更進一步增強了多學(xué)科系統(tǒng)建模和仿真功能。為更好地發(fā)揮CATIA的模型性能,將CATIA軟件中生成的模型傳輸?shù)狡渌嚓P(guān)軟件中,達到模型數(shù)據(jù)共享,提高設(shè)計效率,研究CATIA軟件船體模型與其他CAD軟件的數(shù)據(jù)交換就顯得十分必要。
本文基于CATIA V6設(shè)計軟件中的結(jié)構(gòu)設(shè)計數(shù)據(jù)結(jié)構(gòu),通過STP中間文件分析船體模型數(shù)據(jù)組成,提取模型產(chǎn)品數(shù)據(jù),并以CATIA設(shè)計軟件導(dǎo)出的STP文件數(shù)據(jù)組織結(jié)構(gòu)為依據(jù),運用OpenCasCade(OCC)第三方開源包編寫解析程序,生成可以驗證的三維幾何模型[2]。
CATIA作為一款國際流行的三維設(shè)計軟件,功能齊全,具有強大的混合建模能力,模型的細節(jié)表達及虛擬仿真功能也非常完善[3-4],它的基本功能模塊及集成應(yīng)用模塊的產(chǎn)品結(jié)構(gòu)模型表達如圖1所示。產(chǎn)品作為最高級的組織,由若干子產(chǎn)品、部件、零件組成,其中:部件由許多的零件通過它們之間不同的約束關(guān)系組成;零件是整個產(chǎn)品模型的最底層結(jié)構(gòu),由許多實體組成,其中包含了組成該零件的幾何及非幾何信息。本文討論以CATIA中建立的船體模型輸出STP文件,分析其結(jié)構(gòu)組成,獲取船體模型數(shù)據(jù),利用OCC第三方開源包,編寫解析程序,實現(xiàn)模型重建[5]。
圖1 CATIA產(chǎn)品模型結(jié)構(gòu)
STP文件格式滿足STEP模型交換標準,模型數(shù)據(jù)覆蓋產(chǎn)品整個生命周期中所有數(shù)據(jù)元素,包括為進行設(shè)計、分析、制造、測試、檢驗和產(chǎn)品支持而全面定義的零部件或構(gòu)件所需的幾何、拓撲、公差、關(guān)系、屬性和性能等數(shù)據(jù)。因此,選用這種輸出文件作為數(shù)據(jù)源進行分析能準確得到模型數(shù)據(jù)信息。
STP文件由ISO-10303-21開始,由END-ISO-10303-21結(jié)束[6],每1行數(shù)據(jù)由基本字符串組成,其中包含了表示特定意義的標識符、關(guān)鍵字和數(shù)據(jù)信息等,整個文件從結(jié)構(gòu)上分為頭部分和數(shù)據(jù)部分。
頭部分主要是對整個交換文件的基本信息進行描述,如用戶、工程名、日期、文件版本等信息,以HEADER開頭,以ENDSEC結(jié)尾。數(shù)據(jù)部分是STP文件的主體部分,是對各個實體信息描述的集合,主要對具體模型信息進行描述,以DATA開頭,以ENDSEC結(jié)尾。本文主要針對數(shù)據(jù)部分對文件進行解析,獲取模型數(shù)據(jù)結(jié)構(gòu)。
數(shù)據(jù)部分是各實體描述的集合,采用擴展邊界表示法來描述實體。通過對導(dǎo)出的多個STP文件進行分析,總結(jié)出STP文件中對一般實體的表示格式是:
#數(shù)字=實體關(guān)鍵字(‘實體名稱’,屬性1,屬性2,…);
例如:
#38=CARTESIAN_POINT('Vertex',(58 200.,-2 800.,12 000.));
從這行數(shù)據(jù)中可以得出:標識符38表示的是1個點,該點為某直線的頂點,由坐標(58 200.,-2 800.,12 000.)確定位置。
不同實體實例通過其屬性的組成進行聯(lián)系,例如:#121=LINE('Line',#118,#120),其中#121表示的是1條線,括號內(nèi)是該標識符下的實體名稱——線及括號內(nèi)組成這條線的2個屬性,這2個屬性用標識符表示,繼續(xù)查找括號內(nèi)屬性值所代表的實體,得到組成這條線的其他信息,最終完整實體實例。
STP文件描述的CATIA模型數(shù)據(jù)結(jié)構(gòu)可分為3類,分別是幾何信息、拓撲信息及屬性信息,其中幾何信息和拓撲信息是STP文件中描述模型數(shù)據(jù)結(jié)構(gòu)的核心部分,也是實體造型的基礎(chǔ)數(shù)據(jù)。通過分析文件中的這些數(shù)據(jù)來完成幾何實體的構(gòu)造。
(1) 幾何信息。文件中定義的幾何信息包括點、線、面等幾何元素,如:點包含笛卡爾點;線包含直線、B樣條曲線、圓、曲線等;面包含曲面、平面、B樣條曲面等;此外,還有方向、矢量、方位等的定義。文件中這些幾何元素通過實體關(guān)鍵字來區(qū)別定義,具體的幾何元素關(guān)系如圖2所示。
(2) 拓撲信息。文件中的拓撲信息包含實體間的連接、鄰接關(guān)系,這種拓撲關(guān)系描述了幾何上的點、線、面等元素的相鄰關(guān)系。文件中定義的拓撲元素主要有殼、面、環(huán)、邊、頂點,具體的拓撲元素關(guān)系如圖3所示。
圖2 幾何實體元素關(guān)系
圖3 拓撲實體元素關(guān)系
通過分析總結(jié),STP文件中描述模型產(chǎn)品的實體主要有:笛卡爾點(CARTESIAN_POINT)、頂點(VERTEX_POINT)、方向(DIRECTION)、矢量(VECTOR)等,通過查找各實體的關(guān)鍵字,找到各實體間的幾何及拓撲關(guān)系來完整地描述模型實體信息。
下面以CATIA軟件建立的板材模型為例,導(dǎo)出STP格式的文件,對相應(yīng)的STP文件進行分析,確定數(shù)據(jù)組織結(jié)構(gòu)。
在CATIA中建立船體平面板架模型,如圖4所示,并基于此對船體模型進行數(shù)據(jù)分析。
圖4 平面板架模型
在STP文件的基本組成中,STP文件表達模型數(shù)據(jù)分為幾何體定義和幾何信息定義等2部分,文中僅對其所表達的數(shù)據(jù)結(jié)構(gòu)中的幾何體定義內(nèi)的信息進行分析。分析平面板架的STP文件,得出平面板材的表達是通過在一個大表面上定義一個閉合邊界來確定面的具體形狀和位置。
文件中一個平板實體是一個高級面(ADVANCED_FACE)組成,同時在STP文件中,表示高級面的這行數(shù)據(jù)內(nèi)有命名這個平板的名稱,通過這行數(shù)據(jù)可以得到需要的板的屬性信息,例如:
#328=ADVANCED_FACE('DECK_9 000 A.BL_0 mm_8 mm_STEEL A235',(#327),#56,.T.) ;
從這條數(shù)據(jù)中可以得出:這個高級面所定義的是1個命名為DECK_9 000. BL_0 mm_8 mm_STEEL A235的甲板面,可從中得到需要的信息。高級面由1個面的邊界(FACE_OUTER_BOUND)和1個幾何曲面(PLANE)組成,這里的PLANE就是1個在某高度上無限大的面,相當(dāng)于1個大表面;面的邊界(FACE_OUTER_BOUND)由多個邊界環(huán)(EDGE_LOOP)組成,邊界環(huán)由多個有向邊(ORIENTED_EDGE)組成,根據(jù)不同面的具體形狀,STP文件會按照STEP標準劃分不等數(shù)量的有向邊;不同的有向邊之間首尾相連形成封閉邊界環(huán)。每個有向邊由1個邊界曲線(EDGE_CURVE)組成,邊界曲線由2個頂點(VERTEX_POINT)和表示邊的幾何曲線(LINE)組成,這里的頂點分別是起始點和終止點,2點連線即為邊界曲線,幾何曲線由1個起點(Line Origine)和矢量(VECTOR)組成,幾何曲線方向表示該邊界曲線的方向。在平面板材中,通過這些實體組成的邊界來描述具體的平板。
對于不同的平面,數(shù)據(jù)結(jié)構(gòu)在STP文件中的表達均是如此,平面板材數(shù)據(jù)組織結(jié)構(gòu)如圖5所示。
圖5 平面板材數(shù)據(jù)結(jié)構(gòu)
對CATIA的STP文件的解析采用開發(fā)外插程序的方法進行,對STP文件進行預(yù)處理,遍歷整個文件,以分割字符串的方法將文件中的數(shù)據(jù)按不同的實體進行分類,具體的流程如圖6和圖7所示。
圖6 文件處理流程
圖7 字符串分割具體流程
完成文件中不同實體的數(shù)據(jù)處理后,對提取出來的數(shù)據(jù)按照船體結(jié)構(gòu)的特點進行重新組織。判斷該實體是否為板材、型材、肘板、面板等,根據(jù)判斷結(jié)果進行不同的處理,得出相應(yīng)信息,將相關(guān)數(shù)據(jù)信息保存到相應(yīng)的零件節(jié)點下,完成數(shù)據(jù)提取,并輸出.txt文件以便驗證數(shù)據(jù)的準確性。處理流程如圖8所示。
示例結(jié)構(gòu)的.txt文件生成如下:
#328 ADVANCED_FACE
NAME: DECK_9 000 A.BL_0 mm_8 mm_STEEL A235 //節(jié)點名稱
H: 9 //高度
Thick: 8 //厚度
Material: A235 //材料
#327 FACE_OUTER_BOUND: //板邊界
#316 EDGE_LOOP //邊界環(huán)
#317 ORIENTED_EDGE //邊界曲線,以B樣條曲線描述
圖8 實體模型處理
#57 B_SPLINE_CURVE_WITH_KNOTS:CARTESIAN_POINT(71.200 000 8.172 622 9.000 000) …… //省略若干坐標
#318 ORIENTED_EDGE
#69 B_SPLINE_CURVE_WITH_KNOTS:CARTESIAN_POINT(81.399 000 3.280 384 9.000 000) ……
STP格式文件通用CAD文件交換格式,遵守STEP標準,可運用開源OCC對CATIA導(dǎo)出的STP文件進行模型重建。OCC將類庫中有關(guān)聯(lián)的類封裝成1個包(Package),這個包被翻譯成動態(tài)鏈接庫,為開發(fā)者提供所需的接口函數(shù)。OCC中獨立的STEP數(shù)據(jù)交換模塊可以讀取、寫入STEP標準文件中數(shù)據(jù)模型的幾何、拓撲、屬性等信息,并進行三維模型的重建。本文運用OCC工具編程,將STP文件中的數(shù)據(jù)模型映射成OCC數(shù)據(jù)模型,通過OCC數(shù)據(jù)模型的重建來實現(xiàn)對STP文件中數(shù)據(jù)模型的三維重建。STP文件中數(shù)據(jù)模型的拓撲實體與OCC對象之間的映射關(guān)系如圖9所示,幾何實體與OCC對象之間的映射關(guān)系如圖10所示。
圖9 STP文件中拓撲實體與OCC對象之間的映射
圖10 STP文件中幾何實體與OCC對象之間的映射
在文件的解析過程中,生成能夠驗證的OCC幾何實體模型集,對OCC幾何模型集進行遍歷解析,獲取幾何信息,實現(xiàn)CATIA導(dǎo)出的STP文件的船體三維實體模型重建。以本文所建立的平面板架為例,驗證本文利用OCC所開發(fā)解析程序的有效性。本程序的流程圖如圖11所示,船體結(jié)構(gòu)平面模型重建效果圖如圖12所示。
圖11 程序流程
圖12 基于OCC的船體結(jié)構(gòu)模型重建效果圖
本文通過對CATIA軟件導(dǎo)出的STP文件進行分析,間接得到了CATIA中模型的幾何、拓撲及其相關(guān)屬性等信息。在文件解析過程中,采用分析中性文件的方法,提取出模型的數(shù)據(jù)信息,提高了后續(xù)開發(fā)CATIA軟件與其他軟件的數(shù)據(jù)交換接口程序的獨立性,減少數(shù)據(jù)分析過程中對軟件的依賴性。同時,利用OCC第三方開源包,編寫解析程序,實現(xiàn)CATIA導(dǎo)出的STP文件的船體三維實體模型重建。