李星霖-程蓉-基于SolidWorks軟件全參數(shù)機械制圖試題庫建設(shè)_第1頁
李星霖-程蓉-基于SolidWorks軟件全參數(shù)機械制圖試題庫建設(shè)_第2頁
李星霖-程蓉-基于SolidWorks軟件全參數(shù)機械制圖試題庫建設(shè)_第3頁
李星霖-程蓉-基于SolidWorks軟件全參數(shù)機械制圖試題庫建設(shè)_第4頁
李星霖-程蓉-基于SolidWorks軟件全參數(shù)機械制圖試題庫建設(shè)_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、深 圳 大 學本 科 畢 業(yè) 論 文(設(shè)計)題目: 基于SolidWorks軟件全參數(shù) 機械制圖試題庫建設(shè) 姓名: 李星霖 專業(yè): 機械設(shè)計制造及其自動化 學院: 機電與控制工程 學號: 2012110343 指導教師: 程蓉 職稱: 教授 2016年 04月 30 日深圳大學本科畢業(yè)論文(設(shè)計)誠信聲明本人鄭重聲明:所呈交的畢業(yè)論文(設(shè)計),題目基于SolidWorks軟件全參數(shù)機械制圖試題庫建設(shè) 是本人在指導教師的指導下,獨立進行研究工作所取得的成果。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式注明。除此之外,本論文不包含任何其他個人或集體已經(jīng)發(fā)表或撰寫過的作品成果。本人完全

2、意識到本聲明的法律結(jié)果。 畢業(yè)論文(設(shè)計)作者簽名: 日期: 年 月 日目 錄摘要51.引言51.1研究目的和意義51.2 SolidWorks二次開發(fā)技術(shù)的發(fā)展情況51.3 主要工作內(nèi)容61.4 論文安排61.5 本章小結(jié)62.機械制圖題庫系統(tǒng)開發(fā)所用工具72.1 SolidWorks軟件72.1.1 SolidWorks 軟件介紹72.1.2 SolidWorks 應用程序編程接口72.2 SolidWorks二次開發(fā)所用編程語言82.2.1 VB.NET82.2.2 VB.NET和VB6.0的區(qū)別82.3 開發(fā)環(huán)境82.3.1 Visual Studio介紹82.3.2 動態(tài)鏈接庫(DL

3、L)82.4 Microsoft Excel介紹92.5 本章小結(jié)93. 機械制圖題庫系統(tǒng)的設(shè)計103.1 機械制圖試題庫系統(tǒng)功能的需求分析103.2 機械制圖試題庫系統(tǒng)所用素材的制作103.2.1 零件及裝配體模型的構(gòu)造113.2.2 題目預覽圖的創(chuàng)建113.2.3 題目參考答案的制作123.2.4 零件名字及其基本參考尺寸數(shù)據(jù)庫的建立133.3 機械制圖試題庫系統(tǒng)的程序界面設(shè)計133.4 本章小結(jié)144. 機械制圖試題庫系統(tǒng)的實現(xiàn)154.1 創(chuàng)建SolidWorks插件154.1.1SolidWorks插件模板內(nèi)容介紹154.1.2修改SolidWorks插件模板174.2 實現(xiàn)機械制圖試

4、題庫系統(tǒng)操作界面功能194.2.1 添加引用、創(chuàng)建模塊及聲明全局變量194.2.2 試題列表自動生成模塊功能的實現(xiàn)214.2.3 所選試題預覽圖和參考尺寸自動顯示模塊功能的實現(xiàn)244.2.4 自動打開零件模型及工程圖圖紙模板功能的實現(xiàn)274.2.5 參考答案彈出窗口的實現(xiàn)304.3 本章小結(jié)325. 機械制圖試題庫系統(tǒng)實例335.1機械制圖試題庫系統(tǒng)實例演示335.2本章小結(jié)346. 總結(jié)與展望35參考文獻36致謝37Abstract.38基于SolidWorks軟件全參數(shù)機械制圖試題庫建設(shè)機械設(shè)計制造及其自動化(機電與控制工程) 李星霖學號:2012110343【摘要】“機械制圖”是工程與產(chǎn)

5、品信息的載體, 是工程界表達、交流的語言。機械制圖這門課程理論嚴謹、實踐性強,是普通高等院校本科專業(yè)重要的技術(shù)基礎(chǔ)課程。通過本課程的學習,能夠培養(yǎng)學生的科學思維方法、工程和創(chuàng)新意識。其中零件圖的表達是該課程的重點和難點,因此本文將針對零件圖的表達,開發(fā)一個題庫系統(tǒng),供學生訓練。本文以Visual Studio 2010為開發(fā)環(huán)境,VB.NET為開發(fā)語言,結(jié)合SolidWorks的二次開發(fā)技術(shù),開發(fā)一個機械制圖試題庫系統(tǒng)。該系統(tǒng)作為CAD軟件SolidWorks的插件,為學生們在SolidWorks上練習零件圖的表達提供簡潔、方便的環(huán)境和操作界面。本系統(tǒng)旨在培養(yǎng)學生繪制和閱讀標準零件圖樣的能力。

6、機械制圖試題庫系統(tǒng)收錄有大量的各種類型的典型零件模型及標準零件圖表達圖樣,基于CAD軟件SolidWorks運行。用戶選擇任意零件模型,進入練習模式之后,能夠從任意角度觀察零件的特征。學生在SolidWorks環(huán)境下完成自己的零件圖表達圖樣后,能夠調(diào)出系統(tǒng)中存有的標準答案進行對比,這方便學生完善、改進自己的表達方案,保證練習的質(zhì)量?!娟P(guān)鍵詞】機械制圖;試題庫;零件表達;SolidWorks二次開發(fā)1.引言1.1研究目的和意義 “機械制圖”是高等工科課程中的一門重要的基礎(chǔ)必修課,該課程的重要任務(wù)之一是培養(yǎng)工程技術(shù)人員必備的繪圖、讀圖能力1,2。工程圖樣被稱為“工程界的通用語言”,其中,零件圖是用

7、于表達零件結(jié)構(gòu)、大小及技術(shù)要求的圖樣,是加工和檢驗零件的依據(jù),是生產(chǎn)部門的重要技術(shù)文件,是對外技術(shù)交流的重要技術(shù)資料,一張完整地零件圖應該包含:(1)一組圖形;(2)全部尺寸;(3)技術(shù)要求;(4)標題欄3。由于缺乏實踐經(jīng)驗,其中“視圖表達”和“尺寸標注”是學生學習和掌握零件圖的重點和難點,需要學生經(jīng)過大量的練習來樹立起工程零件的表達概念。 因此,本課題針對學生的學習現(xiàn)狀和實際的教學需求,結(jié)合SolidWorks的二次開發(fā)技術(shù),開發(fā)一套適用于學生的練習題庫系統(tǒng),重點加強學生零件表達環(huán)節(jié)的訓練。1.2 SolidWorks二次開發(fā)技術(shù)的發(fā)展情況至今為止,SolidWorks的二次開發(fā)技術(shù)一般只用

8、來實現(xiàn)一些簡單的功能,比如利用SolidWorks的宏錄制功能,把一些常用的操作錄制下來,做成自動完成某些固定操作的宏,那么就能實現(xiàn)這些操作的自動化。也有更高級一點的應用,就是借助SolidWorks的API,開發(fā)標準零件庫,實現(xiàn)一些標準零件的自動生成。本文開發(fā)系統(tǒng)的原理類似于第二種情況。1.3 主要工作內(nèi)容系統(tǒng)設(shè)計開發(fā)過程中進行的主要工作內(nèi)容有:(1)設(shè)計題庫系統(tǒng)的操作系統(tǒng)和具體功能;(2)開發(fā)能引出試題庫主界面的SolidWorks的插件;(3)收集制作作為零件表達題目的零件或裝配體模型,并把它們的名稱和長寬高尺寸記錄到數(shù)據(jù)庫;(4)用SolidWorks的模型顯示功能調(diào)整零件或裝配體模型

9、的視圖,使之更加清晰鮮明。然后進行截圖,把截取到的圖形進行一定處理后作為每道題目的預覽圖;(5)根據(jù)機械制圖中表達零件視圖的基本原理和要求,為每個零件或裝配體模型繪制參考表達方案,并以圖片的形式保存在參考答案庫中。(6)根據(jù)機械制圖的國家標準中的相關(guān)規(guī)定,繪制幾張一定圖幅的圖紙模板,保存在圖紙模板庫中。1.4 論文安排第一章介紹本論文研究的背景、內(nèi)容以及它的目的和意義;第二章介紹本機械制圖試題庫系統(tǒng)開發(fā)過程中用到的工具和使用的編程語言;第三章介紹系統(tǒng)的設(shè)計過程,包括系統(tǒng)功能的需求分析、系統(tǒng)調(diào)用的資源庫的制作和系統(tǒng)界面的設(shè)計;第四章介紹如何創(chuàng)建SolidWorks插件以及系統(tǒng)功能模塊的具體實現(xiàn)過

10、程;第五章演示系統(tǒng)的使用情況;第六章對本文的工作進行了總結(jié)與展望。1.5 本章小結(jié)本章主要介紹了本論文研究的內(nèi)容、意義和目標,還介紹了SolidWorks二次開發(fā)的發(fā)展狀況,最后對論文的安排進行了說明。2.機械制圖題庫系統(tǒng)開發(fā)所用工具2.1 SolidWorks軟件2.1.1 SolidWorks 軟件介紹SolidWorks是一個應用于實體造型領(lǐng)域的,計算機輔助設(shè)計(CAD)和計算機輔助工程(CAE)軟件,在Microsoft Windows操作系統(tǒng)上運行。它是由達索系統(tǒng)公司發(fā)布的,根據(jù)官方的說法,在2013年有超過200萬的工程師和設(shè)計師在超過十六萬五千個公司中使用他們的產(chǎn)品4。該軟件功能

11、強大,操作簡單、易學,并能很大程度滿足設(shè)計者的設(shè)計意圖。因此,近年來國內(nèi)有越來越多公司和個人把SolidWorks作為他們的主要設(shè)計工具。本系統(tǒng)的開發(fā)針對目前較新,而且穩(wěn)定的SolidWorks 2014。2.1.2 SolidWorks 應用程序編程接口應用程序編程接口(API)是一些預先定義的函數(shù),目的是提供應用程序與開發(fā)人員基于某軟件或硬件得以訪問一組例程(某個系統(tǒng)對外提供的功能接口或服務(wù)的集合)的能力,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。 SldWorks對象是應用程序?qū)ο?,代表SolidWorks程序,它是在SolidWorks API對象層次結(jié)構(gòu)中的頂級對象;在SolidW

12、orks對象層次中的所有其它對象都處在SldWorks的下方,可被直接或間接訪問;如果一個對象只能間接訪問,則必須從對象層次結(jié)構(gòu)中,比該對象具有較高級別的另一個對象,引用該對象;大部分的SolidWorks API對象對應于用戶界面的功能,然而,一些SolidWorks的API對象提供的功能只能通過SolidWorks的API訪問5。SolidWorks的對象層次結(jié)構(gòu)圖1所示。圖1 SolidWorks對象層次結(jié)構(gòu)2.2 SolidWorks二次開發(fā)所用編程語言2.2.1 VB.NETVB.NET(Visual Basic .NET)是微軟于2002年推出的一種多范式編程語言,基于.NET框架

13、。隨著的Visual C語言的推出,它成為面向.NET框架的兩個主要語言之一。它適用的主要集成開發(fā)環(huán)境(IDE)是微軟開發(fā)的Visual Studio。2.2.2 VB.NET和VB6.0的區(qū)別 雖然VB.NET一定程度上繼承了VB6.0,并且它們都是以BASIC語言為基礎(chǔ)的,但是它們還是具有很大的區(qū)別的,可以說是兩門完全不同的編程語言6。VB.NET是完全面向?qū)ο蟮木幊陶Z言,它在多線程和結(jié)構(gòu)化異處理方面較VB6.0有了突破性的進步,使得該語言的功能也更加強大7。VB6.0的開發(fā)環(huán)境是獨立的,使得它跟其它語言寫的代碼交互時效率不高。而VB.NET與其它所有基于.NET框架的語言共用一個開發(fā)環(huán)境

14、,使得它在多語言編程時具有好得多的表現(xiàn)。另外,兩者的語法結(jié)構(gòu)也有很大的差異,比如在類和數(shù)組的定義上。2.3 開發(fā)環(huán)境2.3.1 Visual Studio介紹Miscrosoft Visual Studio是一個來自微軟的集成開發(fā)環(huán)境(IDE),它被用于開發(fā)的Microsoft Windows系統(tǒng)下的計算機程序,以及網(wǎng)站,網(wǎng)頁應用程序和網(wǎng)頁服務(wù)等; Visual Studio集成多種微軟軟件開發(fā)平臺,如Windows API,Windows Forms,Windows Presentation Foundation,Windows Store和Microsoft Silverlight8。Vi

15、sual Studio中支持不同的編程語言,并允許代碼編輯器和調(diào)試器(在不同程度上)支持幾乎所有的編程語言。內(nèi)置語言包括C, C +,VB.NET,C和F。對其他語言如Python和Ruby,Node.js等等的支持要求安裝單獨的語言服務(wù)。因為其強大的功能,它是現(xiàn)在非常流行的軟件開發(fā)工具。本系統(tǒng)開發(fā)使用的是目前非常穩(wěn)定和被廣泛采用的2010版本。2.3.2 動態(tài)鏈接庫動態(tài)鏈接庫(或DLL)是微軟的共享庫概念在Microsoft Windows和OS/2操作系統(tǒng)上的實現(xiàn),這些庫文件通常具有諸如DLL,OCX,或DRV這樣的文件擴展名;DLL文件和EXE文件(可執(zhí)行文件)是基本相同的,只是一個DL

16、L文件是不可以直接執(zhí)行的,因為操作系統(tǒng)需要一個EXE文件作為切入點來加載它9。DLL文件是應用程序的組件,程序在需要某個DLL文件的功能的時候才加載它,這樣就能提高程序運行的效率。程序在需要升級某個功能模塊的時候,只需要更新實現(xiàn)該功能的DLL文件即可,這有利于程序的升級維護。另外,很多DLL文件可供不同的應用軟件調(diào)用,這就提高了代碼的重復利用率,提高程序開發(fā)的效率。2.4 Microsoft Excel介紹Microsoft Excel是Microsoft Office的一部分,是微軟為Windows,Mac OS X,Android和iOS平臺開發(fā)的電子表格軟件,它一直是在這些平臺上被非常廣

17、泛應用的電子表格軟件,是電子表格的行業(yè)標準10。它的特色包括計算能力、繪圖工具、數(shù)據(jù)透視表和宏編程語言(VBA)。因為本文開發(fā)的系統(tǒng)要處理的數(shù)據(jù)不多,而且處理起來比較簡單,就選擇常用的Excel 2010生成的xlxs文件作為數(shù)據(jù)庫文件,而無需用到專門的數(shù)據(jù)庫軟件如Microsoft SQL Server。2.5 本章小結(jié)本章介紹了試題庫系統(tǒng)開發(fā)過程中用到的工具,包括SolidWorks 2014、VB.NET 2010、Visual Studio 2010和Microsoft Excel 2010,另外還介紹了幾個比較重要的概念,如API、DLL。3. 機械制圖題庫系統(tǒng)的設(shè)計3.1 機械制圖

18、試題庫系統(tǒng)功能的需求分析需求分析在系統(tǒng)開發(fā)中占有重要的地位,因為顯而易見地,只有當開發(fā)者明確了將要開發(fā)的系統(tǒng)需要有什么功能之后,才能開發(fā)出滿足需求的系統(tǒng)。系統(tǒng)功能需求分析不僅不會減緩系統(tǒng)開發(fā)的進度,恰恰相反地,通過這樣一個分析過程,開發(fā)人員能夠清楚地知道將要進行的工作的重點難點、主要次要問題,從而能夠把握好節(jié)奏和分寸,達到更快更好的效果。簡單美觀、操作便捷的系統(tǒng)界面是一個人性化的、用戶友好的軟件系統(tǒng)必須具備的因素。除此之外,一個成功的系統(tǒng)還應該具有穩(wěn)定性、安全性、可靠性等方面的良好表現(xiàn)。下面將列舉本試題庫具體應該滿足的功能要求。(1)為了方便用戶選取零件,在本系統(tǒng)主界面設(shè)置自動生成的零件列表;

19、 (2)為了讓用戶在進入零件表達練習之前對所選題目有一個形象直觀的認識,題目被選定之時,同時在主界面顯示它的預覽圖;(3)為了簡化操作,增加系統(tǒng)的自動化程度。在用戶選擇了某個零件之時,還會在主界面顯示該零件的參考長、寬、高尺寸。從而讓用戶能夠選擇合適的工程圖紙模板;(4)用戶選擇了零件之后,就可以選擇直接查看該零件表達的參考答案。為了方便用戶評判自己的表達方案的優(yōu)劣性和正確性,用戶可以隨時調(diào)出參考答案來查看;(5)用戶在選擇了零件和工程圖紙模板之后,就可以選擇進入零件表達練習了,系統(tǒng)會自動命令SolidWorks打開用戶選擇的零件(或裝配體)和工程圖紙模板。如果用戶在點擊“進入練習”按鈕之前還

20、沒有選擇零件或工程圖紙模板,就提示用戶先進行選擇。(6)為了方便教師維護本系統(tǒng),增減或修改題庫內(nèi)的題目或其相關(guān)信息的操作應該簡單方便。3.2 機械制圖試題庫系統(tǒng)所用素材的制作本系統(tǒng)的素材包括零件或裝配體模型、模型的預覽圖、題目的參考答案圖和模型數(shù)據(jù)庫四個部分。這些素材都可以很簡單地制作出來,便于題庫系統(tǒng)的更新和維護。為了簡化系統(tǒng)數(shù)據(jù)庫的管理,試題庫里面的每一道題目,以及跟它相關(guān)聯(lián)的零件模型、預覽圖片、參考答案都應該具有相同的名字。所有的素材都應該分別存儲在“零件表達”文件夾下,而該文件夾應該和動態(tài)鏈接庫文件“機械制圖試題庫.dll”處在同一個文件夾內(nèi)。“零件表達”文件夾內(nèi)包含四個子文件夾和一個

21、xlsx文件,四個子文件夾的名字分別為“零件庫”、“零件預覽圖庫”、“標準圖紙庫”和“參考答案庫”,分別存儲零件或裝配體模型、模型預覽圖、標準工程圖圖紙、參考答案圖片。而Excel文件“零件列表及參考尺寸.xlsx”以表格的形式存儲題目名稱和每道題目對應的模型的參考尺寸數(shù)據(jù)。圖2 “零件表達”文件夾內(nèi)容3.2.1 零件及裝配體模型的構(gòu)造SolidWorks生成的零件模型(SLDPRT格式文件)和裝配體模型(SLDASM格式文件)都可作為工程制圖試題庫的題目。圖3 “零件庫”文件夾內(nèi)容3.2.2 題目預覽圖的創(chuàng)建先將上一部分的模型素材在SolidWorks里面打開,然后在SolidWorks的“

22、外觀、布景和貼圖”工具欄里面分別對它們的視覺效果進行調(diào)整,使其外觀更加清晰明顯。這時候就可以用Windows操作系統(tǒng)自帶的屏幕截圖功能或其它截圖軟件,從模型的三維視圖截取到二維的預覽圖。再把截取到的圖片導入Windows操作系統(tǒng)自帶的“畫圖”程序或其它圖片處理軟件,對這些圖片的尺寸和像素進行處理,從而獲得滿足系統(tǒng)使用要求的大小和清晰度的圖片。最后把這些圖片以JPEG格式或GIF格式保存到指定的文件夾。圖4 “零件預覽圖庫”文件夾內(nèi)容3.2.3 題目參考答案的制作在零件模型的基礎(chǔ)上,以合理的方式作出零件圖的圖形部分(不用標注尺寸和技術(shù)要求),然后截圖,調(diào)整圖片的大小、像素等參數(shù)。最后把這些圖片以

23、JPEG格式或GIF格式保存到指定的文件夾,就完成了參考答案的制作過程。圖5 “參考答案”文件夾內(nèi)容3.2.4 零件名字及其基本參考尺寸數(shù)據(jù)庫的建立零件名字以及它們的參考長、寬、高數(shù)據(jù)都存儲在“零件列表及參考尺寸.xlsx”文件里面,該文件作為數(shù)據(jù)庫保存這些數(shù)據(jù),供系統(tǒng)運行時被插件隨時調(diào)用。數(shù)據(jù)庫里每一行記錄一個模型的數(shù)據(jù),只需根據(jù)表頭的提示填寫每一行的四個單元格。數(shù)據(jù)庫的示例內(nèi)容如圖6所示:圖6 零件名和參考尺寸數(shù)據(jù)庫3.3 機械制圖試題庫系統(tǒng)的程序界面設(shè)計從前述的系統(tǒng)功能分析中,已經(jīng)明確了本試題庫系統(tǒng)要實現(xiàn)的功能,而本系統(tǒng)作為一個Windows操作系統(tǒng)軟件,這些功能都是通過窗體體現(xiàn)出來的。

24、根據(jù)分析,本系統(tǒng)將使用兩個窗口機械制圖試題庫系統(tǒng)主界面和參考答案彈出窗口,呈現(xiàn)所有的內(nèi)容。在SolidWorks中加載做好的插件之后,SolidWorks工具欄中就會出現(xiàn)插件的圖標,用戶在點擊圖標之后,就會彈出機械制圖試題庫系統(tǒng)的主界面。用戶對系統(tǒng)的所有操作都將通過這個窗體來實現(xiàn)。下面將介紹如何通過系統(tǒng)窗體的內(nèi)容、屬性和行為實現(xiàn)系統(tǒng)的功能。首先,在Visual Studio中向資源管理器中的試題庫解決方案添加主界面窗體,在窗體的屬性欄設(shè)置它的大小、名字和各種顯示效果屬性。接著向窗體中添加一個選項卡控件(TabControl),選項卡控件內(nèi)部再添加一個列表框和圖片框。列表框用于陳列試題庫的題目,

25、供用戶選擇,題目是在加載主界面的時候自動從數(shù)據(jù)庫讀取的;圖片框是用于顯示題目預覽圖的,當用戶點擊了列表框里面的任意題目的時候,就在這顯示它的預覽圖,它顯示的內(nèi)容要隨時隨著選擇的變化而改變。主界面的右邊放置六個標簽控件,左邊三個用來提示右邊三個顯示的內(nèi)容,右邊三個分別顯示用戶所選題目的模型的參考長寬高。這下面添加一個分組控件,該控件里面放置五個單選控件,供用戶選擇工程圖紙模板。再下面放置三個按鈕控件,分別用來打開零件和工程圖紙模板、顯示參考答案、退出本系統(tǒng)。系統(tǒng)主界面設(shè)計圖如圖7所示。圖7 試題庫主界面設(shè)計圖用戶點擊“查看答案”按鈕之后,系統(tǒng)彈出第二個窗口用于顯示參考答案的窗口。該窗口里面放置有

26、一個圖片框控件,用于加載參考答案圖片。通過對圖片框和窗口屬性的設(shè)置,使得圖片填滿整個窗口,用戶可自由改變該窗口大小,而無論窗口怎么變化,圖片始終填滿窗口空間。3.4 本章小結(jié)本章主要首先分析了將要開發(fā)的系統(tǒng)應該具有的功能,然后介紹了系統(tǒng)運行時要調(diào)用的資源及其制作方法,最后還根據(jù)系統(tǒng)要實現(xiàn)的功能對系統(tǒng)的界面進行了設(shè)計。4. 機械制圖試題庫系統(tǒng)的實現(xiàn)4.1 創(chuàng)建SolidWorks插件要創(chuàng)建SolidWorks的插件,也就是開發(fā)能被SolidWorks調(diào)用的動態(tài)連接庫文件,開發(fā)者自然可以在像Visual Studio 2010這樣的開發(fā)環(huán)境中創(chuàng)建一個空項目,然后手工添加所有必須的代碼。但是這樣做的

27、話效率明顯不夠高。幸運的是,SolidWorks已經(jīng)為用戶開發(fā)它的插件準備了各種各樣的模板,只需在這些模板的基礎(chǔ)上稍作修改,就能得到本文需要的,既有SolidWorks接口功能,又有自定義用戶界面功能的代碼。接下來,本文將介紹SolidWorks插件模板包含的具體內(nèi)容。4.1.1 SolidWorks插件模板內(nèi)容介紹為了更高效地創(chuàng)建SolidWorks插件,本文使用SolidWorks安裝包里面包含的,供用戶使用VB.NET編程語言創(chuàng)建插件的模板(SolidWorks VB.NET Add-in Template)。該插件模板包含在SolidWorks安裝包里面的SolidWorks應用程序接

28、口軟件開發(fā)工具包(SolidWorks API SDK)里面。SolidWorks API SDK的安裝過程非常簡單智能,雙擊開始安裝,然后一直確定就自動安裝到默認的目錄了。圖8 SwVBAddin模板SolidWorks API SDK自動檢索電腦里面的軟件開發(fā)工具,并在它們相應的文件夾內(nèi)放置二次開發(fā)模板。安裝好SolidWorks API SDK之后,在軟件開發(fā)環(huán)境Visual Studio里面新建程序的時候,就可以選擇專門創(chuàng)建SolidWorks插件的模板了。打開Visual Studio2010,選擇新建項目,在“已安裝的模板”選項卡下選擇Visual Basic,就可以在中間的模板窗

29、口里面找到SwVBAddin這個模板了,具體如圖4所示。在名稱文本框中輸入自定義的項目名稱之后點擊確定,經(jīng)過幾秒的等待,Visual Studio成功自動生成一個解決方案,這個解決方案經(jīng)過編譯之后可以得到一個具有自動創(chuàng)建立方體零件模型功能的SolidWorks插件。雖然這不是本系統(tǒng)所需要的功能,但是它所在的這個可以跟SolidWorks交互的接口的框架是本系統(tǒng)需要的。只需要把自動生成立方體零件模型這部分代碼替換為實現(xiàn)系統(tǒng)所需要的功能的代碼即可。自動生成的解決方案里面包括的資源如圖9所示。圖9 插件模板內(nèi)容下面將對解決方案資源管理器里面的項目的作用進行一一說明:(1)AssemblyInfo.v

30、b程序集用于組織和聲明程序集信息;(2)EventHandling.vb程序集包含關(guān)于文件和模型視圖的事件處理對象。其中文件事件處理對象是暴露接口以及包含處理模型視圖事件的代碼的基類,包括零件文件事件處理對象、工程圖文件事件處理對象和裝配體文件事件處理對象。這三類對象能夠響應文件事件,對于每一個打開的文件,每一個文件的類必須有一個相應類型的事件處理對象的實例,比如要打開一個零件文件,那么必須聲明一個零件文件事件處理對象的實例11。除了上面三種文件的事件處理對象,該程序集還包括模型視圖事件處理對象。對于每一個打開的文件,要想控制它的視圖,必須聲明一個模型視圖事件處理對象的實例;(3)PMPHan

31、dler.vb程序集包含屬性管理頁面的處理器的接口類。當創(chuàng)建一個屬性管理頁面的時候,這個類的一個實例會被傳遞給SolidWorks。當屬性管理頁面上的一個控件被操縱時,這個對象的實例里的相應函數(shù)或者子程序?qū)辉L問。(4)SwAddin.vb程序集包含主要的插件類。該程序集里面的代碼被分為了好幾個區(qū)域,在這些區(qū)域里,包括的代碼分別為定義這個插件類的局部函數(shù)、注冊和反注冊插件的函數(shù)、插件連接和斷開與SolidWorks的函數(shù)、SolidWorks事件處理函數(shù)和子程序、從插件的用戶接口處調(diào)用的函數(shù)和子程序。(5)UserPMPage.vb程序集包含接口的屬性管理頁面的裝飾和布局方法。要想修改屬性管

32、理頁面上的控件,只需要修改AddControls()子程序里面的代碼。(6)剩下的幾個bmp格式的文件是用戶插件在SolidWorks菜單欄里面圖標,修改插件里面的添加SolidWorks菜單欄的函數(shù)里面的參數(shù),即可控制圖標的選擇。如果添加新的圖片文件到這個項目里面,再修改相應的代碼,就可以自定義菜單欄圖標。4.1.2修改SolidWorks插件模板SolidWorks的插件模板雖然還不能實現(xiàn)系統(tǒng)所需要的功能,但是它提供了用戶窗口與SolidWorks進行連接的基礎(chǔ),只需在它的基礎(chǔ)上稍作修改即可得到滿足系統(tǒng)需求的程序集。下面將對所要進行的代碼的增刪修改進行說明。首先,刪除SwAddin.vb程

33、序集文件里面的用戶接口方法區(qū)域(#Region “UI Methods”)內(nèi)的兩句代碼:cmdIndex0 = cmdGroup.AddCommandItem2("CreateCube", -1, "Create a cube", "Create cube", 0, "CreateCube", "", mainItemID1, menuToolbarOption)cmdIndex1 = cmdGroup.AddCommandItem2("Show PMP", -1, &quo

34、t;Display sample property manager", "Show PMP", 2, "ShowPMP", "PMPEnable", mainItemID2, menuToolbarOption)然后添加下面這句代碼:cmdIndex0 =cmdGroup.AddCommandItem2("機械制圖試題庫", -1, "機械制圖試題庫", "機械制圖試題庫", 0, "frm1Load", "FrmPartLibrary

35、_EnableMethod", mainItemID1, menuToolbarOption)這一句代碼非常關(guān)鍵,所以在這里對以上三句代碼中出現(xiàn)的cmdGroup對象的AddCommandItem2方法進行說明。通過查閱SolidWorks API Help文件,可以知道,這個方法的功能是向命令組類(CommandGroup)添加一個組合菜單和工具條項目。它有9個參數(shù),從左到右分別是:名字、位置、提示字符串、工具提示、圖像列表索引號、回調(diào)函數(shù)、使能方法、用戶名和菜單工具條選項。名字是添加到命令組類的項目的名字;位置是項目在命令組中的位置,這個數(shù)值指定該項目關(guān)于它的直接父項目的位置;提

36、示字符串是當鼠標指針指在項目上的時候在SolidWorks狀態(tài)欄上顯示的文本;工具提示是當鼠標指針指在項目上的時候,彈出的懸浮提示語句;圖片列表索引號代表項目在菜單欄中的圖標的圖片的索引號;回調(diào)函數(shù)是當該新添加項目被選中時調(diào)用的函數(shù);使能方法是可選參數(shù),該方法的值控制該新添加項目的狀態(tài),SolidWorks在顯示新添加的項目之前先調(diào)用該方法,根據(jù)該方法的返回值決定新添加項目的選中狀態(tài)和是否能夠被使用;用戶名是用戶自定義的命令識別碼,默認值是0;菜單工具條選項是規(guī)定的命令項的類型。整個方法的返回值是SolidWorks分配的命令組中的項目的指針。AddCommandItem2方法是用來自定義So

37、lidWorks菜單欄的,但是還沒有實現(xiàn)彈出自定義窗口的功能。上面已經(jīng)說過了,這個方法的參數(shù)里面的回調(diào)函數(shù)是菜單項目被選中時會被調(diào)用的函數(shù),所以,可以在這個回調(diào)函數(shù)里面添加彈出定義好的試題庫主界面窗口的代碼。接下來編寫AddCommandItem2方法里面的回調(diào)函數(shù)frm1Load。在SwAddin.vb程序集文件的用戶界面回調(diào)函數(shù)區(qū)域(#Region“UI Callbacks”)里添加以下回調(diào)函數(shù)代碼:Function frm1Load() As Boolean定義自定義窗口類FrmPartLibrary的實例objPartLibraryDim objPartLibrary As New F

38、rmPartLibraryIf Not objPartLibrary Is Nothing Then彈出機械制圖試題庫主界面objPartLibrary.Show()End IfEnd Function接下來,還需要添加AddCommandItem2方法里的使能方法的代碼,同樣是在上述代碼區(qū)域,添加以下代碼:Function FrmPartLibrary_EnableMethod() As IntegerIf iSwApp.ActiveDoc Is Nothing Then當SolidWorks處在零文件狀態(tài)的時候,自定義菜單欄處于非選中,有效狀態(tài)FrmPartLibrary_EnableMe

39、thod = 1Else當SolidWorks處在非零文件狀態(tài)的時候,自定義菜單欄處于非選中,無效狀態(tài) FrmPartLibrary_EnableMethod = 0 End If End Function這樣,當SolidWorks處于零文件狀態(tài)時,用戶點擊插件生成的自定義菜單欄下面的項目,就能夠彈出機械制圖試題庫系統(tǒng)的主界面。通過插件生成的自定義菜單欄如圖10所示。圖10 處于激活狀態(tài)的自定義菜單欄綜上所述,通過在已經(jīng)安裝Miscrosoft Visual Studio 2010的計算機上安裝SolidWorks API SDK,就能在Miscrosoft Visual Studio 20

40、10的新建項目窗口里面選擇模板SwVBAddin。然后,本文介紹了怎么通過修改插件模板的項目下的SwAddin.vb程序集來實現(xiàn)創(chuàng)建SolidWorks自定義菜單欄的目的使用SolidWorks API接口里的ICommandGroup類的AddCommandItem2方法。其中重點介紹了AddCommandItem2方法中的幾個參數(shù)的意義和其中的回調(diào)函數(shù)及使能方法的編寫。4.2 實現(xiàn)機械制圖試題庫系統(tǒng)操作界面功能根據(jù)前面系統(tǒng)功能分析和系統(tǒng)界面設(shè)計的要求,本文的機械制圖試題庫系統(tǒng)需要具備試題列表自動生成、所選試題預覽圖自動顯示、所選試題基本參考尺寸自動顯示、自動打開工程圖圖紙模板及零件(或裝配

41、體)模型、彈出參考答案窗口這五大功能模塊。下面將就這些功能的實現(xiàn)進行具體詳細的說明。4.2.1 添加引用、創(chuàng)建模塊及聲明全局變量首先,因為要調(diào)用Miscrosoft Excel 2010來讀取“零件列表及參考尺寸.xlsx”文件,就要調(diào)用它的應用程序編程接口對象,所以先要添加對Miscrosoft Excel對象庫的引用。在解決方案資源管理器里面鼠標右鍵點擊機械制圖試題庫解決方案,在彈出的對話框里面點擊“屬性”。在彈出的解決方案屬性窗口中,選擇左邊的選項卡組中“引用”項,再點擊該項目界面里的“添加”按鈕。然后在彈出的窗口中選擇“COM”選項卡,最后在該選項卡下的列表里查找到Microsoft

42、Excel xx Object Library,選擇它然后點擊“確定”。這樣就完成了插件與Microsoft Excel接口對象庫的引用,具體過程窗口見圖11。圖11 添加Excel接口對象庫窗口接著,先要對程序中用到的變量進行聲明,因為需要這些變量在不同的類及過程中生效,所以本文采用在模塊中把它們聲明為全局變量的方式,來對這些變量進行聲明。要添加模塊程序集,首先鼠標左鍵點擊Visual Studio工具欄里的“添加新項”按鈕;然后在彈出的“添加新項”窗口左邊的“已安裝的模板”窗口中,選擇“常用項”下面的“代碼”選項;接著選擇該項目下的“模塊”項目,最后輸入名稱點擊添加。添加新項窗口見圖12。

43、圖12 添加模塊窗口在解決方案資源管理器找到剛才新建的模塊程序集文件,雙擊打開,然后在模塊內(nèi)部添加以下全局變量的聲明:實例化SolidWorks接口對象Public swApp As New Interop.sldworks.SldWorksPublic swDoc As ModelDoc2 = NothingPublic swPart As PartDoc = NothingPublic swDrawing As DrawingDoc = NothingPublic swAssembly As AssemblyDoc = Nothing定義SolidWorks API函數(shù)參數(shù)Public b

44、oolstatus As Boolean = FalsePublic longstatus As Integer = 0Public longwarnings As Integer = 0要通過應用程序編程接口調(diào)用Excel打開工作簿“零件列表及參考尺寸.xlsx”中的第一個工作表,只需要將Excel API中最高級的對象Microsoft.Office.Interop.Excel.Application實例化即可,對Excel的其它功能的調(diào)用都可通過該實例的屬性或方法來實現(xiàn)。Excel接口對象的實例化Public xlApp As New Microsoft.Office.Interop.E

45、xcel.Application對窗體類的調(diào)用也須要先實例化,為了對系統(tǒng)窗體的顯示、隱藏、關(guān)閉等操作的方便,這里先統(tǒng)一將它們實例化。各個窗體類的實例化Public objPartLibrary As New FrmPartLibraryPublic objKey As New FrmKey有幾個變量經(jīng)常使用,為了編程的方便,也在模塊中將它們聲明為全局變量。插件自身及試題庫調(diào)用的資源的存儲路徑Public strMyPath As StringPublic strMyStuffPath As String'讀取xlsl到列表框之使能開關(guān)Public booPartsAdded As Bo

46、olean = False'列表框中選擇的零件名Public strPartName As String4.2.2 試題列表自動生成模塊功能的實現(xiàn)這個模塊的具體功能是當系統(tǒng)主界面加載的時候,自動加載“零件列表及參考尺寸.xlsx”數(shù)據(jù)庫里面的零件列下面的各個項目名稱到系統(tǒng)主界面里面的列表框,作為列表框的各個項目。實現(xiàn)該功能的代碼和流程圖如下所示:Private Sub FrmPartExpression_load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.ActivatedTry'獲取DLL自

47、身的完整路徑strMyPath = Assembly.GetExecutingAssembly().Location()'計算本DLL所在文件夾的路徑strMyStuffPath = strMyPath.Remove(strMyPath.LastIndexOf("") + 1)'只在第一次加載本窗體時填充列表框If booPartsAdded = False ThenDim xlApp As New Microsoft.Office.Interop.Excel.Application'根據(jù)已有的路徑,打開Excel文檔xlApp.Workbooks.

48、Open(strMyStuffPath & "零件表達零件列表及參考尺寸.xlsx")'使 Excel不可見xlApp.Visible = False'使警告對話框和消息不彈出xlApp.DisplayAlerts = False'使任務(wù)欄里不顯示Excel程序xlApp.ShowWindowsInTaskbar = False'選擇當前激活的工作簿和工作單xlApp.Workbooks(1).Sheets(1).select()'讀取零件列各項目到列表框的項目屬性Dim i As Integer = 2Do While xl

49、App.ActiveSheet.Cells(i, 1).value <> NothingconPartList.Items.Add(xlApp.ActiveSheet.Cells(i, 1).value)i += 1Loop'更新列表框項目屬性的狀態(tài)值booPartsAdded = True'退出Excel程序xlApp.Workbooks.Close()xlApp.Quit()xlApp = Nothing'調(diào)用GC的垃圾收集功能,徹底清理Excel后臺進程GC.Collect()GC.WaitForPendingFinalizers()End IfCat

50、ch ex As ExceptionMsgBox(ex.Message, , )FinallyEnd TryEnd Sub開始獲取本DLL路徑計算素材庫所在文件夾路徑調(diào)用Excel打開數(shù)據(jù)庫表格第一次打開界面i = 2i行1列單元格非空添加到列表框項目i = i + 1關(guān)閉Excel結(jié)束是是否否圖13 添加題目列表流程圖下面將依次對上述代碼進行更詳細的解釋。首先,因為要求生成試題列表的功能在加載機械試題庫系統(tǒng)主窗口的時候自動生效,所以代碼是在作為主窗體的FrmPartExpression類的Load事件下執(zhí)行的。TryCatch ex As ExceptionMsgBox(ex.Message

51、, , )FinallyEnd Try上面的TryCatch結(jié)構(gòu)體是Visual Basic .Net里面的結(jié)構(gòu)化處理錯誤的程序,它的功能是當它內(nèi)部的代碼出現(xiàn)運行時的錯誤時,能夠在編譯器終止程序之前,讓它執(zhí)行指定的指令。這里的作用是在發(fā)生運行時的錯誤時彈出對話框,提示用戶出錯的原因。通過添加這類結(jié)構(gòu)化的錯誤處理程序,能夠增加系統(tǒng)的穩(wěn)定性,提高用戶使用體驗12。為了增加本文開發(fā)的動態(tài)鏈接庫文件的可移植性,讓它能夠方便地移植到其它計算機上運行,須將與本插件配套使用的系統(tǒng)素材庫的路徑定義為變量,它是一個與插件的路徑相關(guān)的變量。插件在運行到這里時會獲取自身的存儲路徑,然后計算它所在文件夾的路徑,所以只

52、要把試題庫系統(tǒng)的素材庫跟動態(tài)鏈接庫文件放在同一個文件夾下,而不管它們具體被放在哪一個文件夾下,都能夠很容易地確定素材庫里每一個要被訪問的文件的路徑。strMyPath = Assembly.GetExecutingAssembly().Location()語句的意義是獲取當前執(zhí)行的代碼(本語句自身)所在程序集的路徑,再把該路徑賦給全局變量strMyPath。strMyStuffPath = strMyPath.Remove(strMyPath.LastIndexOf("") + 1)語句的意義是對字符串類型的變量strMyPath進行處理,把它最后一個“”符號之后的字符去掉

53、,得到新的字符串插件所在文件夾的路徑,再把這個路徑賦給字符串型全局變量strMyStuffPath。列表框項目屬性狀態(tài)值booPartsAdded的初始值是False,此時將執(zhí)行后面的代碼,添加零件或裝配體模型的名字到列表框的項目屬性。讀取完數(shù)據(jù)庫里面的零件列表之后,變量booPartsAdded被重置為True。這樣,就能避免重新加載機械制圖試題庫系統(tǒng)主界面時,重復加載零件列表。Dim i As Integer = 2Do While xlApp.ActiveSheet.Cells(i, 1).value <> NothingconPartList.Items.Add(xlApp

54、.ActiveSheet.Cells(i, 1).value)i += 1Loop上面的循環(huán)的作用是從當前處于激活狀態(tài)的工作表的第一列第二行那個單元格開始,依次讀取該列從第二行往下的單元格,直到最后一個不為空的單元格。這樣,就能夠把數(shù)據(jù)庫中的所有零件或裝配體模型的名字錄入機械制圖試題庫系統(tǒng)主界面中的列表框。至此為止,試題列表自動生成模塊的功能的實現(xiàn)的重點難點就全部介紹完了。4.2.3 所選試題預覽圖和參考尺寸自動顯示模塊功能的實現(xiàn) 這個模塊的具體功能是當用戶用鼠標左鍵點擊了題目列表下面的任意一個項目的時候,圖片框就會顯示所選題目的預覽圖;同時,主界面右邊的三個標簽控件也會從數(shù)據(jù)庫“零件列表及參

55、考尺寸.xlsx”分別讀取所選擇題目的零件(或裝配體模型)對應的基本參考尺寸:長、寬和高。實現(xiàn)該功能的代碼如下所示:Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles conPartList.SelectedIndexChangedTry'保存被選中項目的零件名到公共變量strPartName = conPartList.SelectedItem'顯示列表框中被選中零件的預覽圖'支持gif和jpg格式的圖

56、片'先檢查圖片文件是否存在,再打開圖片文件'優(yōu)先選擇打開jpg格式的圖片文件If File.Exists(strMyStuffPath & "零件表達零件預覽圖庫" & strPartName & ".jpg") ThenPictureBox1.Image = System.Drawing.Bitmap.FromFile(strMyStuffPath & "零件表達零件預覽圖庫" & strPartName & ".jpg")ElseIf File.E

57、xists(strMyStuffPath & "零件表達零件預覽圖庫" & strPartName & ".gif") ThenPictureBox1.Image = System.Drawing.Bitmap.FromFile(strMyStuffPath & "零件表達零件預覽圖庫" & strPartName & ".gif")Else'如果相應模型的預覽圖片文件不存在,彈出對話框給出錯誤提示MsgBox("找不到指定的預覽圖!")End If'重新打開Microsoft ExcelDim xlApp As New Microsoft.Office.Interop.Excel.ApplicationxlApp.Workbooks.Open(strMyStuffPath & "零件表達零件列

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論