潘丹丹,孫文磊,趙群
(新疆大學(xué)機械工程學(xué)院,新疆烏魯木齊830047)
隨著現(xiàn)代制造業(yè)的高速發(fā)展,企業(yè)之間的競爭也日趨激烈,面對Internet的網(wǎng)絡(luò)化和制造業(yè)信息化的現(xiàn)狀,CSCD (Computer Supported Cooperative Design)將分布式資源通過Internet網(wǎng)絡(luò)實現(xiàn)資源共享和集成同時進行網(wǎng)絡(luò)協(xié)同設(shè)計,通過網(wǎng)絡(luò)協(xié)同設(shè)計系統(tǒng)促使對產(chǎn)品需求者和設(shè)計人員的實時交互[1-2],可以對同一零件進行在線動態(tài)瀏覽(能夠?qū)梢暬寮С值?wrl 格式3D模型進行旋轉(zhuǎn)、移動、縮放等動態(tài)操作)、零件參數(shù)化驅(qū)動和屬性信息的提取等。
SolidWorks是現(xiàn)代比較常用的集CAD/CAM/CAE于一體的三維設(shè)計軟件,給用戶提供了強大的二次開發(fā)接口SolidWorks API,凡支持COM技術(shù)的開發(fā)工具,如C,C++,VB,C#,.NET,Delphin 等均可對其進行開發(fā),該系統(tǒng)采用C#和ASP.NET 作為二次開發(fā)工具,功能強大且操作簡單。中小型企業(yè)的設(shè)計人員通過使用該系統(tǒng),減少了開發(fā)周期,提高了設(shè)計效率,降低了成本[3]。
協(xié)同設(shè)計系統(tǒng)主要通過網(wǎng)絡(luò)實現(xiàn)三維圖形零件庫的在線動態(tài)瀏覽、零件參數(shù)化驅(qū)動和屬性信息的提取等。在實現(xiàn)時可以有3種方案:開放的exe可執(zhí)行程序,dll 插件擴展SolidWorks 和基于Web 瀏覽器對SolidWorks API 進行二次開發(fā)。對于開放的exe可執(zhí)行程序方案,要求程序在本機上執(zhí)行,通過網(wǎng)絡(luò)調(diào)用服務(wù)器上的零件庫并進行開發(fā)交流,但它需要將程序安裝在本地的客戶端上,對平臺的依賴性很大。第二種用api 開發(fā)插件來擴展SolidWorks 則需要在客戶端安裝SolidWorks,加大了客戶端的壓力。而第三種則只需要在服務(wù)器上安裝Solidworks 并對其進行開發(fā),然后客戶可以在不同的平臺通過瀏覽器直接訪問服務(wù)器的資源。在比較3種方案的優(yōu)缺點后,決定采用 Web 開發(fā)的模式。系統(tǒng)的總體框架如圖1所示。
圖1 系統(tǒng)詳細構(gòu)架圖
該系統(tǒng)采用B/S模式,與傳統(tǒng)的C/S模式相比,主要功能均在服務(wù)器上實現(xiàn),用戶只需通過Web 瀏覽器向服務(wù)器發(fā)送申請,經(jīng)過服務(wù)器處理后返回給用戶Web 頁面。另外,Web 應(yīng)用程序必須經(jīng)過后臺數(shù)據(jù)庫儲存數(shù)據(jù)實現(xiàn)與用戶的交互功能[4]?;赪eb的應(yīng)用程序可以劃分為3個層次:用戶層、業(yè)務(wù)邏輯層和數(shù)據(jù)支持層。其中用戶層只需用戶安裝可視化插件,通過瀏覽器即可訪問系統(tǒng)的功能頁面。邏輯處理層是參數(shù)表達式提取和屬性信息提取的關(guān)鍵,以ASP.NET 作為開發(fā)工具,通過編寫C# 語言程序代碼,操作SolidWorks API 獲得系統(tǒng)所需的數(shù)據(jù)信息。數(shù)據(jù)訪問層用于儲存零件模型文件、可視化文件、參數(shù)說明文件等,完成與用戶的交互模塊,實現(xiàn)資源共享功能。
零件參數(shù)化建模分為兩種方法:程序驅(qū)動法就是整個建模過程全部用程序進行建模而參數(shù)化建模法是在已有的零件模型基礎(chǔ)上調(diào)用SolidWorks API 對零件參數(shù)進行驅(qū)動建模。前者對編程人員要求比較高,適合于建立比較簡單的模型,參數(shù)變量較多的零件;后者對程序開發(fā)人員要求較低,只需要對已有的模型尺寸進行相應(yīng)的修改,重新生成模型即可[5]。協(xié)同設(shè)計系統(tǒng)采用后一種方法進行零件參數(shù)化驅(qū)動及屬性信息的提取。
SolidWorks是基于Windows 平臺集CAD/CAE/CAM/PDM 于一體的比較成熟的三維設(shè)計軟件,SolidWorks 本身提供了上千個API函數(shù),可以通過COM技術(shù)對其進行二次開發(fā)。SolidWorks是API函數(shù)的最高層對象,它能夠直接或間接地訪問其他所有函數(shù),通過它可以直接訪問SolidWorks的基本操作,如SolidWorks軟件的打開、關(guān)閉、生成和結(jié)束文件,設(shè)置當前的激活文件,提取零件屬性信息及參數(shù)表達式等[6]。在C#中使用SolidWorks API的方法如下:
在對零件參數(shù)化驅(qū)動及屬性信息的提取過程中為了方便調(diào)用SolidWorks API函數(shù)庫,該系統(tǒng)對Solid-Works API 主要功能函數(shù)進行封裝以方便協(xié)同設(shè)計系統(tǒng)的調(diào)用,其SolidWorks API 封裝圖如圖2所示。
圖2 SolidWorks API 封裝圖
通過對SolidWorks 類庫的引用,對SolidWorks 主要功能函數(shù)進行封裝以方便協(xié)同設(shè)計系統(tǒng)的調(diào)用,SolidWorks的主要封裝函數(shù)及其功能說明如下:
為了保持和UG、Proe/Engineer,SolidEdge 等三維設(shè)計產(chǎn)品的兼容性,在封裝里包涵了轉(zhuǎn)化Iges 格式的文件。
SQL Server 數(shù)據(jù)庫存儲數(shù)據(jù)結(jié)構(gòu),三維設(shè)計軟件如SolidWorks、UG、Pro/Engineer、SolidEdge 等的用戶通過Web 瀏覽器,三維可視化插件訪問服務(wù)器,通過服務(wù)器操作SolidWorks API函數(shù)等,利用ASP.NET 對其進行二次開發(fā),將零件模型轉(zhuǎn)換成可視化文件,提取參數(shù)表達式及屬性信息存于參數(shù)說明文件,最終從數(shù)據(jù)庫中提取相關(guān)信息進行在線動態(tài)瀏覽,參數(shù)化驅(qū)動和屬性信息顯示等主要功能[7]。
首先需要提取SolidWorks 平臺上三維實體模型數(shù)據(jù)信息,然后將其存入數(shù)據(jù)庫中,供后續(xù)的在線動態(tài)瀏覽,參數(shù)化驅(qū)動和屬性信息等使用。所以說,特征信息的提取離不開數(shù)據(jù)庫的支持,該系統(tǒng)采用SQLServer 2005 對數(shù)據(jù)進行后臺存儲,具體存儲內(nèi)容如圖3所示。
圖3 數(shù)據(jù)庫訪問層次結(jié)構(gòu)圖
根據(jù)協(xié)同設(shè)計的原理,設(shè)計整個系統(tǒng)的框圖如圖4所示。
圖4 系統(tǒng)實現(xiàn)的整體框圖
圖5 協(xié)同設(shè)計系統(tǒng)Web 頁面圖
在進入首頁后,可以看到對系統(tǒng)所有的項目模型的預(yù)覽以及簡單介紹。然后,點擊相應(yīng)的項目就可以進入相應(yīng)的項目目錄,在目錄中,允許用戶對項目做簡單的預(yù)覽。但是,如果用戶需要對項目進行個人更改時如收藏、參數(shù)化驅(qū)動等就需要先申請用戶進行登錄,然后根據(jù)相應(yīng)的權(quán)限對項目的零件目錄進行相應(yīng)的更改。另外,系統(tǒng)管理方面分為用戶的管理以及整個項目的管理。對于用戶的管理,可以簡單地建立用戶名匯總表,對用戶進行添加、刪除以及權(quán)限更改等操作。而對于項目或零件的管理又有管理員的總體管理以及用戶對個人零件庫的管理。系統(tǒng)采用c#asp.net 開發(fā),對系統(tǒng)的實現(xiàn)過程如圖5所示。
系統(tǒng)從首頁到各個功能頁在Windows 平臺下能夠運行正常,而且對于IE與Firefox 瀏覽器的支持都能夠達到要求。
研究了基于Web的SolidWorks 協(xié)同設(shè)計系統(tǒng),首先要解決的問題是SolidWorks API的熟練應(yīng)用。其次針對系統(tǒng)的結(jié)構(gòu),對系統(tǒng)總體框架、零件參數(shù)化驅(qū)動及屬性信息提取關(guān)鍵技術(shù)和網(wǎng)絡(luò)協(xié)同設(shè)計系統(tǒng)數(shù)據(jù)庫訪問技術(shù)進行了深入的分析。最后基于以上理論知識實際應(yīng)用到ASP.NET的協(xié)同設(shè)計系統(tǒng)?;赪eb的SolidWorks 協(xié)同設(shè)計系統(tǒng)是一種面向服務(wù)的分布式應(yīng)用,隨著現(xiàn)代制造業(yè)逐漸向網(wǎng)絡(luò)化和信息化方向發(fā)展,利用Internet 對SolidWorks 進行二次開發(fā)使得中小型企業(yè)能夠直接通過網(wǎng)絡(luò)進行三維圖形零件庫的在線動態(tài)瀏覽、零件參數(shù)化驅(qū)動及屬性信息的提取等,加強了企業(yè)之間的交流和合作,節(jié)約了企業(yè)的成本和提高了產(chǎn)品設(shè)計效率。
該系統(tǒng)的實際應(yīng)用目前還在測試階段,而且內(nèi)部很多功能上問題以及安全上的問題還有待于進一步解決。但是,通過該系統(tǒng),已經(jīng)能夠完成一個協(xié)同設(shè)計系統(tǒng)所需要的大多數(shù)功能。
【1】JAMES Anne,OLIVIERA Jonice.Computer Supported Cooperative Work in Design[J].Future Generation Computer Systems,2011,27(1):56-57.
【2】SHEN Weiming,HAO Qi,LI Weidong.Computer Supported Collaborative Design:Retrospective and Perspective[J].Computers in Industry,2008,59(9):855-862.
【3】PRATT Wanda,REDDY Madhu C,MCDONALD David,et al.Incorporating Ideas from Computer-supported Cooperative Work[J].Journal of Biomedical Informatics,2004,37:128-137.
【4】EVJEN Bill,HANSELMAN Scott,RADER Devin,等.ASP.NET2.0 高級編程[M].楊亞,譯.北京:清華大學(xué)出版社,2007.
【5】呂曉燕,賈海英,張曉鐘.基于VB 對SolidWorks 二次開發(fā)方法的研究[J].機械設(shè)計與制造,2005(3):114-116.
【6】江征風,陳雷,丁毓峰.基于SolidWorks的零件特征幾何信息提取方法研究[J].組合機床與自動化加工技術(shù),2006(5):1-7.
【7】SolidWorks2010 API 使用指南[M].SolidWorks 公司出版.