方雄兵
中國艦船研究設計中心,湖北武漢430064
FORAN導出的JT模型特征節點合并算法
方雄兵
中國艦船研究設計中心,湖北武漢430064
[目的]由于FORAN V70 R2.0(及以上版本)輸出的JT模型中存在很多同名的特征節點,導致采用間隙分析軟件對其進行分析時時間消耗加大且間隙分析結果難以處理。針對該問題,[方法]在研究FORAN導出的JT文件裝配結構和蘊含信息(幾何信息、材料屬性信息等)的基礎上,提出一種特征節點合并算法。該算法由坐標變換、模型節點更名、節點幾何數據移動和材料屬性處理4個步驟構成。然后,利用C++及JT Open Toolkit實現所提出的算法。[結果]結果顯示,利用該算法處理后的JT模型只包含1個裝配節點且保留了原始JT模型的內在信息,可為后期間隙分析提供有效的輸入數據。[結論]大量的實例驗證了所提出算法的有效性,處理后的JT文件大小可減少7%~20%。
JT模型;裝配層次;特征合并;圖形變換;間隙分析;可視化
當前,大型復雜產品的數字化設計技術已從二維CAD圖逐步過渡到以三維模型為主并向數字樣機、虛擬產品與過程、協同式設計與建造的方
向邁進。三維CAD模型作為產品設計與建造的基礎,其輕量化和簡化處理對于數據交換與傳輸[1]、工程仿真與分析[2-3]、可視化協同[4]、虛擬展示與訓練[5-6]等應用均有重要意義。在實際工程應用中,基于具體的軟件和(輕量化)模型開展應用時,通常需要對模型進行一定的處理。利用FORAN軟件導出的零件JT模型開展艙室或區域內零件之間的間隙分析時,發現零件JT模型的裝配結構中包含多個同名特征節點,使得間隙分析的時間增加、問題記錄難以處理,因此需要對其進行處理。
國內外學者在 STEP,IGES,3DXML,JT等格式模型的處理與應用方面開展了大量工作。王永劍[7]介紹了國外STEP標準的應用動態以及接口實現方法。李玉剛等[8]分析了STEP(標準號:ISO 10303)在船舶領域的標準化與應用情況。王曉斌等[9]針對達索的3DXML格式內容進行了深入研究。黃靖等[10]研究了常用CAD軟件導出的IGES格式模型內容,提出了基于圖表示與產生式規則的IGES數據交換算法。張西廠等[11]研究了基于JT的航空發動機圖解圖生成方法。殷明強等[12]研究了在不改變裝配模型格式和外觀前提下,裝配體輕量化的方法。上述工作為JT文件的深入研究和應用提供了參考。
JT作為一種新的國際標準格式,已被眾多商用軟件所支持。為解決FORAN導出的JT模型存在較多同名特征節點而不適合間隙分析的問題,本文將在分析FORAN導出的零件JT模型裝配及內蘊信息的基礎上,基于齊次坐標與矩陣變換[13],提出一種特征節點合并算法。該算法可對同名的特征節點進行合并,對保留的唯一節點進行更名。并且,將用應用案例表明,處理后的零件JT模型裝配結構中只有一個節點、更加輕量化,能夠滿足后續間隙分析需要。
1.1 ISO JT標準格式簡介
JT是德國西門子公司推出的一種輕量化文件格式,目前已被國際標準化組織(ISO)認定為國際標準(ISO IS 14306:2012)。該格式提供了一種高效的3D產品定義方法,可在產品設計、仿真、制造以及后期技術支持等更大范圍內應用于協作、驗證與可視化。
JT文件由一序列的塊或片段所構成,其基本結構如圖1所示,包括:文件頭(File header)、內容目錄段(TOC segment)和數據段(Data segment)。文件頭始終在文件最前的位置,而TOC的位置則可以在文件中間緊隨文件頭,也可以在文件的末尾。完整的JT文件,其數據段內容非常豐富,包含邏輯場景圖(LSG)、形狀細節層次段、JT邊界表示段、XT邊界表示段、線框段、元數據段、產品制造信息段等。在JT模型數據定義中,經常使用以下幾種坐標系統,包括局部坐標系、節點坐標系、世界坐標系和視點坐標系。當前,眾多的成熟商用軟件均提供了JT數據的導入/導出接口。

圖1 JT文件基本結構Fig.1 General hierarchy of JT files
1.2 FORAN導出的JT模型分析
1.2.1 JT模型裝配結構分析
西班牙SENER公司的造船軟件FORAN V70 R2.0(以下簡稱FORAN)提供了導出JT格式三維模型的功能,導出方法有2種:一種是手工操作方式,在FORAN軟件中打開需要轉換的模型,點擊JT導出功能菜單,將打開的模型導出為JT;另一種是基于腳本的轉換方式,即通過轉換命令形成的腳本完成模型的輕量化轉換。通過開發這種轉換腳本文件的生成工具,可生成基于一定導出規則的JT轉換腳本,利用該腳本,可批量導出全船JT模型。
導出的粒度也存在多種形式:1)結構和基座可以分段形式導出;其他模型(設備、水管、風管、電纜、電纜托架等)以區域/系統方式導出為一個整體的JT文件,該文件包含了大量的零件級模型;2)可以選擇單個零件三維模型并導出為JT。前一種形式導出的JT文件通常包含數量較多的零件,如一個區域內所有的設備,可對其進行分解,生成零件級的JT模型,如1個設備、1根管子、1個T型材。如圖2所示,利用JT可視化瀏覽工具,可以看出導出的零件級JT文件裝配結構為3級,第1級為根裝配節點(默認節點),第2級為零件級裝配節點,第3級為特征裝配節點。特別地,第2級零件級節點下存在數量眾多的同名(如Para?metric和Polyhedron)特征節點。
1.2.2 JT模型內容分析
進一步地,通過對圖2(a)中的JT文件內容進行分析,發現其文件內部結構及各部分的主要信息如表1所示。

圖2 FORAN導出的原始JT模型Fig.2 Original JT models exported by FORAN
根據表1,FORAN導出的JT文件基本結構為一個JtkAssembly(即名稱為E CM-ES-1的零件級裝配)節點下掛若干個JtkPart節點(即名稱為Parametric和Polyhedron的特征節點),JtkPart包含具體的幾何模型數據,主要信息有:該特征節點的版本、ID號、單位、變換矩陣(齊次坐標表示)、LOD層級、形狀面片頂點、形狀法向量、材料屬性等。如圖3所示,借助TC Visualization Mockup(以下簡稱Vis Mockup)高級功能(操作—檢查器),可以查看特征節點(即JtkPart節點)下的數據。每個JtkPart節點下有多個細節層次,每個細節層次下又包含一定數量的面片(即JtkShape)。
綜上,FORAN導出的JT模型裝配結構如圖4所示。
基于Vis Mockup開展2個零件JT模型的間隙分析時,Vis Mockup會將第1個JT模型的每個特征節點(JtkPart)與第2個JT模型的每個特征節點進行間隙計算(只進行到這一級)。然而,FORAN導出的JT模型裝配結構中往往存在多個同名的JtkPart特征節點,如Parametric,Polyhedron或是一些不規范命名的節點,導致在后期進行間隙分析時需要分析計算的JtkPart對數較多,分析時間增長,且間隙分析結果記錄項(Parametric,Parametric,距離值,……)中的特征節點無法與其所屬的零件名稱(零件A,零件B)一一對應,導致兩個JT模型的間隙分析結果難以處理。假設,參與間隙分析的兩個零件JT模型分別包含m和n個JtkPart,則在間隙分析時需要計算m×n對JtkPart之間的距離值,并對m×n個間隙記錄項進行分析處理。
因此,要提高JT模型的間隙分析和結果處理效率,需要對FORAN導出的零件級JT模型進行以下處理:將JT模型中的特征節點(JtkPart)進行合并,合并后的JT模型只有1個特征節點,且其名稱與合并前的JT模型名稱相同,即與上一級的Jt?kAssembly節點同名。

圖3 特征節點下包含的信息Fig.3 Information beneath the part node

圖4 FORAN導出的JT模型詳細裝配結構Fig.4 Detailed assembly structure of JT models exported by FORAN
3.1 問題分析
通過對FORAN導出的JT模型文件內容的分析,可以看出JT文件基本結構為一個JtkAssembly(如圖 2(a)中的 E CM-ES-1)節點,下掛若干個JtkPart節點,如圖2(a)中的多個 Parametric節點,圖2(b)中的多個Polyhedron節點。JtkPart節點包含具體的幾何模型數據,即JtkShape面片的頂點、法向量。由于JtkAssembly節點不能直接包含幾何模型數據,所以要完成合并操作必須保留一個JtkPart節點,而將其他所有JtkPart下的幾何數據都合并到這個保留的JtkPart下,并將保留的JtkPart進行輸出。除合并幾何數據外,還需要對材料屬性等信息進行處理,并將唯一保留的JtkPart更換為上一級JtkAssembly的名稱,如圖 2(a)中的ECM-ES-1。
要實現對JtkPart幾何數據的合并,需要解決以下關鍵問題:零件級(JtkAssembly)節點下存在多個JtkPart節點,每個節點均有自己獨立的坐標系,即各自的變換矩陣JtkTRANSFORM;若直接將幾何數據復制到保留的JtkPart節點下,會導致頂點位置及法向量錯誤。為實現幾何數據正確合并,需要將被移動的JtkPart節點坐標系與保留的JtkPart節點坐標系進行統一。處理該問題可采用如下2種方式:1)將其他JtkPart節點幾何數據統一到保留的JtkPart節點局部坐標系中,這種方式需要完成變換矩陣求逆以及2個矩陣相乘[13],并將結果矩陣應用于其他所有JtkPart節點下的幾何數據;2)將所有JtkPart節點下的幾何數據均統一到世界坐標系中,即將各JtkPart節點變換矩陣應用到各自的幾何數據上。從計算量考慮,本文采用第2種方法。
JtkPart節點幾何數據合并處理流程簡單描述如下。
1)對于每一個JtkPart節點,將其變換矩陣(JtkTRANSFORM)應用到其下所有的幾何數據(頂點和法向量)上,即所有的幾何數據均以世界坐標系為參照,然后將該變換矩陣設置為單位矩陣。
2)保留第 1個 JtkPart節點,將第 2~n個JtkPart節點的幾何數據合并到第1個JtkPart節點下,并將第2~n個節點從上級JtkAssembly節點下移除。
3.2 算法設計與描述
3.2.1 算法設計與分析
綜合上述分析,FORAN導出的JT模型進行特征節點合并需要解決以下問題:1)JtkPart節點幾何數據與屬性信息的移動;2)若存在多個JtkPart節點,需要將被合并的JtkPart節點數據刪除;3)合并后將保留的JtkPart節點更名,并將上一級JtkAssembly節點移除或者返回保留的JtkPart節點。完整的JT特征節點合并處理過程見JT模型特征節點合并算法(以下簡稱“JT合并算法”),具體如下。
輸入:FORAN V70 R2.0導出的JT模型。
輸出:裝配結構只有1個名稱為零件名的JtkAssembly節點,且保留原始模型幾何數據和屬性信息的JT模型。
處理過程:
1)計算JT裝配中特征節點JtkPart的數量numofPart;
2)將第1個JtkPart的變換矩陣應用到其下各個細節層中所有JtkShape下的數據上,即所有幾何數據的坐標為世界坐標;將第1個JtkPart更名為上一級的JtkAssembly節點名稱,即FORAN導出的JT模型的名稱。
3)將第i(2~numofPart)個JtkPart的變換矩陣應用到其下各個細節層中所有JtkShape下的數據上,與2)中操作相同;將第i(2~numofPart)個Jtk?Part幾何數據移動至第1個JtkPart下;將第i(2~numofPart)個JtkPart的材料屬性應用到其下各個細節層中所有JtkShape數據上;將第i(2~nu?mofPart)個JtkPart放入至1個隊列remChild中。
4)將remChild中的所有JtkPart數據移除。
5)返回第1個JtkPart的指針。
對上述JT合并算法進行分析,其計算復雜度為 O(numofLOD×numofShape*(numofVertex+nu?mofNormal)),其中 numofLOD 為每個 JtkPart的細節層次,numofShape為每個細節層中JtkShape的數量,numofVertex和numofNormal分別為每個JtkShape的頂點數量和法向量數量。通常情況下,對FORAN導出的JT模型,其numofLOD為3,每個細節層中包含的JtkShape數量均相同,每個JtkShape為一個多邊形,有3或4個頂點,即numof?Vertex和numofNormal為常數3或4。在采用齊次坐標表示時,JtkShape各個頂點和法向量均有4個分量。因此,JT合并算法計算復雜度為一個關于JtkShape數量的線性函數 O(numofShape),而JtkShape數量numofShape取決于CAD軟件表達幾何體外觀的精細程度以及幾何體自身的平滑程度。
3.2.2 算法描述
下面采用偽代碼對JT合并算法進行描述。表2中,各主要函數原型定義如下。
PARTS_MERGE(JtkAssembly*assembly)將assembly指向的裝配節點下的其他JtkPart特征節點移動到第1個JtkPart節點下,對第1個特征節點進行更名,即保留第1個節點,最后將該特征節點指針返回。
APPLY_TRANSFORM (JtkPart* part, Jtk?Transform*pxform)將變換矩陣pxform應用到part下各細節層中所有JtkShape下的數據上。
SET_PART_NODE_NAME(JtkHierarchy*part0,const char*newname)將part0指向的特征節點賦值為新的名稱newname,本算法中newname為零件的名稱。
MOVE_SHAPES(JtkPart*parSource,JtkPart*parDest)將parSource中的幾何數據移動到特征節點parDest下。
APPLY_MATERIAL(JtkPart*part,JtkMateri?al*material)將material中的材料屬性應用到part指向的特征節點下所有的幾何數據上。
4.1 節點處理工具設計
考慮到船舶零件數量大的特點,節點合并工具應具備對FORAN導出的零件級原始JT模型進行批量處理的功能,處理后的JT存儲于本地公共文件夾中。節點合并處理工具界面如圖5所示,用戶選擇文件或文件夾選項后,可進一步選擇本地需要處理的原始JT文件(要求:該JT為零件級)。基于Visual Studio 2010,采用C++語言以及JT Open Toolkit提供的API實現了JT合并算法。
4.2 案例與討論
4.2.1 測試案例
選擇FORAN導出的JT模型,對所提出的算法進行驗證,具體步驟如下。
1)選擇本地需要進行節點合并處理的JT文件,可以是單個分解處理后的JT文件或包含多個JT文件的文件夾。如圖6所示,選擇圖2(b)中的基座模型C: empAS-****-XX13JZ.jt為例,說明節點處理工具的用法。該模型處理前文件大小為33.9 kB,包含27個JtkPart節點。
2)選擇“確定”,如圖7所示,對JT文件進行節點合并處理。
3)節點合并后的JT文件存放在默認的文件夾中。如圖8所示,利用JT Vis Mockup 10.1打開節點合并處理后的AS-****-XX13JZ模型文件,可以看到該基座模型只有1個頂級裝配節點,其下無其他節點。

表2 JT模型特征節點合并算法偽代碼描述Table 2 Pseudo-code description for the algorithm of merging part nodes of JT models

圖5 特征節點合并工具界面Fig.5 Interface of part nodes merging tool

圖6 選擇需要進行節點合并的JT文件Fig.6 Choosing JT files for part nodes merging

圖7 JT模型特征節點合并過程信息Fig.7 Process information of JT model in process of part nodes merging
JtkPart節點合并處理后,AS-****-XX13JZ.jt模型大小為27 kB,只有1個節點。以下給出了其他一些測試案例,如圖8~圖11所示,從圖9(b)、圖10(b)和圖11(b)可以看出,處理后的JT只包含1個節點。處理前、后模型數據對比如表3所示。

圖8 特征節點合并后的JT模型Fig.8 JT model after part nodes merging

圖9 設備JT模型節點合并處理前后對比(編號3)Fig.9 Comparison of an equipment's JT model before and after part nodes merging(No.3)

圖10 結構JT模型節點合并處理前后對比(編號8)Fig.10 Comparison of a structure's JT model before and after part nodes merging(No.8)

圖11 結構JT模型節點合并處理前后對比(編號10)Fig.11 Comparison of a structure's JT model before and after part nodes merging(No.10)
從表3可以看出,FORAN導出的原始零件級JT模型經過節點合并處理后,文件大小減少了7%~20%,相比未處理前更加輕量化。圖9~圖11分別為表3中編號為3,8和10的零件級JT模型進行節點處理前、后的對比。其中,結構類原始零件級JT模型通常只有1個特征節點,通過對特征節點下的細節層次以及三角形面片數量進行分析,發現編號為8的模型與編號為10的模型相比,其Part節點數量均為1,細節層次數量均為3,每個細節層次包含的面片(JtkShape)數量分別為28和1 124。
從表3以及對JT模型內部信息進行深入分析發現,表3中JT模型輕量化百分比大小與模型包含特征節點數量、細節層次、各層的三角形面片數、材料信息大小等有關。模型建模精度越高,包含的特征節點數量以及三角形面片數越大,從而輕量化率越高。

表3 JT模型特征節點合并處理前、后數據對比Table 3 Comparison of data before and after part node merging of JT models
4.2.2討論
1)利用JT合并算法處理后的JT模型(零件級)只包含1個特征節點,保留了原始JT模型的名稱、所有幾何數據和材料屬性等信息。
2)在完成節點合并處理后,2個零件級JT模型之間間隙分析計算次數變為1,其問題記錄項數量為1或0,記錄項主要元素為“(零件A的名稱,零件B的名稱,距離值,……)”,根據問題記錄項的元素可準確定位到具體零件上。
3)盡管本文提出的算法主要針對FORAN V70 R2.0(及以上版本)導出的JT模型,然而當前很多格式定義的三維模型在裝配結構上與JT非常類似,如3DXML,SMG格式,論文所提出的算法對于其他軟件導出的JT以及其他格式定義的三維模型裝配結構與幾何數據處理問題也有一定的借鑒意義,如SMG,3DXML,STEP等格式。
JT作為一種國際標準格式,其包含的信息非常豐富,對船舶這類零部件數量大的應用領域而言,可以支持大場景模型的高效可視化以及全生命周期的協同。本文對FORAN導出的JT模型存在大量同名特征節點而導致后續的間隙分析效率低、結果難以處理的問題進行了專門研究,給出了一種節點合并算法,處理后的JT模型只包含1個節點,保留了原始JT所有的幾何與材料屬性等信息,并且比處理前的JT文件大小減少了7%~20%,為支持船舶等領域大裝配的應用,如船舶艙室三維模型間隙分析、可視化、虛擬維修與培訓等,提供了有效的輸入數據。大量仿真案例驗證了所提出算法的有效性。
[1]王啟富,賈成,劉俊,等.三維CAD模型中自由曲線曲面無損壓縮算法[J].計算機輔助設計與圖形學學報,2007,19(9):1200-1205.WANG Q F,JIA C,LIU J,et al.Lossless compres?sion of free-form curve and surface in CAD models[J].Journal of Computer-Aided Design&Computer Graph?ics,2007,19(9):1200-1205(in Chinese).
[2]劉清華,李帥,劉云華,等.協同環境中基于輕量化的3D異構CAD模型干涉檢查[J].中國機械工程,2013,24(1):56-60,77.LIU Q H,LI S,LIU Y H,et al.Collaborative support?ed 3D heterogeneous CAD model interference check?ing based on lightweight model[J].China Mechanical Engineering,2013,24(1):56-60,77(in Chinese).
[3]姜麗萍,陳文亮,黃大興.基于輕量化模型的飛機裝配過程虛擬仿真方法[J].航空制造技術,2013(12):26-29.JIANG L P,CHEN W L,HUANG D X.Virtual simu?lation method of aircraft assembly procedure based on lightweight model technology[J].Aeronautical Manu?facturing Technology,2013(12):26-29(in Chinese).
[4]巫鵬偉,盧鵠,范玉青.協同共享數據的輕量化模型[J].航空維修與工程,2010(2):56-58.WU P W,LU H,FAN Y Q.Lightweight model of col?laborative sharing data[J].Aviation Maintenance&Engineering,2010(2):56-58(in Chinese).
[5]談敦銘,趙罡,薛俊杰.飛行器大數據量CAD模型并行預處理[J].計算機輔助設計與圖形學學報,2013,25(3):425-432.TAN D M,ZHAO G,XUE J J.Parallel pre-process?ing of massive aircraft cad models[J].Journal of Com ?puter-Aided Design&Computer Graphics,2013,25(3):425-432(in Chinese).
[6]LEU M C,EIMARAGHY H A,NEE A Y C,et al.CAD model based virtual assembly simulation,plan?ning and training[J].CIRP Annals-ManufacturingTechnology,2013,62(2):799-822.
[7]王永劍.基于STEP標準的應用系統的接口開發[J].航空工藝技術,1997(2):21-22.WANG Y J.Interface development of STEP stan?dard-based application system[J].Aeronautical Manu?facturing Technology,1997(2):21-22(in Chinese).
[8]李玉剛,紀卓尚,林焰.船舶STEP標準現狀及其應用研究[J].艦船科學技術,2008,30(1):29-33.LI Y G,JI Z S,LIN Y.Status of ship STEP standard and its application research[J].Ship Science and Tech?nology,2008,30(1):29-33(in Chinese).
[9]王曉斌,寧濤,王可.3DXML文件格式解析及應用[J].工程圖學學報,2010,31(2):33-37.WANG X B,NING T,WANG K.Parsing 3DXML file format and its application[J].Journal of Engineering Graphics,2010,31(2):33-37(in Chinese).
[10]黃靖,王斌,胡楷模,等.基于DAG表示與產生式的IGES裝配體數據交換算法[J].圖學學報,2012,33(4):50-58.HUANG J,WANG B,HU K M,et al.IGES data ex?change algorithm for assemblies based on DAG repre?sentation and production rules[J].Journal of Graph?ics,2012,33(4):50-58(in Chinese).
[11]張西廠,梅小川,邱明星.基于JT數據編制航空發動機圖解圖的創新方法[J].航空發動機,2009,35(6):10-13.ZHANG X C,MEI X C,QIU M X.Innovation meth?od of compiling aeroengine IPC based on JT data[J].Aeroengine,2009,35(6):10-13(in Chinese).
[12]殷明強,李世其.保持外觀的CAD模型輕量化技術[J].計算機應用,2013,33(6):1719-1722.YIN M Q,LI S Q.Simplification method of appear?ance preserved CAD model[J].Journal of Computer Applications,2013,33(6):1719-1722 (in Chi?nese).
[13]VINCE J.Mathematics for computer graphics[M].3rd ed.London:Springer,2010.
An algorithm for merging part nodes of JT models exported by FORAN
FANG Xiongbing
China Ship Development and Design Center,Wuhan 430064,China
Many cognominal parts exist in JT models exported by FORAN V70 R2.0 software,and this leads to an increase in time consumption and the space analysis results becoming hard to process when using clearance analysis software to perform distance computing for such JT models.Aiming at this problem,an algorithm for merging component nodes is put forward based on investigating the assembly configuration and inherent information(i.e.geometric and material information)of JT models created by FORAN.The method is composed of four steps:coordinate transformation,model node renaming,node geometric data transferring and material attribute processing.Finally,the proposed method is implemented by C++and JT Open Toolkit.The results show that the new JT models generated by the proposed method are comprised of only one assembly node,and they preserve the intrinsic information of the original JT models.Its validity is illustrated by a great deal of examples,and the content of the worked JT models are reducedbyabout7%to20%.
JT model;assembly hierarchy;component merging;graphic transformation;clearance analysis;visualization
U662.9
:ADOI:10.3969/j.issn.1673-3185.2017.03.007

http://kns.cnki.net/kcms/detail/42.1755.TJ.20170512.1255.028.html期刊網址:www.ship-research.com
方雄兵.FORAN導出的JT模型特征節點合并算法[J].中國艦船研究,2017,12(3):43-50,148.
FANG X B.An algorithm for merging part nodes of JT models exported by FORAN[J].Chinese Journal of Ship Research,2017,12(3):43-50,148.
2016-06-13< class="emphasis_bold">網絡出版時間
時間:2017-5-12 12:55
國家部委基金資助項目
方雄兵(通信作者),男,1983年生,博士,工程師。研究方向:計算機圖形學,計算機輔助幾何設計及艦船虛擬仿真。E-mail:fangxb2013@sina.cn