• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于VC++和Pro/E的纏繞芯模的逆向設(shè)計

      2011-07-24 03:20:44田會方
      關(guān)鍵詞:格式文件芯模面片

      田會方,張 毅

      (武漢理工大學(xué)機電工程學(xué)院,湖北武漢430070)

      如今大多數(shù)三維CAD軟件突出的功能是三維幾何造型,其強大的三維造型功能可以方便地建立各種復(fù)雜模型,其中Pro/E是使用非常廣泛的三維建模軟件之一。對于纖維纏繞的芯模,可以利用Pro/E進行建模。然而,其所建立的模型局限于幾何信息和拓撲信息,遠遠不能滿足后續(xù)的仿真、評價等實際工作過程中的信息需求。同時由于虛擬現(xiàn)實造型語言VRML作為一種中性語言,具有場景交互、逼真自然等基本特征,大多數(shù)的三維CAD軟件都可以導(dǎo)出VRML格式文件?;诖耍衫萌SCAD軟件建立三維纏繞芯模的模型,然后將其導(dǎo)出為VRML(.wrl虛擬現(xiàn)實建模語言)格式文件,由于導(dǎo)出的VRML文件丟失了芯模的特征參數(shù)信息,僅包括芯模的幾何數(shù)據(jù)信息,因此需要從以下兩方面著手解決:①利用三維建模軟件建立芯模模型,然后輸出為VRML,即為三維芯模的幾何顯示數(shù)據(jù)文件,再用OpenGL對其解析,生成三維模型;②通過特征匹配,實現(xiàn)對特征參數(shù)的獲取,最后將重要的參數(shù)信息反映到對話框上[1-2]。

      綜上可知,纏繞芯模的幾何顯示信息和特征參數(shù)信息所需零件的信息均可從三維CAD軟件中通過轉(zhuǎn)化、提取、解析和匹配來獲得,利用OpenGL等語言對纏繞芯模進行重新繪制,進而建立三維CAD與VC++操作平臺連接的橋梁。芯模逆向設(shè)計結(jié)構(gòu)圖如圖1所示。

      圖1 芯模逆向設(shè)計結(jié)構(gòu)圖

      1 VRM L文件格式分析

      1.1 VRM L文件結(jié)構(gòu)

      VRML格式的文件可由大多數(shù)三維CAD軟件導(dǎo)出,其擴展名為.wrl。VRML文件是文本文件,可以方便地由文本文件編輯器進行編寫和修改。一個典型的VRML格式文件一般由文件頭、節(jié)點和路由組成。其中節(jié)點是VRML格式文件最基本單位,即VRML文件是由很多節(jié)點組合而成的,一個最簡單的VRML文件至少包含一個節(jié)點。節(jié)點由節(jié)點名和一對花括號構(gòu)成,花括號內(nèi)可包含多條描述節(jié)點的語句。三維模型主要涉及的節(jié)點有Shape造型節(jié)點、IndexedFaceSet面集節(jié)點、Appearance外觀節(jié)點、Transform坐標變換節(jié)點、Material材料節(jié)點、Coordinate坐標節(jié)點和Nor-mal法向量節(jié)點等。其中IndexedFaceSet面集節(jié)點用于三維模型表面的幾何造型,其平面造型先由封閉折線勾畫出平面的邊界,再進行表面的填充,形成三維模型的表面[3]。構(gòu)造平面邊界線的過程是:首先設(shè)定3個以上的節(jié)點坐標,然后按照點坐標的索引號的順序進行連接,形成平面封閉的邊界線。

      VRML文件語法結(jié)構(gòu)如下:#VRML V2.0 utf8節(jié)點名{域值…}

      Scrip t{#腳本節(jié)點…}ROUTE…#路由

      1.2 Pro/E逆向生成的VRM L文件解析

      三維建模軟件Pro/E生成的VRML文件格式的節(jié)點可以分為構(gòu)建零件幾何模型和設(shè)置零件場景描述兩大類型。

      對于構(gòu)建零件幾何模型數(shù)據(jù)的VRML節(jié)點,Pro/E生成的VRML文件使用IndexedFaceSet節(jié)點來描述具體的零件三維模型,IndexedFaceSet面集節(jié)點為Shape造型節(jié)點的geometry域的域值,用來構(gòu)建模型面的幾何造型,方法是使用三角形面片來具體描述三維幾何模型的一個面。這樣在MFC程序中讀取VRML文件時,依次讀取,直至讀完芯模面中的所有三角面片,即可形成一個包含很多三角面片的面集[4-5]。

      零件幾何模型所涉及的VRML節(jié)點之間的關(guān)系如圖2所示。圖2中橢圓為VRML節(jié)點,長方形為節(jié)點的域。

      零件場景描述。Pro/E導(dǎo)出的VRML文件使用Viewpoint視點節(jié)點描述三維模型的場景,例如:

      圖2 節(jié)點關(guān)系圖

      DEF Name Viewpoint{

      description"Name"

      position 1.68637 0.292726 -0.603758

      orientation - 0.0140579 0.990331 0.138012 1.71118

      fieldOfView 1.56959

      }

      其中,description域的域值用來設(shè)置描述視點的字符串Name,position域的域值用來設(shè)置視點在場景中的空間位置,orientation域的域值用來設(shè)置視點在場景中的空間場景,也就是觀察者面對的方向,fieldOfView域的域值用來設(shè)置視點視角大小。

      2 在VC++中逆向獲取芯模及其參數(shù)特征

      2.1 基于OpenGL的芯模VRML文件格式的解析

      2.1.1 OpenGL 的初始化

      OpenGL作為三維圖形硬件的軟件接口,可以直接開發(fā)出各種三維幾何物體及動畫。一般在Visual C++中,指定包含OpenGL的頭文件相對路徑。相應(yīng)的頭文件有 gl.h、glu.h 和 glut.h。其中g(shù)l.h包含OpenGL最基本的命令函數(shù),可以執(zhí)行數(shù)據(jù)輸入、顏色和光照等;glu.h是OpenGL的實用庫,是對OpenGL核心庫的補充,可以執(zhí)行坐標轉(zhuǎn)換、繪制NURBS曲線和曲面等任務(wù);glut.h是OpenGL的實用工具箱,可以執(zhí)行多窗口繪制、生成層疊式彈出窗口等[6-7]。

      初始化OpenGL的步驟為:

      (1)獲取進行繪圖的設(shè)備環(huán)境:g_hDC=Get-DC(g_hWnd);

      (2)為設(shè)備環(huán)境設(shè)置像素格式,并創(chuàng)建基于該設(shè)備環(huán)境的OpenGL設(shè)備。運用函數(shù):PIXELFORMATDESCRIPTOR pfd;

      (3)當觸發(fā)WM DESTROY消息時釋放Open-GL資源 ReleaseDC(g hWnd,g hDC);wglDeleteContext(g glRes);

      (4)初始化OpenGL繪制場景。

      2.1.2 VRML 文件的解析

      有了Pro/E轉(zhuǎn)換的VRML文件后,接下來就是在VC++中基于OpenGL讀取VRML文件,稱之為VRML文件的解析,而編寫解析器Parser主要包括兩方面的內(nèi)容,即讀取三維幾何模型數(shù)據(jù)和描述零件場景。

      由于三維幾何模型由很多表面組成,各種平面組合成不規(guī)則的三維幾何造型。每個表面在VRML中稱為一個面集,也就是說三維幾何模型在VRML中對應(yīng)相同數(shù)量的面集,因此定義零件場景類CSceneGraph3d來管理面集,其定義如下:

      class CSceneGraph3d

      {

      vector<CGLMesh3d* >m_ArrayMesh3d;//定義一個零件所含的面集的數(shù)組

      …}

      由于描述機械零件的各個面集具有相同的結(jié)構(gòu),每個面集都對應(yīng)一個 CGLMesh3d對象的Shape節(jié)點,因此可以運用循環(huán)方式解析VRML文件。即依次讀取VRML文件的關(guān)鍵詞,每讀入一次“Shape”節(jié)點,就認為是一個面集,再由CGLMesh3d類的對象轉(zhuǎn)入面集的存儲處理,處理完成之后將它加入到由CSceneGraph3d的對象定義的面集數(shù)組中。

      CGLMesh3d*pMesh=newCGLMesh3d;//面集的存儲處理

      pSceneGraph→Add(pMesh);

      依次循環(huán),直到文件讀取完畢,即可將顯示幾何模型的數(shù)據(jù)讀入CSceneGraph3d對象中。

      針對VRML文件的不同節(jié)點信息,用面向?qū)ο蠓椒▽ζ溥M行分析和設(shè)計,建立一系列的類,如:

      CGLVrm1Parse用來解析VRML格式的文件;

      CGLTransform類用來描述坐標變換;

      CGLVector3d類用來描述三維空間矢量;

      CGLMaterial則用來描述材質(zhì)。

      面集由一系列相鄰的三角面片構(gòu)成,因此可定義一個幾何模型數(shù)據(jù)CGLMesh3d類,用來讀取并顯示幾何模型數(shù)據(jù),定義如下:

      class CGLMesh3d

      {

      struct VertexIndex//定義一個三角面片的三個頂點索引號的結(jié)構(gòu)體

      {

      intm_Index1;//第一個頂點的索引1

      intm_Index2;//第二個頂點的索引2

      intm_Index3;//第三個頂點的索引3

      };

      }

      芯模的幾何模型顯示通過處理CAD軟件導(dǎo)出的VRML實現(xiàn),VRML文件包含描述三維幾何模型所必需的各種信息,再利用OpenGL及MFC編程對三維模型的重新構(gòu)造,顯示幾何模型中的三角面片數(shù)據(jù)來逐個繪制三角面片,最終獲得芯模模型。上述分析可以歸納為:不管多復(fù)雜的三維模型的繪制都能歸結(jié)為一個個三角面片的繪制,因此選擇在VC++和OpenGL環(huán)境中來完成三角面片的繪制,增強了可操作性。

      2.2 芯模及其特征參數(shù)的逆向獲取

      大多數(shù)的三維CAD軟件都提供二次開發(fā),例如通過Pro/E的二次開發(fā),Pro/TOOLKIT可以方便地獲取三維模型的尺寸,其應(yīng)用程序的初始化函數(shù)為:

      extern"C"int user_initialize(int argc,char*argv[],char*version,char*bulid,Wchar_t errbuf[])

      {

      ProError status;//用戶添加的接口程序部分

      return status;

      }

      終止應(yīng)用程序的函數(shù)為:

      extern"C"void user_terminate()

      {//用戶添加的終止代碼

      }

      當Pro/TOOLKIT二次獲取參數(shù)信息后,導(dǎo)出與三維模型Pro/E格式(.prt)的文件名同名的.geo格式文件,這樣在.geo格式文件里就包含需要的特征參數(shù)信息,在獲取零件幾何模型的特征數(shù)據(jù)和特征參數(shù)信息之后,就可以在VC++中獲取模型的重要尺寸[8-12]。

      3 實例說明

      首先利用三維建模軟件Pro/E建立纏繞芯模的模型,然后將該模型輸出為.wrl格式,即VRML格式文件,接著再在VC++中對文件進行解析,讀出三維幾何模型,并利用OpenGL對零件渲染,重繪制[13],將所需要零件的信息添加到零件模型中去,從而達到對機械零件三維模型的分析、解析目的。圖3為利用Pro/E建立的模型,圖4為用VC++和OpenGL解析的模型,表示了網(wǎng)格纏繞芯模仿真的芯模參數(shù)逆向尺寸獲取的過程。

      4 結(jié)論

      利用逆向方式可以獲取任意格式芯模的重要尺寸,利用這些關(guān)鍵尺寸,可以為纏繞復(fù)合材料制

      圖3 利用Pro/E建立的模型

      圖4 用VC++和OpenGL解析的模型

      品提供原始數(shù)據(jù),也可以方便地產(chǎn)生其他相似的芯模。由于在三維CAD中難以實現(xiàn)纖維纏繞的運動仿真,即使利用其二次開發(fā)也不能達到繪制纏繞纖維的目的,因此可采取將三維的CAD轉(zhuǎn)化為中性的VRML文件,再由OpenGL對其渲染和解析,在VC++中生成三維模型,并獲取其關(guān)鍵尺寸,以方便后續(xù)模型的仿真和新的芯模的生成。

      [1]華志勇,劉蘇.基于VRML和OpenGL的Pro/E三維模型格式解析及渲染實現(xiàn)[J].信息技術(shù),2009(4):97-99.

      [2]那正平.可重構(gòu)的虛擬加工環(huán)境交互建模系統(tǒng)研究[D].南京:南京理工大學(xué)圖書館,2002.

      [3]李長春,王鋒,戴國洪,等.基于OpenGL的VRML文件格式的解析[J].電腦開發(fā)與應(yīng)用,2008(3):62-63.

      [4]張家泰,王能健,李剛,等.CAD標準件庫應(yīng)用設(shè)計[J].機械工程師,1998(4):54 -56.

      [5]劉潔.三維CAD標準件庫的建模與實現(xiàn)方法研究[D].西安:西安理工大學(xué)圖書館,2001.

      [6]李穎,薛海斌,朱仲立.OpenGL函數(shù)與范例解析手冊[M].北京:國防工業(yè)出版社,2002:230-260.

      [7]韋靈麗.基于OpenGL的虛擬物體仿真的方法及其實現(xiàn)[J].現(xiàn)代計算機:專業(yè)版,2009(7):174-176.

      [8]楊化冰,劉忠麗,劉忠軒,等.虛擬現(xiàn)實構(gòu)造語言VRML[M].北京:北京航空航天大學(xué)出版社,2000:43-56.

      [9]張旭光.基于OpenGL的3D建模與編程[J].今日科苑,2008(14):190-192.

      [10]黎華,肖偉.幾種三維模型文件在OpenGL中的輸入與處理[J].物探化探計算技術(shù),2007(1):23-25.

      [11]陳炳發(fā),陸楠,伍鐵軍.一種面向OpenGL的三維模型的轉(zhuǎn)化方法[J].小型微型計算機系統(tǒng),2004(3):475-477.

      [12]吳昊,劉建業(yè),趙偉,等.基于VC和 OpenGL的導(dǎo)航仿真系統(tǒng)三維物體建模的實現(xiàn)[J].航空電子技術(shù),2004(2):42-47.

      [13]徐東亮,孿東海.基于OpenGL的虛擬鋪放機建模及參數(shù)化驅(qū)動[J].武漢理工大學(xué)學(xué)報:信息與管理工程版,2010,32(3):403 -405.

      猜你喜歡
      格式文件芯模面片
      淺析現(xiàn)澆混凝土空心樓蓋質(zhì)量控制要點
      初次來壓期間不同頂板對工作面片幫影響研究
      使用“格式文件”將徠卡儀器數(shù)據(jù)導(dǎo)出成cass 格式的方法
      擠壓芯模
      鋁加工(2019年4期)2019-03-30 01:53:26
      編寫徠卡TS02型全站儀格式文件的方法探索
      甜面片里的人生
      幸福家庭(2016年3期)2016-04-05 03:47:08
      一種橡膠制品模具芯模
      橡膠科技(2016年2期)2016-02-25 03:33:16
      回歸基礎(chǔ) 到底什么是RAW格式文件?
      基于Office Open XML格式文件的電子取證方法研究
      青海尕面片
      全椒县| 景宁| 景东| 兴宁市| 寿宁县| 抚州市| 西乌| 衢州市| 景谷| 阿巴嘎旗| 江油市| 高陵县| 临海市| 焉耆| 玉林市| 共和县| 张北县| 宣化县| 都兰县| 荥阳市| 泊头市| 平江县| 丁青县| 成武县| 承德市| 漾濞| 洪泽县| 潼南县| 察隅县| 阿城市| 连云港市| 修武县| 台北市| 宝丰县| 东方市| 阜城县| 东明县| 昭平县| 福海县| 九江县| 甘洛县|