方雄兵
中國(guó)艦船研究設(shè)計(jì)中心,湖北武漢430064
FORAN導(dǎo)出的JT模型特征節(jié)點(diǎn)合并算法
方雄兵
中國(guó)艦船研究設(shè)計(jì)中心,湖北武漢430064
[目的]由于FORAN V70 R2.0(及以上版本)輸出的JT模型中存在很多同名的特征節(jié)點(diǎn),導(dǎo)致采用間隙分析軟件對(duì)其進(jìn)行分析時(shí)時(shí)間消耗加大且間隙分析結(jié)果難以處理。針對(duì)該問(wèn)題,[方法]在研究FORAN導(dǎo)出的JT文件裝配結(jié)構(gòu)和蘊(yùn)含信息(幾何信息、材料屬性信息等)的基礎(chǔ)上,提出一種特征節(jié)點(diǎn)合并算法。該算法由坐標(biāo)變換、模型節(jié)點(diǎn)更名、節(jié)點(diǎn)幾何數(shù)據(jù)移動(dòng)和材料屬性處理4個(gè)步驟構(gòu)成。然后,利用C++及JT Open Toolkit實(shí)現(xiàn)所提出的算法。[結(jié)果]結(jié)果顯示,利用該算法處理后的JT模型只包含1個(gè)裝配節(jié)點(diǎn)且保留了原始JT模型的內(nèi)在信息,可為后期間隙分析提供有效的輸入數(shù)據(jù)。[結(jié)論]大量的實(shí)例驗(yàn)證了所提出算法的有效性,處理后的JT文件大小可減少7%~20%。
JT模型;裝配層次;特征合并;圖形變換;間隙分析;可視化
當(dāng)前,大型復(fù)雜產(chǎn)品的數(shù)字化設(shè)計(jì)技術(shù)已從二維CAD圖逐步過(guò)渡到以三維模型為主并向數(shù)字樣機(jī)、虛擬產(chǎn)品與過(guò)程、協(xié)同式設(shè)計(jì)與建造的方
向邁進(jìn)。三維CAD模型作為產(chǎn)品設(shè)計(jì)與建造的基礎(chǔ),其輕量化和簡(jiǎn)化處理對(duì)于數(shù)據(jù)交換與傳輸[1]、工程仿真與分析[2-3]、可視化協(xié)同[4]、虛擬展示與訓(xùn)練[5-6]等應(yīng)用均有重要意義。在實(shí)際工程應(yīng)用中,基于具體的軟件和(輕量化)模型開(kāi)展應(yīng)用時(shí),通常需要對(duì)模型進(jìn)行一定的處理。利用FORAN軟件導(dǎo)出的零件JT模型開(kāi)展艙室或區(qū)域內(nèi)零件之間的間隙分析時(shí),發(fā)現(xiàn)零件JT模型的裝配結(jié)構(gòu)中包含多個(gè)同名特征節(jié)點(diǎn),使得間隙分析的時(shí)間增加、問(wèn)題記錄難以處理,因此需要對(duì)其進(jìn)行處理。
國(guó)內(nèi)外學(xué)者在 STEP,IGES,3DXML,JT等格式模型的處理與應(yīng)用方面開(kāi)展了大量工作。王永劍[7]介紹了國(guó)外STEP標(biāo)準(zhǔn)的應(yīng)用動(dòng)態(tài)以及接口實(shí)現(xiàn)方法。李玉剛等[8]分析了STEP(標(biāo)準(zhǔn)號(hào):ISO 10303)在船舶領(lǐng)域的標(biāo)準(zhǔn)化與應(yīng)用情況。王曉斌等[9]針對(duì)達(dá)索的3DXML格式內(nèi)容進(jìn)行了深入研究。黃靖等[10]研究了常用CAD軟件導(dǎo)出的IGES格式模型內(nèi)容,提出了基于圖表示與產(chǎn)生式規(guī)則的IGES數(shù)據(jù)交換算法。張西廠等[11]研究了基于JT的航空發(fā)動(dòng)機(jī)圖解圖生成方法。殷明強(qiáng)等[12]研究了在不改變裝配模型格式和外觀前提下,裝配體輕量化的方法。上述工作為JT文件的深入研究和應(yīng)用提供了參考。
JT作為一種新的國(guó)際標(biāo)準(zhǔn)格式,已被眾多商用軟件所支持。為解決FORAN導(dǎo)出的JT模型存在較多同名特征節(jié)點(diǎn)而不適合間隙分析的問(wèn)題,本文將在分析FORAN導(dǎo)出的零件JT模型裝配及內(nèi)蘊(yùn)信息的基礎(chǔ)上,基于齊次坐標(biāo)與矩陣變換[13],提出一種特征節(jié)點(diǎn)合并算法。該算法可對(duì)同名的特征節(jié)點(diǎn)進(jìn)行合并,對(duì)保留的唯一節(jié)點(diǎn)進(jìn)行更名。并且,將用應(yīng)用案例表明,處理后的零件JT模型裝配結(jié)構(gòu)中只有一個(gè)節(jié)點(diǎn)、更加輕量化,能夠滿足后續(xù)間隙分析需要。
1.1 ISO JT標(biāo)準(zhǔn)格式簡(jiǎn)介
JT是德國(guó)西門(mén)子公司推出的一種輕量化文件格式,目前已被國(guó)際標(biāo)準(zhǔn)化組織(ISO)認(rèn)定為國(guó)際標(biāo)準(zhǔn)(ISO IS 14306:2012)。該格式提供了一種高效的3D產(chǎn)品定義方法,可在產(chǎn)品設(shè)計(jì)、仿真、制造以及后期技術(shù)支持等更大范圍內(nèi)應(yīng)用于協(xié)作、驗(yàn)證與可視化。
JT文件由一序列的塊或片段所構(gòu)成,其基本結(jié)構(gòu)如圖1所示,包括:文件頭(File header)、內(nèi)容目錄段(TOC segment)和數(shù)據(jù)段(Data segment)。文件頭始終在文件最前的位置,而TOC的位置則可以在文件中間緊隨文件頭,也可以在文件的末尾。完整的JT文件,其數(shù)據(jù)段內(nèi)容非常豐富,包含邏輯場(chǎng)景圖(LSG)、形狀細(xì)節(jié)層次段、JT邊界表示段、XT邊界表示段、線框段、元數(shù)據(jù)段、產(chǎn)品制造信息段等。在JT模型數(shù)據(jù)定義中,經(jīng)常使用以下幾種坐標(biāo)系統(tǒng),包括局部坐標(biāo)系、節(jié)點(diǎn)坐標(biāo)系、世界坐標(biāo)系和視點(diǎn)坐標(biāo)系。當(dāng)前,眾多的成熟商用軟件均提供了JT數(shù)據(jù)的導(dǎo)入/導(dǎo)出接口。
圖1 JT文件基本結(jié)構(gòu)Fig.1 General hierarchy of JT files
1.2 FORAN導(dǎo)出的JT模型分析
1.2.1 JT模型裝配結(jié)構(gòu)分析
西班牙SENER公司的造船軟件FORAN V70 R2.0(以下簡(jiǎn)稱(chēng)FORAN)提供了導(dǎo)出JT格式三維模型的功能,導(dǎo)出方法有2種:一種是手工操作方式,在FORAN軟件中打開(kāi)需要轉(zhuǎn)換的模型,點(diǎn)擊JT導(dǎo)出功能菜單,將打開(kāi)的模型導(dǎo)出為JT;另一種是基于腳本的轉(zhuǎn)換方式,即通過(guò)轉(zhuǎn)換命令形成的腳本完成模型的輕量化轉(zhuǎn)換。通過(guò)開(kāi)發(fā)這種轉(zhuǎn)換腳本文件的生成工具,可生成基于一定導(dǎo)出規(guī)則的JT轉(zhuǎn)換腳本,利用該腳本,可批量導(dǎo)出全船JT模型。
導(dǎo)出的粒度也存在多種形式:1)結(jié)構(gòu)和基座可以分段形式導(dǎo)出;其他模型(設(shè)備、水管、風(fēng)管、電纜、電纜托架等)以區(qū)域/系統(tǒng)方式導(dǎo)出為一個(gè)整體的JT文件,該文件包含了大量的零件級(jí)模型;2)可以選擇單個(gè)零件三維模型并導(dǎo)出為JT。前一種形式導(dǎo)出的JT文件通常包含數(shù)量較多的零件,如一個(gè)區(qū)域內(nèi)所有的設(shè)備,可對(duì)其進(jìn)行分解,生成零件級(jí)的JT模型,如1個(gè)設(shè)備、1根管子、1個(gè)T型材。如圖2所示,利用JT可視化瀏覽工具,可以看出導(dǎo)出的零件級(jí)JT文件裝配結(jié)構(gòu)為3級(jí),第1級(jí)為根裝配節(jié)點(diǎn)(默認(rèn)節(jié)點(diǎn)),第2級(jí)為零件級(jí)裝配節(jié)點(diǎn),第3級(jí)為特征裝配節(jié)點(diǎn)。特別地,第2級(jí)零件級(jí)節(jié)點(diǎn)下存在數(shù)量眾多的同名(如Para?metric和Polyhedron)特征節(jié)點(diǎn)。
1.2.2 JT模型內(nèi)容分析
進(jìn)一步地,通過(guò)對(duì)圖2(a)中的JT文件內(nèi)容進(jìn)行分析,發(fā)現(xiàn)其文件內(nèi)部結(jié)構(gòu)及各部分的主要信息如表1所示。
圖2 FORAN導(dǎo)出的原始JT模型Fig.2 Original JT models exported by FORAN
根據(jù)表1,F(xiàn)ORAN導(dǎo)出的JT文件基本結(jié)構(gòu)為一個(gè)JtkAssembly(即名稱(chēng)為E CM-ES-1的零件級(jí)裝配)節(jié)點(diǎn)下掛若干個(gè)JtkPart節(jié)點(diǎn)(即名稱(chēng)為Parametric和Polyhedron的特征節(jié)點(diǎn)),JtkPart包含具體的幾何模型數(shù)據(jù),主要信息有:該特征節(jié)點(diǎn)的版本、ID號(hào)、單位、變換矩陣(齊次坐標(biāo)表示)、LOD層級(jí)、形狀面片頂點(diǎn)、形狀法向量、材料屬性等。如圖3所示,借助TC Visualization Mockup(以下簡(jiǎn)稱(chēng)Vis Mockup)高級(jí)功能(操作—檢查器),可以查看特征節(jié)點(diǎn)(即JtkPart節(jié)點(diǎn))下的數(shù)據(jù)。每個(gè)JtkPart節(jié)點(diǎn)下有多個(gè)細(xì)節(jié)層次,每個(gè)細(xì)節(jié)層次下又包含一定數(shù)量的面片(即JtkShape)。
綜上,F(xiàn)ORAN導(dǎo)出的JT模型裝配結(jié)構(gòu)如圖4所示。
基于Vis Mockup開(kāi)展2個(gè)零件JT模型的間隙分析時(shí),Vis Mockup會(huì)將第1個(gè)JT模型的每個(gè)特征節(jié)點(diǎn)(JtkPart)與第2個(gè)JT模型的每個(gè)特征節(jié)點(diǎn)進(jìn)行間隙計(jì)算(只進(jìn)行到這一級(jí))。然而,F(xiàn)ORAN導(dǎo)出的JT模型裝配結(jié)構(gòu)中往往存在多個(gè)同名的JtkPart特征節(jié)點(diǎn),如Parametric,Polyhedron或是一些不規(guī)范命名的節(jié)點(diǎn),導(dǎo)致在后期進(jìn)行間隙分析時(shí)需要分析計(jì)算的JtkPart對(duì)數(shù)較多,分析時(shí)間增長(zhǎng),且間隙分析結(jié)果記錄項(xiàng)(Parametric,Parametric,距離值,……)中的特征節(jié)點(diǎn)無(wú)法與其所屬的零件名稱(chēng)(零件A,零件B)一一對(duì)應(yīng),導(dǎo)致兩個(gè)JT模型的間隙分析結(jié)果難以處理。假設(shè),參與間隙分析的兩個(gè)零件JT模型分別包含m和n個(gè)JtkPart,則在間隙分析時(shí)需要計(jì)算m×n對(duì)JtkPart之間的距離值,并對(duì)m×n個(gè)間隙記錄項(xiàng)進(jìn)行分析處理。
因此,要提高JT模型的間隙分析和結(jié)果處理效率,需要對(duì)FORAN導(dǎo)出的零件級(jí)JT模型進(jìn)行以下處理:將JT模型中的特征節(jié)點(diǎn)(JtkPart)進(jìn)行合并,合并后的JT模型只有1個(gè)特征節(jié)點(diǎn),且其名稱(chēng)與合并前的JT模型名稱(chēng)相同,即與上一級(jí)的Jt?kAssembly節(jié)點(diǎn)同名。
圖3 特征節(jié)點(diǎn)下包含的信息Fig.3 Information beneath the part node
圖4 FORAN導(dǎo)出的JT模型詳細(xì)裝配結(jié)構(gòu)Fig.4 Detailed assembly structure of JT models exported by FORAN
3.1 問(wèn)題分析
通過(guò)對(duì)FORAN導(dǎo)出的JT模型文件內(nèi)容的分析,可以看出JT文件基本結(jié)構(gòu)為一個(gè)JtkAssembly(如圖 2(a)中的 E CM-ES-1)節(jié)點(diǎn),下掛若干個(gè)JtkPart節(jié)點(diǎn),如圖2(a)中的多個(gè) Parametric節(jié)點(diǎn),圖2(b)中的多個(gè)Polyhedron節(jié)點(diǎn)。JtkPart節(jié)點(diǎn)包含具體的幾何模型數(shù)據(jù),即JtkShape面片的頂點(diǎn)、法向量。由于JtkAssembly節(jié)點(diǎn)不能直接包含幾何模型數(shù)據(jù),所以要完成合并操作必須保留一個(gè)JtkPart節(jié)點(diǎn),而將其他所有JtkPart下的幾何數(shù)據(jù)都合并到這個(gè)保留的JtkPart下,并將保留的JtkPart進(jìn)行輸出。除合并幾何數(shù)據(jù)外,還需要對(duì)材料屬性等信息進(jìn)行處理,并將唯一保留的JtkPart更換為上一級(jí)JtkAssembly的名稱(chēng),如圖 2(a)中的ECM-ES-1。
要實(shí)現(xiàn)對(duì)JtkPart幾何數(shù)據(jù)的合并,需要解決以下關(guān)鍵問(wèn)題:零件級(jí)(JtkAssembly)節(jié)點(diǎn)下存在多個(gè)JtkPart節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)均有自己獨(dú)立的坐標(biāo)系,即各自的變換矩陣JtkTRANSFORM;若直接將幾何數(shù)據(jù)復(fù)制到保留的JtkPart節(jié)點(diǎn)下,會(huì)導(dǎo)致頂點(diǎn)位置及法向量錯(cuò)誤。為實(shí)現(xiàn)幾何數(shù)據(jù)正確合并,需要將被移動(dòng)的JtkPart節(jié)點(diǎn)坐標(biāo)系與保留的JtkPart節(jié)點(diǎn)坐標(biāo)系進(jìn)行統(tǒng)一。處理該問(wèn)題可采用如下2種方式:1)將其他JtkPart節(jié)點(diǎn)幾何數(shù)據(jù)統(tǒng)一到保留的JtkPart節(jié)點(diǎn)局部坐標(biāo)系中,這種方式需要完成變換矩陣求逆以及2個(gè)矩陣相乘[13],并將結(jié)果矩陣應(yīng)用于其他所有JtkPart節(jié)點(diǎn)下的幾何數(shù)據(jù);2)將所有JtkPart節(jié)點(diǎn)下的幾何數(shù)據(jù)均統(tǒng)一到世界坐標(biāo)系中,即將各JtkPart節(jié)點(diǎn)變換矩陣應(yīng)用到各自的幾何數(shù)據(jù)上。從計(jì)算量考慮,本文采用第2種方法。
JtkPart節(jié)點(diǎn)幾何數(shù)據(jù)合并處理流程簡(jiǎn)單描述如下。
1)對(duì)于每一個(gè)JtkPart節(jié)點(diǎn),將其變換矩陣(JtkTRANSFORM)應(yīng)用到其下所有的幾何數(shù)據(jù)(頂點(diǎn)和法向量)上,即所有的幾何數(shù)據(jù)均以世界坐標(biāo)系為參照,然后將該變換矩陣設(shè)置為單位矩陣。
2)保留第 1個(gè) JtkPart節(jié)點(diǎn),將第 2~n個(gè)JtkPart節(jié)點(diǎn)的幾何數(shù)據(jù)合并到第1個(gè)JtkPart節(jié)點(diǎn)下,并將第2~n個(gè)節(jié)點(diǎn)從上級(jí)JtkAssembly節(jié)點(diǎn)下移除。
3.2 算法設(shè)計(jì)與描述
3.2.1 算法設(shè)計(jì)與分析
綜合上述分析,F(xiàn)ORAN導(dǎo)出的JT模型進(jìn)行特征節(jié)點(diǎn)合并需要解決以下問(wèn)題:1)JtkPart節(jié)點(diǎn)幾何數(shù)據(jù)與屬性信息的移動(dòng);2)若存在多個(gè)JtkPart節(jié)點(diǎn),需要將被合并的JtkPart節(jié)點(diǎn)數(shù)據(jù)刪除;3)合并后將保留的JtkPart節(jié)點(diǎn)更名,并將上一級(jí)JtkAssembly節(jié)點(diǎn)移除或者返回保留的JtkPart節(jié)點(diǎn)。完整的JT特征節(jié)點(diǎn)合并處理過(guò)程見(jiàn)JT模型特征節(jié)點(diǎn)合并算法(以下簡(jiǎn)稱(chēng)“JT合并算法”),具體如下。
輸入:FORAN V70 R2.0導(dǎo)出的JT模型。
輸出:裝配結(jié)構(gòu)只有1個(gè)名稱(chēng)為零件名的JtkAssembly節(jié)點(diǎn),且保留原始模型幾何數(shù)據(jù)和屬性信息的JT模型。
處理過(guò)程:
1)計(jì)算JT裝配中特征節(jié)點(diǎn)JtkPart的數(shù)量numofPart;
2)將第1個(gè)JtkPart的變換矩陣應(yīng)用到其下各個(gè)細(xì)節(jié)層中所有JtkShape下的數(shù)據(jù)上,即所有幾何數(shù)據(jù)的坐標(biāo)為世界坐標(biāo);將第1個(gè)JtkPart更名為上一級(jí)的JtkAssembly節(jié)點(diǎn)名稱(chēng),即FORAN導(dǎo)出的JT模型的名稱(chēng)。
3)將第i(2~numofPart)個(gè)JtkPart的變換矩陣應(yīng)用到其下各個(gè)細(xì)節(jié)層中所有JtkShape下的數(shù)據(jù)上,與2)中操作相同;將第i(2~numofPart)個(gè)Jtk?Part幾何數(shù)據(jù)移動(dòng)至第1個(gè)JtkPart下;將第i(2~numofPart)個(gè)JtkPart的材料屬性應(yīng)用到其下各個(gè)細(xì)節(jié)層中所有JtkShape數(shù)據(jù)上;將第i(2~nu?mofPart)個(gè)JtkPart放入至1個(gè)隊(duì)列remChild中。
4)將remChild中的所有JtkPart數(shù)據(jù)移除。
5)返回第1個(gè)JtkPart的指針。
對(duì)上述JT合并算法進(jìn)行分析,其計(jì)算復(fù)雜度為 O(numofLOD×numofShape*(numofVertex+nu?mofNormal)),其中 numofLOD 為每個(gè) JtkPart的細(xì)節(jié)層次,numofShape為每個(gè)細(xì)節(jié)層中JtkShape的數(shù)量,numofVertex和numofNormal分別為每個(gè)JtkShape的頂點(diǎn)數(shù)量和法向量數(shù)量。通常情況下,對(duì)FORAN導(dǎo)出的JT模型,其numofLOD為3,每個(gè)細(xì)節(jié)層中包含的JtkShape數(shù)量均相同,每個(gè)JtkShape為一個(gè)多邊形,有3或4個(gè)頂點(diǎn),即numof?Vertex和numofNormal為常數(shù)3或4。在采用齊次坐標(biāo)表示時(shí),JtkShape各個(gè)頂點(diǎn)和法向量均有4個(gè)分量。因此,JT合并算法計(jì)算復(fù)雜度為一個(gè)關(guān)于JtkShape數(shù)量的線性函數(shù) O(numofShape),而JtkShape數(shù)量numofShape取決于CAD軟件表達(dá)幾何體外觀的精細(xì)程度以及幾何體自身的平滑程度。
3.2.2 算法描述
下面采用偽代碼對(duì)JT合并算法進(jìn)行描述。表2中,各主要函數(shù)原型定義如下。
PARTS_MERGE(JtkAssembly*assembly)將assembly指向的裝配節(jié)點(diǎn)下的其他JtkPart特征節(jié)點(diǎn)移動(dòng)到第1個(gè)JtkPart節(jié)點(diǎn)下,對(duì)第1個(gè)特征節(jié)點(diǎn)進(jìn)行更名,即保留第1個(gè)節(jié)點(diǎn),最后將該特征節(jié)點(diǎn)指針?lè)祷亍?/p>
APPLY_TRANSFORM (JtkPart* part, Jtk?Transform*pxform)將變換矩陣pxform應(yīng)用到part下各細(xì)節(jié)層中所有JtkShape下的數(shù)據(jù)上。
SET_PART_NODE_NAME(JtkHierarchy*part0,const char*newname)將part0指向的特征節(jié)點(diǎn)賦值為新的名稱(chēng)newname,本算法中newname為零件的名稱(chēng)。
MOVE_SHAPES(JtkPart*parSource,JtkPart*parDest)將parSource中的幾何數(shù)據(jù)移動(dòng)到特征節(jié)點(diǎn)parDest下。
APPLY_MATERIAL(JtkPart*part,JtkMateri?al*material)將material中的材料屬性應(yīng)用到part指向的特征節(jié)點(diǎn)下所有的幾何數(shù)據(jù)上。
4.1 節(jié)點(diǎn)處理工具設(shè)計(jì)
考慮到船舶零件數(shù)量大的特點(diǎn),節(jié)點(diǎn)合并工具應(yīng)具備對(duì)FORAN導(dǎo)出的零件級(jí)原始JT模型進(jìn)行批量處理的功能,處理后的JT存儲(chǔ)于本地公共文件夾中。節(jié)點(diǎn)合并處理工具界面如圖5所示,用戶選擇文件或文件夾選項(xiàng)后,可進(jìn)一步選擇本地需要處理的原始JT文件(要求:該JT為零件級(jí))。基于Visual Studio 2010,采用C++語(yǔ)言以及JT Open Toolkit提供的API實(shí)現(xiàn)了JT合并算法。
4.2 案例與討論
4.2.1 測(cè)試案例
選擇FORAN導(dǎo)出的JT模型,對(duì)所提出的算法進(jìn)行驗(yàn)證,具體步驟如下。
1)選擇本地需要進(jìn)行節(jié)點(diǎn)合并處理的JT文件,可以是單個(gè)分解處理后的JT文件或包含多個(gè)JT文件的文件夾。如圖6所示,選擇圖2(b)中的基座模型C: empAS-****-XX13JZ.jt為例,說(shuō)明節(jié)點(diǎn)處理工具的用法。該模型處理前文件大小為33.9 kB,包含27個(gè)JtkPart節(jié)點(diǎn)。
2)選擇“確定”,如圖7所示,對(duì)JT文件進(jìn)行節(jié)點(diǎn)合并處理。
3)節(jié)點(diǎn)合并后的JT文件存放在默認(rèn)的文件夾中。如圖8所示,利用JT Vis Mockup 10.1打開(kāi)節(jié)點(diǎn)合并處理后的AS-****-XX13JZ模型文件,可以看到該基座模型只有1個(gè)頂級(jí)裝配節(jié)點(diǎn),其下無(wú)其他節(jié)點(diǎn)。
表2 JT模型特征節(jié)點(diǎn)合并算法偽代碼描述Table 2 Pseudo-code description for the algorithm of merging part nodes of JT models
圖5 特征節(jié)點(diǎn)合并工具界面Fig.5 Interface of part nodes merging tool
圖6 選擇需要進(jìn)行節(jié)點(diǎn)合并的JT文件Fig.6 Choosing JT files for part nodes merging
圖7 JT模型特征節(jié)點(diǎn)合并過(guò)程信息Fig.7 Process information of JT model in process of part nodes merging
JtkPart節(jié)點(diǎn)合并處理后,AS-****-XX13JZ.jt模型大小為27 kB,只有1個(gè)節(jié)點(diǎn)。以下給出了其他一些測(cè)試案例,如圖8~圖11所示,從圖9(b)、圖10(b)和圖11(b)可以看出,處理后的JT只包含1個(gè)節(jié)點(diǎn)。處理前、后模型數(shù)據(jù)對(duì)比如表3所示。
圖8 特征節(jié)點(diǎn)合并后的JT模型Fig.8 JT model after part nodes merging
圖9 設(shè)備JT模型節(jié)點(diǎn)合并處理前后對(duì)比(編號(hào)3)Fig.9 Comparison of an equipment's JT model before and after part nodes merging(No.3)
圖10 結(jié)構(gòu)JT模型節(jié)點(diǎn)合并處理前后對(duì)比(編號(hào)8)Fig.10 Comparison of a structure's JT model before and after part nodes merging(No.8)
圖11 結(jié)構(gòu)JT模型節(jié)點(diǎn)合并處理前后對(duì)比(編號(hào)10)Fig.11 Comparison of a structure's JT model before and after part nodes merging(No.10)
從表3可以看出,F(xiàn)ORAN導(dǎo)出的原始零件級(jí)JT模型經(jīng)過(guò)節(jié)點(diǎn)合并處理后,文件大小減少了7%~20%,相比未處理前更加輕量化。圖9~圖11分別為表3中編號(hào)為3,8和10的零件級(jí)JT模型進(jìn)行節(jié)點(diǎn)處理前、后的對(duì)比。其中,結(jié)構(gòu)類(lèi)原始零件級(jí)JT模型通常只有1個(gè)特征節(jié)點(diǎn),通過(guò)對(duì)特征節(jié)點(diǎn)下的細(xì)節(jié)層次以及三角形面片數(shù)量進(jìn)行分析,發(fā)現(xiàn)編號(hào)為8的模型與編號(hào)為10的模型相比,其Part節(jié)點(diǎn)數(shù)量均為1,細(xì)節(jié)層次數(shù)量均為3,每個(gè)細(xì)節(jié)層次包含的面片(JtkShape)數(shù)量分別為28和1 124。
從表3以及對(duì)JT模型內(nèi)部信息進(jìn)行深入分析發(fā)現(xiàn),表3中JT模型輕量化百分比大小與模型包含特征節(jié)點(diǎn)數(shù)量、細(xì)節(jié)層次、各層的三角形面片數(shù)、材料信息大小等有關(guān)。模型建模精度越高,包含的特征節(jié)點(diǎn)數(shù)量以及三角形面片數(shù)越大,從而輕量化率越高。
表3 JT模型特征節(jié)點(diǎn)合并處理前、后數(shù)據(jù)對(duì)比Table 3 Comparison of data before and after part node merging of JT models
4.2.2討論
1)利用JT合并算法處理后的JT模型(零件級(jí))只包含1個(gè)特征節(jié)點(diǎn),保留了原始JT模型的名稱(chēng)、所有幾何數(shù)據(jù)和材料屬性等信息。
2)在完成節(jié)點(diǎn)合并處理后,2個(gè)零件級(jí)JT模型之間間隙分析計(jì)算次數(shù)變?yōu)?,其問(wèn)題記錄項(xiàng)數(shù)量為1或0,記錄項(xiàng)主要元素為“(零件A的名稱(chēng),零件B的名稱(chēng),距離值,……)”,根據(jù)問(wèn)題記錄項(xiàng)的元素可準(zhǔn)確定位到具體零件上。
3)盡管本文提出的算法主要針對(duì)FORAN V70 R2.0(及以上版本)導(dǎo)出的JT模型,然而當(dāng)前很多格式定義的三維模型在裝配結(jié)構(gòu)上與JT非常類(lèi)似,如3DXML,SMG格式,論文所提出的算法對(duì)于其他軟件導(dǎo)出的JT以及其他格式定義的三維模型裝配結(jié)構(gòu)與幾何數(shù)據(jù)處理問(wèn)題也有一定的借鑒意義,如SMG,3DXML,STEP等格式。
JT作為一種國(guó)際標(biāo)準(zhǔn)格式,其包含的信息非常豐富,對(duì)船舶這類(lèi)零部件數(shù)量大的應(yīng)用領(lǐng)域而言,可以支持大場(chǎng)景模型的高效可視化以及全生命周期的協(xié)同。本文對(duì)FORAN導(dǎo)出的JT模型存在大量同名特征節(jié)點(diǎn)而導(dǎo)致后續(xù)的間隙分析效率低、結(jié)果難以處理的問(wèn)題進(jìn)行了專(zhuān)門(mén)研究,給出了一種節(jié)點(diǎn)合并算法,處理后的JT模型只包含1個(gè)節(jié)點(diǎn),保留了原始JT所有的幾何與材料屬性等信息,并且比處理前的JT文件大小減少了7%~20%,為支持船舶等領(lǐng)域大裝配的應(yīng)用,如船舶艙室三維模型間隙分析、可視化、虛擬維修與培訓(xùn)等,提供了有效的輸入數(shù)據(jù)。大量仿真案例驗(yàn)證了所提出算法的有效性。
[1]王啟富,賈成,劉俊,等.三維CAD模型中自由曲線曲面無(wú)損壓縮算法[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),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]劉清華,李帥,劉云華,等.協(xié)同環(huán)境中基于輕量化的3D異構(gòu)CAD模型干涉檢查[J].中國(guó)機(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ī)裝配過(guò)程虛擬仿真方法[J].航空制造技術(shù),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]巫鵬偉,盧鵠,范玉青.協(xié)同共享數(shù)據(jù)的輕量化模型[J].航空維修與工程,2010(2):56-58.WU P W,LU H,F(xiàn)AN Y Q.Lightweight model of col?laborative sharing data[J].Aviation Maintenance&Engineering,2010(2):56-58(in Chinese).
[5]談敦銘,趙罡,薛俊杰.飛行器大數(shù)據(jù)量CAD模型并行預(yù)處理[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),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標(biāo)準(zhǔn)的應(yīng)用系統(tǒng)的接口開(kāi)發(fā)[J].航空工藝技術(shù),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]李玉剛,紀(jì)卓尚,林焰.船舶STEP標(biāo)準(zhǔn)現(xiàn)狀及其應(yīng)用研究[J].艦船科學(xué)技術(shù),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文件格式解析及應(yīng)用[J].工程圖學(xué)學(xué)報(bào),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表示與產(chǎn)生式的IGES裝配體數(shù)據(jù)交換算法[J].圖學(xué)學(xué)報(bào),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數(shù)據(jù)編制航空發(fā)動(dòng)機(jī)圖解圖的創(chuàng)新方法[J].航空發(fā)動(dòng)機(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]殷明強(qiáng),李世其.保持外觀的CAD模型輕量化技術(shù)[J].計(jì)算機(jī)應(yīng)用,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期刊網(wǎng)址:www.ship-research.com
方雄兵.FORAN導(dǎo)出的JT模型特征節(jié)點(diǎn)合并算法[J].中國(guó)艦船研究,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">網(wǎng)絡(luò)出版時(shí)間
時(shí)間:2017-5-12 12:55
國(guó)家部委基金資助項(xiàng)目
方雄兵(通信作者),男,1983年生,博士,工程師。研究方向:計(jì)算機(jī)圖形學(xué),計(jì)算機(jī)輔助幾何設(shè)計(jì)及艦船虛擬仿真。E-mail:fangxb2013@sina.cn