0 引言
隨著市場(chǎng)競(jìng)爭(zhēng)的日趨激烈與制造業(yè)信息化程度的加深,企業(yè)間對(duì)獲取與共享信息的效率愈來(lái)愈高。據(jù)美國(guó)先進(jìn)制造研究公司(AMR)的一項(xiàng)研究結(jié)果表明,產(chǎn)品中外購(gòu)零件的比重正在逐漸上升,已經(jīng)從五年前的40%上升至80%甚至更多。因此,建立零件庫(kù)系統(tǒng)是必要的。目前國(guó)內(nèi)外研究機(jī)構(gòu)或企業(yè)已經(jīng)開(kāi)發(fā)出了很多零件庫(kù)系統(tǒng)原型并已經(jīng)投入商業(yè)運(yùn)營(yíng)模式,其中比較典型的有:國(guó)外:3D ContentCentral系統(tǒng)、TraceParts系統(tǒng)、Web2CAD系統(tǒng)、InPart系統(tǒng);國(guó)內(nèi)的有:3DSource云應(yīng)用中心、中國(guó)機(jī)械網(wǎng)等零件庫(kù)系統(tǒng)。這些系統(tǒng),大多數(shù)都采用了B/S構(gòu)架,同時(shí)支持多種主流三維CAD建模軟件,如Pro/E、Catia、SolidWorks等;系統(tǒng)采用不同的方式構(gòu)建數(shù)據(jù)庫(kù),有“參數(shù)+模板”、大量數(shù)據(jù)形式存儲(chǔ)等方式;用戶(hù)可以使用網(wǎng)絡(luò)瀏覽器訪問(wèn)系統(tǒng),也可以在線預(yù)覽零件模型。總之,這些系統(tǒng)可以為用戶(hù)提供快速引用零件資源的平臺(tái)。但是,就每個(gè)單獨(dú)的系統(tǒng)而言,都或多或少的存在著缺點(diǎn)。比如:3DSource云應(yīng)用中心系統(tǒng),使用戶(hù)無(wú)法快速定位到自己所需的零件模型資源,下載的3D模型沒(méi)有設(shè)計(jì)參數(shù),不利于用戶(hù)的后續(xù)設(shè)計(jì)工作:中國(guó)機(jī)械網(wǎng)零件庫(kù)圖庫(kù)目前只能提供對(duì)NX和SolidWorks兩種三維軟件的接口。
因此,本文通過(guò)研究Inventor的二次開(kāi)發(fā)技術(shù)和數(shù)據(jù)庫(kù)接口訪問(wèn)技術(shù),建立了一個(gè)Web三維零件庫(kù)系統(tǒng)。系統(tǒng)中,綜合應(yīng)用ASP.NET、ADO.NET、Web3D等技術(shù),采用“參數(shù)+模板”的模式,開(kāi)發(fā)出了基于Inventor的Web三維零件庫(kù)系統(tǒng)。
1 系統(tǒng)結(jié)構(gòu)
1.1 系統(tǒng)開(kāi)發(fā)工具的選用
作者開(kāi)發(fā)該系統(tǒng)時(shí)采用的開(kāi)發(fā)工具概括如下:
三維CAD軟件:Autodesk Inventor Professional 2012;
編程調(diào)試軟件:Visual Studio.NET 2008(以.NET FrameWork 3.5為基礎(chǔ)、IIS 6.0為服務(wù)器,選用C#作為服務(wù)端語(yǔ)言、JavaScript作為前臺(tái)腳本語(yǔ)言);
數(shù)據(jù)庫(kù)軟件采用Microsoft SQL Server 2005。
1.2 零件庫(kù)系統(tǒng)總體結(jié)構(gòu)
Web三維零件庫(kù)系統(tǒng)采用了B/S結(jié)構(gòu),也就是所謂的三層體系結(jié)構(gòu),即表現(xiàn)層、業(yè)務(wù)層和數(shù)據(jù)層。系統(tǒng)的總體框架如圖1所示。
圖1 系統(tǒng)總體框架圖
表現(xiàn)層是對(duì)用戶(hù)接口的展示,是與用戶(hù)進(jìn)行交互(數(shù)據(jù)交互)的窗口。用戶(hù)可以通過(guò)這一層在瀏覽器上瀏覽信息,同時(shí),用戶(hù)可以通過(guò)鼠標(biāo)或鍵盤(pán),提交各種請(qǐng)求,實(shí)現(xiàn)用戶(hù)想要的功能。業(yè)務(wù)層和數(shù)據(jù)層都是由服務(wù)器端應(yīng)用程序組成。業(yè)務(wù)層是系統(tǒng)的中間層,也是過(guò)程層。數(shù)據(jù)層是整個(gè)系統(tǒng)的內(nèi)容和支撐,該層將根據(jù)業(yè)務(wù)層的需要調(diào)用相應(yīng)的數(shù)據(jù),它以數(shù)據(jù)表的形式存儲(chǔ)了零件庫(kù)中的所有零件參數(shù)信息和零件描述信息,并存儲(chǔ)了零件模板文件(*.ipt)數(shù)據(jù)和零件的瀏覽文件(*.wrl)數(shù)據(jù)以及標(biāo)準(zhǔn)格式文件(*.stp)數(shù)據(jù)。
2 系統(tǒng)的實(shí)現(xiàn)
2.1 系統(tǒng)的設(shè)計(jì)思路
本零件庫(kù)系統(tǒng)利用Inventor軟件的參數(shù)化建模方法,按照模型模板+參數(shù)系列的形式構(gòu)建模型數(shù)據(jù)庫(kù),當(dāng)用戶(hù)想要使用零件模型時(shí),系統(tǒng)通過(guò)在線調(diào)用Inventor_次開(kāi)發(fā)接口,即時(shí)實(shí)現(xiàn)參數(shù)化驅(qū)動(dòng)獲取用戶(hù)所需的模型。
2.2 系統(tǒng)開(kāi)發(fā)的關(guān)鍵技術(shù)
2.2.1 基于.NET平臺(tái)下的Inventor=次開(kāi)發(fā)技術(shù)
為了讓用戶(hù)能夠更好地實(shí)現(xiàn)二次開(kāi)發(fā)技術(shù),Inventor軟件提供了強(qiáng)大的API二次開(kāi)發(fā)接口。Inventor API是一種以面向?qū)ο蟮姆绞教峁⿷?yīng)用程序?qū)ο蠊δ艿膽?yīng)用程序接口。它提供了Inventor的各種對(duì)象的內(nèi)在功能,并且各個(gè)對(duì)象間是一種相互繼承的關(guān)系,該繼承關(guān)系的關(guān)鍵在于根對(duì)象Application,通過(guò)獲取對(duì)Application對(duì)象的訪問(wèn)權(quán),調(diào)用與其相關(guān)的其他對(duì)象。針對(duì)Inventor API,用戶(hù)可以用支持自動(dòng)化(OLE Automation)技術(shù)的各種高級(jí)語(yǔ)言來(lái)控制Inventor的各種對(duì)象與其相關(guān)屬性和方法,進(jìn)而開(kāi)發(fā)出自己需要的應(yīng)用程序。
在Inventor Professional 2012版本中,InventorAPI for.NET提供了多個(gè)DLL文件,但是,對(duì)于Web零件庫(kù)系統(tǒng)的開(kāi)發(fā)功能的實(shí)現(xiàn),只需要在.NET平臺(tái)下引用Autodesk.lnventor.Interop.dll文件,通過(guò)聲明根對(duì)象Application以及庫(kù)文件的其他對(duì)象,就可以以面向?qū)ο蟮姆绞嚼肅#語(yǔ)言的語(yǔ)法調(diào)用各種功能函數(shù),來(lái)完成Inventor的絕大部分操作,如生成VRML文件,對(duì)零件的參數(shù)化驅(qū)動(dòng)等。
在本系統(tǒng)中,通過(guò)引用COM組件對(duì)象,也就是Inventor的二次開(kāi)發(fā)接口類(lèi)庫(kù)AutodeskInventor Object Library,獲取對(duì)Application的訪問(wèn)權(quán),利用C#語(yǔ)言以面向?qū)ο蟮姆绞骄帉?xiě)應(yīng)用程序來(lái)完成對(duì)Inventor三維零件圖形的各種操作,如打開(kāi)/關(guān)閉三維零件模型文件、導(dǎo)出VRML文件、零件參數(shù)化驅(qū)動(dòng)、下載/上傳等。具體過(guò)程詳見(jiàn)Inventor二次開(kāi)發(fā)步驟流程圖(如圖2所示)。
圖2 Inventor二次開(kāi)發(fā)過(guò)程
2.2.2 基于ADO.NET的數(shù)據(jù)庫(kù)訪問(wèn)接口
ADO.NET是一組用于和數(shù)據(jù)源進(jìn)行交互的面向?qū)ο箢?lèi)庫(kù),提供了對(duì)關(guān)系型、XML和應(yīng)用程序數(shù)據(jù)的訪問(wèn)。在.NET框架中,ADO.NET類(lèi)庫(kù)位于System.Data命名空間下。所以,在Visual Studio開(kāi)發(fā)平臺(tái)中,必須先引用System.Data.dll文件,才能使用ADO.NET中的數(shù)據(jù)庫(kù)訪問(wèn)對(duì)象。
在本系統(tǒng)中,以SQL Server 2005為開(kāi)發(fā)工具,利用ADO.NET的數(shù)據(jù)訪問(wèn)接口技術(shù),實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的查詢(xún)、添加、修改及刪除等功能;并減輕服務(wù)器負(fù)擔(dān),提高了系統(tǒng)的運(yùn)行效率,為用戶(hù)提供更好的Web應(yīng)用程序。
2.3 系統(tǒng)功能模塊的實(shí)現(xiàn)
2.3.1 三維CAD模型的可視化
在本系統(tǒng)中,結(jié)合了最新的Web3D技術(shù),實(shí)現(xiàn)了在Web頁(yè)面中顯示Inventor的三維模型,同時(shí)用戶(hù)可以對(duì)模型進(jìn)行移動(dòng)、旋轉(zhuǎn)、縮放等操作。
目前比較流行的Web3D技術(shù)主要有:VRML。JAVA3D,SHOCKWAVE3D,X3D等。綜合比較幾種Web3D技術(shù),VRML的數(shù)據(jù)文件所描述的數(shù)據(jù)包括三維網(wǎng)格數(shù)據(jù),場(chǎng)景信息,燈光材質(zhì)及交互信息,能夠較為真實(shí)的還原模型的外形信息,能夠在三維場(chǎng)景中與用戶(hù)進(jìn)行交互,其描述3D場(chǎng)景的能力較為出眾。所以,本系統(tǒng)采用了VRML(Virtual Reality Modeling Language,虛擬現(xiàn)實(shí)建模語(yǔ)言)插件。
在本系統(tǒng)的開(kāi)發(fā)過(guò)程中,通過(guò)對(duì)Inventor的二次開(kāi)發(fā)把三維模型文件格式(*.ipt)格式轉(zhuǎn)化為模型瀏覽文件格式(*.wrl)。在應(yīng)用程序中,安裝VRML瀏覽器插件(如BS Contact VRML),然后可通過(guò)HTML語(yǔ)言中的<object></object>標(biāo)簽把插件嵌入網(wǎng)頁(yè)中,并指定其控件識(shí)別碼(ID),便可以在網(wǎng)頁(yè)中動(dòng)態(tài)的顯示三維模型的瀏覽文件。
2.3.2 在線參數(shù)化驅(qū)動(dòng)
所謂在線參數(shù)化驅(qū)動(dòng),就是用戶(hù)可以在系統(tǒng)界面中填寫(xiě)或者修改已有的模型設(shè)計(jì)參數(shù),進(jìn)而實(shí)現(xiàn)快速的變形設(shè)計(jì)。這樣,不僅可以減少數(shù)據(jù)庫(kù)的信息存儲(chǔ)量,而且能夠滿足用戶(hù)的特殊要求。
系統(tǒng)中零件在線參數(shù)化驅(qū)動(dòng)的過(guò)程,如圖3所示。用戶(hù)登錄系統(tǒng),進(jìn)入首頁(yè)后,可以直接從樹(shù)形菜單中選擇零件名,瀏覽器把用戶(hù)的選擇提交給服務(wù)器,服務(wù)器從數(shù)據(jù)庫(kù)中讀取相應(yīng)的零件的所有信息(包括三維可視化模型、二維尺寸標(biāo)注圖、產(chǎn)品實(shí)物圖、驅(qū)動(dòng)參數(shù)表達(dá)式等),并把信息返回給客戶(hù)端。用戶(hù)根據(jù)自己的需求在系統(tǒng)的要求范圍內(nèi)修改模型文件的原始參數(shù),并將修改后的參數(shù)提交給服務(wù)器,服務(wù)器利用Inventor_次開(kāi)發(fā)接口函數(shù)啟動(dòng)Inventor應(yīng)用程序,調(diào)用庫(kù)中的三維零件模型模板文件和用戶(hù)提交的修改后的參數(shù)值,更新原始模型模板文件,完成零件的在線參數(shù)化驅(qū)動(dòng);然后,在服務(wù)端保存更新后的零件模型文件(*.ipt),導(dǎo)出零件的VRML文件(*.wrl);最后,服務(wù)器將更新后的新零件模型的瀏覽文件(*.wrl)更新到客戶(hù)端供用戶(hù)瀏覽,而存于服務(wù)端的模型文件則供用戶(hù)下載。
圖3 在線參數(shù)化驅(qū)動(dòng)流程圖
2.3.3 零件資源的動(dòng)態(tài)擴(kuò)充
三維零件資源是整個(gè)系統(tǒng)的內(nèi)容,是系統(tǒng)正常運(yùn)行的支撐和保證。對(duì)三維零件資源的動(dòng)態(tài)擴(kuò)充,即三維零件資源入庫(kù)(文件上傳)。該操作包括文件上傳、Inventor的二次開(kāi)發(fā)接口程序的調(diào)用以及數(shù)據(jù)庫(kù)的訪問(wèn)等操作,過(guò)程比較復(fù)雜。系統(tǒng)對(duì)三維零件資源的擴(kuò)充分為兩種模式:?jiǎn)我涣慵Y源入庫(kù)和批量零件資源入庫(kù)。兩種模式下,基本原理是相似的,具體的實(shí)現(xiàn)過(guò)程略有不同。由于單一零件資源入庫(kù)的過(guò)程比較簡(jiǎn)單,下面以管理員批量零件資源文件上傳為例,說(shuō)明整個(gè)過(guò)程。
系統(tǒng)中采用ZIP壓縮包的格式實(shí)現(xiàn)批量文件的上傳,故在ASP.NET應(yīng)用程序中需添加ICSharp-Code組件來(lái)完成文件的壓縮和解壓。管理員登陸后臺(tái)管理系統(tǒng)后,選擇需要上傳的文件,以ZIP格式進(jìn)行壓縮,把壓縮后的文件上傳給服務(wù)器;服務(wù)器接收到文件后,遍歷目錄文件中的所有節(jié)點(diǎn),確定當(dāng)前入庫(kù)的資源是否已經(jīng)存在,若不存在,開(kāi)始上傳;服務(wù)端利用ICSharp-Code組件對(duì)上傳的文件進(jìn)行解壓,通過(guò)服務(wù)端應(yīng)用程序讀取逐一被解壓的文件夾或文件,對(duì)所有的零件資源進(jìn)行統(tǒng)一的零件級(jí)編號(hào),保存能到零件庫(kù)中。然后,通過(guò)Inventor二次開(kāi)發(fā)接口啟動(dòng)Inventor應(yīng)用程序,提取相關(guān)的數(shù)據(jù),導(dǎo)出WRL格式文件,并保存到VRML文件庫(kù)中。最后,通過(guò)ADO.NET數(shù)據(jù)庫(kù)訪問(wèn)接口連接服務(wù)端數(shù)據(jù)庫(kù),將零件的所有數(shù)據(jù)信息存儲(chǔ)到數(shù)據(jù)庫(kù)中,完成零件資源的入庫(kù)。
3 零件庫(kù)系統(tǒng)實(shí)例
系統(tǒng)根據(jù)不同類(lèi)別劃分了多個(gè)子庫(kù),包括滾動(dòng)軸承零件庫(kù)、標(biāo)準(zhǔn)齒輪零件庫(kù)、連接件與緊固件零件庫(kù)、組合夾具零件庫(kù)等。Web三維零件庫(kù)系統(tǒng)首頁(yè)如圖4所示。
圖4 系統(tǒng)的首頁(yè)
用戶(hù)在該系統(tǒng)注冊(cè)登錄后,點(diǎn)擊各子零件庫(kù)標(biāo)簽就可以進(jìn)入相應(yīng)的圖庫(kù)系統(tǒng)。如圖5所示為常用滾動(dòng)軸承圖庫(kù),該系統(tǒng)包含了大量的有關(guān)常用滾動(dòng)軸承的三維零件圖形。
圖5 常用滾動(dòng)軸承圖庫(kù)
進(jìn)入子零件庫(kù)后,用戶(hù)可以根據(jù)需要對(duì)現(xiàn)有零件模板進(jìn)行在線參數(shù)化驅(qū)動(dòng),如圖6所示,零件在線參數(shù)化驅(qū)動(dòng)頁(yè)面。
圖6 零件在線參數(shù)化驅(qū)動(dòng)
4 結(jié)論
1)本文以Inventor的二次開(kāi)發(fā)技術(shù)為核心,通過(guò)網(wǎng)絡(luò)編程,把ASP.NET、ADO.NET、可視化技術(shù)以及數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)綜合與一體,實(shí)現(xiàn)了基于Web的Inventor-3D資源零件庫(kù)系統(tǒng)的研究與開(kāi)發(fā)。
2)基于該系統(tǒng),在不需要安裝Inventor軟件的情況下,用戶(hù)可以進(jìn)行三維零件模型的在線瀏覽、在線參數(shù)化驅(qū)動(dòng)、下載等操作。
3)用戶(hù)可以在系統(tǒng)中快速搜尋自己所需的零件并下載包含設(shè)計(jì)參數(shù)的3D模型,以進(jìn)行相關(guān)零件產(chǎn)品的二次開(kāi)發(fā)和再設(shè)計(jì),實(shí)現(xiàn)資源信息的共享。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:基于Web的Inventor-3D資源零件庫(kù)系統(tǒng)開(kāi)發(fā)
本文網(wǎng)址:http://www.ezxoed.cn/html/support/11121514295.html