亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        田會方,張 毅

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

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

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

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

        1 VRM L文件格式分析

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

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

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

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

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

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

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

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

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

        圖2 節(jié)點(diǎn)關(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è)置描述視點(diǎn)的字符串Name,position域的域值用來設(shè)置視點(diǎn)在場景中的空間位置,orientation域的域值用來設(shè)置視點(diǎn)在場景中的空間場景,也就是觀察者面對的方向,fieldOfView域的域值用來設(shè)置視點(diǎn)視角大小。

        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的實(shí)用庫,是對OpenGL核心庫的補(bǔ)充,可以執(zhí)行坐標(biāo)轉(zhuǎn)換、繪制NURBS曲線和曲面等任務(wù);glut.h是OpenGL的實(shí)用工具箱,可以執(zhí)行多窗口繪制、生成層疊式彈出窗口等[6-7]。

        初始化OpenGL的步驟為:

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

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

        (3)當(dāng)觸發(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ù)組

        …}

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

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

        pSceneGraph→Add(pMesh);

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

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

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

        CGLTransform類用來描述坐標(biāo)變換;

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

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

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

        class CGLMesh3d

        {

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

        {

        intm_Index1;//第一個頂點(diǎn)的索引1

        intm_Index2;//第二個頂點(diǎn)的索引2

        intm_Index3;//第三個頂點(diǎn)的索引3

        };

        }

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

        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()

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

        }

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

        3 實(shí)例說明

        首先利用三維建模軟件Pro/E建立纏繞芯模的模型,然后將該模型輸出為.wrl格式,即VRML格式文件,接著再在VC++中對文件進(jìn)行解析,讀出三維幾何模型,并利用OpenGL對零件渲染,重繪制[13],將所需要零件的信息添加到零件模型中去,從而達(dá)到對機(jī)械零件三維模型的分析、解析目的。圖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中難以實(shí)現(xiàn)纖維纏繞的運(yùn)動仿真,即使利用其二次開發(fā)也不能達(dá)到繪制纏繞纖維的目的,因此可采取將三維的CAD轉(zhuǎn)化為中性的VRML文件,再由OpenGL對其渲染和解析,在VC++中生成三維模型,并獲取其關(guān)鍵尺寸,以方便后續(xù)模型的仿真和新的芯模的生成。

        [1]華志勇,劉蘇.基于VRML和OpenGL的Pro/E三維模型格式解析及渲染實(shí)現(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標(biāo)準(zhǔn)件庫應(yīng)用設(shè)計(jì)[J].機(jī)械工程師,1998(4):54 -56.

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

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

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

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

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

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

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

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

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

        猜你喜歡
        格式文件芯模面片
        淺析現(xiàn)澆混凝土空心樓蓋質(zhì)量控制要點(diǎn)
        初次來壓期間不同頂板對工作面片幫影響研究
        使用“格式文件”將徠卡儀器數(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格式文件的電子取證方法研究
        青海尕面片
        精品国产一区二区三区av麻| 国产农村三片免费网站| 一区二区三区在线视频免费观看| av在线免费观看男人天堂| 十八禁视频网站在线观看| 国产乱人伦精品一区二区| 成人无码网www在线观看| 国产一区二区三区中出| 暖暖 免费 高清 日本 在线| 三年片免费观看大全国语| 精品视频专区| 国产在线一区二区三区不卡| 国产精品二区一区二区aⅴ污介绍| 老熟妻内射精品一区| 亚洲中文一本无码AV在线无码| 人日本中文字幕免费精品| 朝鲜女人大白屁股ass孕交| 曰本女人与公拘交酡免费视频| 久久精品韩国日本国产| 午夜福利视频一区二区二区| 亚洲精品无码久久久久av老牛 | 国产精品免费久久久免费| 国产色a在线观看| 国产成人精品三上悠亚久久| 日本一区二区三区精品免费| 亚洲精品少妇30p| 91精品一区国产高清在线gif| 青青草视频原手机在线观看| 国内精品少妇高潮视频| 国产乱子伦农村叉叉叉| 亚洲激情人体艺术视频| 日本妇女高清一区二区三区 | 加勒比婷婷色综合久久| 丰满人妻一区二区三区视频53 | 久久久婷婷综合五月天| 日韩精品在线一二三四区| 中文字幕亚洲乱码熟女在线| 免费无码中文字幕A级毛片| 人妻av在线一区二区三区| 亚洲精品天天影视综合网| 四虎影永久在线观看精品|