2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  本文介紹了Pro/E的二次開發(fā)工具,利用Pro/E對卷筒中間軸進行了參數(shù)化造型設計,建立了相應的參數(shù),用Pro/Toolkit和VC對卷筒中間軸參數(shù)化系統(tǒng)進行了程序設計,包括菜單的添加和MFC對話框的制作。最后,對開發(fā)的三維建模程序進行測試。結(jié)果表明:開發(fā)程序準確無誤,建模迅速,大大提高了這類通用件在Pro/E平臺上的設計效率

2、。</p><p>  關(guān)鍵詞:三維造型、Pro/E二次開發(fā)、Pro/Toolkit、VC</p><p><b>  Abstract</b></p><p>  The essay introduced the tools of the second-development of Pro/E,design the intermediate

3、shaft of winding drum in parametrics based on Pro/E and built its variables.On this basis,the writer designed the programs of its parametric systems used Pro/Toolkit and VC .The programs includes the creation of menu,the

4、 creation of the MFC dialogue.In the end,the test of all process of three-dimension-part-model driven by database is performed indicates that the program is right,and the mold can be set up </p><p>  Key Wor

5、ds: three-dimension design;second-development of Pro/E;Pro/Toolkit;VC</p><p><b>  目 錄</b></p><p>  摘要……………………………………………………………………………..….1</p><p>  緒論……………………………………………………

6、………….….…………… 1</p><p>  第1章 Pro/E二次開發(fā)簡介……………………………………….….………..3</p><p>  1.1 Pro/E軟件簡介……………………………………………………………....3</p><p>  1.2 Pro/E二次開發(fā)工具簡介…………………………………………………....4</p><

7、;p>  第2章 零件造型………………………………………………………………...6 2.1 pro/E的三維造型功能……………………………………….……………...6 2.2 pro/E創(chuàng)建模型過程…………………….…………………………...…....…7</p><p>  第3章 軸的參數(shù)化設計…………………….…………………………...……...11</p><p>  3

8、.1 菜單的添加…………………….…………………………...……...……...….11</p><p>  3.2 MFC對話框的建立及運行…………………….………………………….......15</p><p>  3.3 整個參數(shù)化的實現(xiàn)…………………….…………………………..................18</p><p>  總結(jié)…………………………

9、…….……………………..………………...……….25</p><p>  致謝……………………………….……………………..………………...……….26</p><p>  參考文獻………………………….…………………..……..……………….…….27</p><p><b>  緒論</b></p><p> 

10、 現(xiàn)在的CAD/CAM系統(tǒng),如Pro/E、UG等,都是比較通用的大型軟件系統(tǒng),用這樣的大型系統(tǒng)建立我們所需要的產(chǎn)品模型可能需要大量的時間。如果能在此類軟件的基礎(chǔ)上,開發(fā)出適合本單位產(chǎn)品的應用程序,無疑會大大提高本單位產(chǎn)品的設計效率,加快產(chǎn)品的更新速度,從而提高企業(yè)的市場競爭能力。</p><p>  Pro/E的二次開發(fā)方法有五種:</p><p>  (1)基于Pro/TOOLKIT的二

11、次開發(fā)過程</p><p>  Pro/TOOLKIT是針對Pro/E功能強大的二次開發(fā)工具。它封裝了許多針對Pro/E底層資源調(diào)用的庫函數(shù)與頭文件,借助第三方編譯環(huán)境(C語言、VC++語言等)進行調(diào)試。使用Pro/TOOLKIT開發(fā)應用程序包含三個基本步驟:編寫源文件(包括資源文件和程序源文件);生成可執(zhí)行文件;可執(zhí)行文件在Pro/E中注冊并運行是Pro/E軟件自帶的二次開發(fā)模塊,可以直接訪問Pro/E軟件的最

12、底層數(shù)據(jù)庫資源,這是進行Pro/E二次開發(fā)最根本的方法,但要求開發(fā)人員具有相當C語言的編程能力;它是PTC公司為Pro/E提供的用戶化工具箱(18以前的版本為Pro/DEVELOP),該工具箱為用戶程序、軟件及第三方程序提供了與Pro/E的無縫聯(lián)接。用戶程序和第三方程序是用C語言編寫的,Pro/TOOLKIT提供了大量的c語言的庫函數(shù),能夠使外部應用程序安全有效地訪問Pro/E的數(shù)據(jù)庫和應用程序。通過c語言編程及應用程序與Pro/E的無

13、縫集成,用戶和第三方能夠在Pro/E系統(tǒng)中增加所需的功能。</p><p>  (2)基于Automation GATEWAY的二次開發(fā)</p><p>  Automation GATEWAY是RAND公司開發(fā)的針對Pro/E軟件的二次開發(fā)工具,與Pro/E系統(tǒng)自帶的二次開發(fā)工具Pro/TOOLKIT相比,具有簡單易用的優(yōu)點。應用AutomationGATEWAY可以自動實現(xiàn)Pro/E任

14、務,創(chuàng)建用戶界面,完全實現(xiàn)自動設計任務;應用AutomationGATEWAY可以把任何支持ActiveX的應用程序和Pro/E建立直接聯(lián)系。利用VB,可以使Microsoft Ofice產(chǎn)品(如Word,Excel等)和Pro/E對象之間進行數(shù)據(jù)交換。在這個過程中,Automation GATE WAY在VB和Pro/E之間起到橋梁和紐帶的作用。通過A,就可以利用VB訪問Pro/E的大部分底層資源文件。</p><

15、p> ?。?)基于J-Link的二次開發(fā)過程</p><p>  基于JAVA語言的二次開發(fā)工具,用戶通過JAVA編程實現(xiàn)在軟件Pro/E中添加功能。</p><p>  (4)基于Pro/Web Link的二次開發(fā)過程</p><p>  這種方法使用的語言是javascript,以網(wǎng)頁的形式來訪問Pro/E模型</p><p>  

16、(5)基于VB API的二次開發(fā)過程</p><p>  Pro/E Wildfire 4.0開始可以采用Visual Basic API,通過 Visual Basic NET 應用程序和應用程序 (如 Microsoft Word、Excel 或 Access) 中的 Visual Basic 宏來進行二次開發(fā)。</p><p>  本論文的主要工作有: </p>

17、<p>  (1)利用Pro/E對卷筒中間軸進行三維建模。 </p><p>  (3)利用Pro/E的二次開發(fā)工具Pro/Toolkit及VC++.net進行二次開發(fā),設計出人機交互式的界面,開發(fā)出參數(shù)化的中間軸系統(tǒng)。 </p><p>  (4)利用Pro/E的二次開發(fā)工具Pro/Toolkit創(chuàng)建三維的標準零件庫并實現(xiàn)零件庫與Pro/E的集成。 &l

18、t;/p><p>  (5)調(diào)試、運行程序。</p><p>  第1章 Pro/E二次開發(fā)簡介</p><p>  1.1 Pro/E軟件簡介</p><p>  Pro/E操作軟件是美國參數(shù)技術(shù)公司(PTC)旗下的CAD/CAM/CAE一體化的三維軟件。Pro/E軟件以參數(shù)化著稱,是參數(shù)化技術(shù)的最早應用者,在目前的三維造型軟件領(lǐng)域中占有著重要

19、地位,Pro/E作為當今世界機械CAD/CAE/CAM領(lǐng)域的新標準而得到業(yè)界的認可和推廣。是現(xiàn)今主流的CAD/CAM/CAE軟件之一,特別是在國內(nèi)產(chǎn)品設計領(lǐng)域占據(jù)重要位置。 </p><p>  Pro/E中文版軟件是美國參數(shù)技術(shù)公司開發(fā)的三維參數(shù)化設計軟件,是目前國內(nèi)外應用最為廣泛的一款CAD/CAM/CAE軟件,在中國有很多研究院和企業(yè)采用該軟件進行設計、仿真、分析和加工。它功能強大、應用廣泛,使用方便,得到

20、廣大用戶和愛好者的一致認可。</p><p>  Pro/E第一個提出了參數(shù)化設計的概念,并且采用了單一數(shù)據(jù)庫來解決特征的相關(guān)性問題。另外,它采用模塊化方式,用戶可以根據(jù)自身的需要進行選擇,而不必安裝所有模塊。Pro/E的基于特征方式,能夠?qū)⒃O計至生產(chǎn)全過程集成到一起,實現(xiàn)并行工程設計。它不但可以應用于工作站,而且也可以應用到單機上。Pro/E采用了模塊方式,可以分別進行草圖繪制、零件制作、裝配設計、鈑金設計、加

21、工處理等,保證用戶可以按照自己的需要進行選擇使用。Pro/E的主要特性如下:</p><p><b>  1.參數(shù)化設計 </b></p><p>  相對于產(chǎn)品而言,我們可以把它看成幾何模型,而無論多么復雜的幾何模型,都可以分解成有限數(shù)量的構(gòu)成特征,而每一種構(gòu)成特征,都可以用有限的參數(shù)完全約束,這就是參數(shù)化的基本概念。 </p><p>&l

22、t;b>  2.基于特征建模 </b></p><p>  Pro/E是基于特征的實體模型化系統(tǒng),工程設計人員采用具有智能特性的基于特征的功能去生成模型,如腔、殼、倒角及圓角,您可以隨意勾畫草圖,輕易改變模型。這一功能特性給工程設計者提供了在設計上從未有過的簡易和靈活。 </p><p>  3.單一數(shù)據(jù)庫(全相關(guān)) </p><p>  Pro/

23、E是建立在統(tǒng)一基層上的數(shù)據(jù)庫上,不像一些傳統(tǒng)的CAD/CAM/CAE系統(tǒng)建立在多個數(shù)據(jù)庫上。所謂單一數(shù)據(jù)庫,就是工程中的資料全部來自一個庫,使得每一個獨立用戶在為一件產(chǎn)品造型而工作,不管他是哪一個部門的。換言之,在整個設計過程的任何一處發(fā)生改動,亦可以前后反應在整個設計過程的相關(guān)環(huán)節(jié)上。例如,一旦工程詳圖有改變,NC(數(shù)控)工具路徑也會自動更新;組裝工程圖如有任何變動,也完全同樣反應在整個三維模型上。這種獨特的數(shù)據(jù)結(jié)構(gòu)與工程設計的完整的

24、結(jié)合,使得一件產(chǎn)品的設計結(jié)合起來。這一優(yōu)點,使得設計更優(yōu)化,成品質(zhì)量更高,產(chǎn)品能更好地推向市場,價格也更便宜。</p><p>  1.2 Pro/E二次開發(fā)工具簡介</p><p>  Pro/E提供了強大的三維幾何造型功能,使我們能夠創(chuàng)建出各種復雜的幾何零件模型,但有時我們在設計產(chǎn)品時,經(jīng)常遇到相同類型僅尺寸不一樣的零件,如果我們把它們都一一三維建模,那工作量是巨大的。最有效的方法是利

25、用零件間的相似性,發(fā)揮參數(shù)化建模的特長,使用二次開發(fā)來實現(xiàn)。以下是對各二次開發(fā)工具的介紹:</p><p><b>  1.族表</b></p><p>  通過族表可以方便的管理具有相似結(jié)構(gòu)的零件,特別適用于標準件的管理。族表工具是通過一個通用零件作為父零件,然后在其基礎(chǔ)上對多個參數(shù)加以控制生成派生零件。整個族表是通過電子表格來實現(xiàn)的,因此可以稱其為表格驅(qū)動。<

26、;/p><p><b>  2.用戶定義特征</b></p><p>  用戶定義特征是將若干各子系統(tǒng)特征融合為一個自定義特征,使用時作為一個整體出現(xiàn)。UDF適用特定產(chǎn)品中的特定結(jié)構(gòu),有利于設計者根據(jù)產(chǎn)品特征快速生成幾何模型。</p><p>  3.Pro/Program</p><p>  Pro/E軟件對于每個模型都有

27、一個主要設計步驟和參數(shù)列表Pro/Program,它是類似于 BASIC的高級語言構(gòu)成,用戶可以根據(jù)設計需要來編輯該模型的Program,使其以一個程序來工作。通過運行該程序,系統(tǒng)通過人機交互的方法來控制系統(tǒng)參數(shù)、特征出現(xiàn)與否以及特征的具體尺寸等。</p><p><b>  4.J-link</b></p><p>  J-link是Pro/E中自帶的基于JAVA語

28、言的二次開發(fā)工具,是一種面向?qū)ο?、獨立于操作系統(tǒng)平臺的開發(fā)工具。用戶通過JAVA編程實現(xiàn)向Pro/E軟件添加功能。</p><p>  5.Pro/Toolkit</p><p>  Pro/Toolkit同J-link一樣也是Pro/E中自帶的二次開發(fā)工具。Pro/TOOLKIT是針對Pro/E功能強大的二次開發(fā)工具。它封裝了許多針對Pro/E底層資源調(diào)用的庫函數(shù)與頭文件,借助第三方編譯

29、環(huán)境(C語言、VC++語言等)進行調(diào)試。使用Pro/Toolkit開發(fā)應用程序包含三個基本步驟:編寫源文件(包括資源文件和程序源文件);生成可執(zhí)行文件;可執(zhí)行文件在Pro/E中注冊并運行。Pro/Toolkit是Pro/E軟件自帶的二次開發(fā)模塊,可以直接訪問Pro/E軟件的最底層數(shù)據(jù)庫資源,這是進行Pro/E二次開發(fā)最根本的方法,但要求開發(fā)人員具有相當C語言的編程能力;它是PTC公司為Pro/E用戶提供的用戶化工具箱(18以前的版本為P

30、ro/DEVELOP),該工具箱為用戶程序、軟件及第三方程序提供了與Pro/E的無縫聯(lián)接。用戶程序和第三方程序是用C語言編寫的,Pro/TOOLKIT提供了大量的C語言的庫函數(shù),能夠使外部應用程序安全有效地訪問Pro/E的數(shù)據(jù)庫和應用程序。通過C語言編程及應用程序與Pro/E的無縫集成,用戶和第三方能夠在Pro/E系統(tǒng)中增加所需的功能。</p><p>  上述二次開發(fā)工具集中在Pro/E的“工具”菜單中,如圖1

31、-1所示。其中“輔助應用程序”主要用來測試Pro/Toolkit程序。 </p><p>  圖1-1 二次開發(fā)工具</p><p><b>  第2章 零件造型</b></p><p>  從這章開始將用一個實例詳細介紹二次開發(fā)的完整過程。首

32、先對零件進行三維造型。</p><p>  2.1 Pro/E的三維造型功能</p><p>  2.1.1 Pro/E的造型優(yōu)點</p><p>  Pro/E的功能包括參數(shù)化功能定義、實體零件及組裝造型,三維上色實體或線框造型棚完整工程圖產(chǎn)生及不同視圖(三維造型還可移動,放大或縮小和旋轉(zhuǎn))。Pro/E是一個功能定義系統(tǒng),即造型是通過各種不同的設計專用功能來實現(xiàn),

33、其中包括:筋(Ribs)、槽(Slots)、倒角(Chamfers)和抽空(Shells)等,采用這種手段來建立形體,對于工程師來說是更自然,更直觀,無需采用復雜的幾何設計方式。這系統(tǒng)的參數(shù)比功能是采用符號式的賦予形體尺寸,不 象其他系統(tǒng)是直接指定一些固定數(shù)值于形體,這樣工程師可任意建立形體上的尺寸和功能之間的關(guān)系,任何一個參數(shù)改變,其也相關(guān)的特征也會自動修正。這種功能使得修改更為方便和可令設計優(yōu)化更趨完美。造型不單可以在屏幕上顯

34、示,還可傳送到繪圖機上或一些支持 Postscript格式的彩色打印機。Pro/E還可輸出三維和二維圖形給予其他應用軟件,諸如有限元分析及后置處理等,這都是通過標準數(shù)據(jù)交換格式來實現(xiàn),用戶更可配上Pro/E軟件的其它模塊或自行利用 C語言編程,以增強軟件的功能。它在單用戶環(huán)境下(沒有任何附加模塊)具有大部分的設計能力,組裝能力(人工)和工程制</p><p>  2.1.2 Pro/E的造型功能</p>

35、;<p>  Pro/E功能如下:</p><p>  1.特征驅(qū)動(例如:凸臺、槽、倒角、腔、殼等); </p><p>  2.參數(shù)化(參數(shù)=尺寸、圖樣中的特征、載荷、邊界條件等);</p><p>  3.通過零件的特征值之間,載荷/邊界條件與特征參數(shù)之間(如表面積等)的關(guān)系來進行設計。 </p><p>  4.

36、支持大型、復雜組合件的設計(規(guī)則排列的系列組件,交替排列,Pro/PROGRAM的各種能用零件設計的程序化方法等)。 </p><p>  5.貫穿所有應用的完全相關(guān)性(任何一個地方的變動都將引起與之有關(guān)的每個地方變動)。其它輔助模塊將進一步提高擴展 Pro/E的基本功能。 </p><p>  2.2 創(chuàng)建模型過程</p><p>  2.2.1進入拉伸界面

37、、設置草繪平面</p><p>  單擊【文件】、【新建】彈出【新建】對話框如圖2.1,選擇【零件】,取消【使用缺省模板】,在名稱框中輸入“zhongjianzhou”,點擊【確定】。在彈出的【新文件選項】對話框中選中“mmns_part_solid”選項,點擊【確定】。</p><p>  圖2-1 新建三維模型對話框</p><p>  單擊下拉菜單【插入】、【

38、拉伸】命令,則開始建立拉伸特征。此時在繪圖區(qū)的下方會彈出如圖2-2的操作控制面板。</p><p>  圖2-2 拉伸命令操作控制面板</p><p>  單擊【放置】、【定義】,會進入設置繪圖平面對話框如圖2-3,在繪圖區(qū)選擇“FRONT”平面作為草繪平面。單擊【草繪】按鈕退出。系統(tǒng)彈出如圖2-4的【參照】對話框,直接單擊【關(guān)閉】,開始草繪。</p><p>  

39、圖2-3 設定【草繪】對話框 圖2-4 設定【參照】對話框</p><p>  2.2.2 繪制草繪圖形</p><p>  繪制直徑為φ34的圓,草繪圖形結(jié)束后,單擊按鈕則退出草繪界面。</p><p>  2.3.3 設定深度、創(chuàng)建拉伸實體特征</p><p>  在 按鈕右側(cè)的編輯框中輸入拉伸深

40、度值29.8,單擊 預覽按鈕,進行幾何預覽和特征預覽,預覽結(jié)束,單擊 按鈕,特征創(chuàng)建結(jié)束。</p><p>  參照其二維圖(如圖2-5所示)用拉伸的方法完成是三維建模如圖2-7所示。</p><p>  圖2-5 中間軸工程圖</p><p>  單擊 按鈕進入倒角操控板如圖2-6所示,在倒角參數(shù)編輯框中輸入數(shù)值2,</p><

41、;p>  選擇軸兩端邊線如圖2-7,單擊 按鈕完成倒角。再次單擊 按鈕進入倒角操控板設置倒角參數(shù)值為1選擇分別選擇槽底部靠近軸兩端的邊線如圖2-8a所示。</p><p>  圖2-6 【倒角】控制面板</p><p>  圖2-7 三維實體模型</p><p>  完成倒角。單擊 按鈕進入圓角操控板如圖2-9所示,設置圓角半徑為1.5,選擇兩

42、槽底部另外一條邊線如圖2-8b,單擊 按鈕完成倒圓角。零件造型完畢。</p><p>  獲取零件各尺寸的標識號,以便在后序編程中使用。在模型樹中【右鍵】單擊拉伸1彈出快捷菜單選中【編輯】,在繪圖區(qū)選中某一尺寸單擊【右鍵】、【屬性】,彈出【尺寸屬性】對話框,切換到【尺寸文本】,在名稱編輯框中的數(shù)值部分即為尺寸標識號,用相同方法獲得各尺寸的標識號,為各尺寸設置變量,其中部分尺寸值相同,設置為一個變量,具體如表

43、2-1所示。</p><p>  圖2-8a 槽端尺寸 圖2-8b 槽底尺寸</p><p>  圖2-9 【圓角】控制面板</p><p>  表2-1 尺寸標識號與變量對照表</p><p>  第3章 軸的參數(shù)化設計</p><p>  本章主要介紹如何使用VC的

44、MFC類庫來開發(fā)Pro/Toolkit對話框應用程序。用VC開發(fā)程序時,CDialog類是使用頻率較高的MFC對象。</p><p><b>  3.1 菜單的添加</b></p><p>  由于該對話框通過菜單來調(diào)用,所以需要在Pro/E上添加一個菜單,并給菜單添加一個動作函數(shù)??梢园堰@個菜單掛在Pro/E的【工具】菜單下,菜單的名稱為【中間軸】。要添加一個菜單,

45、必須先建立一個信息資源文件。</p><p> ?。?)在【項目】文件夾zhongjianzh下面新建一個文件夾text,然后在該文件夾內(nèi)建兩個文件夾chinese_cn和usascii;</p><p> ?。?)在這兩個文件夾內(nèi)分別創(chuàng)建文件message.txt,并在兩個文件里面輸入:</p><p><b>  Newmdl</b><

46、;/p><p><b>  中間軸</b></p><p><b>  #</b></p><p><b>  #</b></p><p>  Usr Button For New Mdl</p><p>  用于模型新建的用戶菜單</p>&

47、lt;p><b>  #</b></p><p><b>  #</b></p><p>  注意“#”必須在英文格式下輸入,否則將無法顯示菜單。</p><p>  編輯好菜單資源文件后,就可以編寫程序來添加自定義菜單。添加菜單的操作在user_initialize()內(nèi)完成。在程序主文件zhongjianzh.c

48、pp里面自定義一個菜單的動作函數(shù):</p><p>  #include "ProSelection.h"</p><p>  void MenuNewMdl();//菜單的動作函數(shù)</p><p>  再添加一個菜單訪問函數(shù),這個函數(shù)是用來控制菜單顯示的,即什么情況下可以讓菜單顯示,什么情況下讓菜單無效。這個狀態(tài)有訪問狀態(tài)函數(shù)來控制,建一個訪問

49、控制函數(shù)。</p><p>  static uiCmdAccessState UsrAccessDefault(uiCmdAccessMode access_mode)</p><p><b>  {</b></p><p>  return(ACCESS_AVAILABLE);//返回可用,即任何情況下這個菜單都有效</p>

50、<p><b>  }</b></p><p>  最終項目主文件zhongjianzh.cpp如下:</p><p>  // zhongjianzh.cpp : 定義 DLL 的初始化例程。</p><p><b>  //</b></p><p>  #include "s

51、tdafx.h"</p><p>  #include "zhongjianzh.h"</p><p>  #include "zhongjianzhdlg.h"</p><p>  //Pro/Toolkit的頭文件</p><p>  #include "ProToolkit.h

52、"</p><p>  #include "ProUtil.h"</p><p>  #include "ProMenu.h"</p><p>  #include "ProMenuBar.h"</p><p>  #include "ProWindows.h&q

53、uot;</p><p>  #include "ProMdl.h"</p><p>  #include "ProSolid.h"</p><p>  #include "ProDimension.h"</p><p>  #include "ProArray.h&quo

54、t;</p><p>  #include "ProParameter.h"</p><p>  #include "ProParamval.h"</p><p>  #include "ProMessage.h"</p><p>  #include "ProModeli

55、tem.h"</p><p>  #include "ProDrawing.h"</p><p>  #include "ProFeature.h"</p><p>  #include "ProFeatType.h"</p><p>  #include "Pr

56、oNotify.h"</p><p>  #include "ProRefInfo.h"</p><p>  #include "ProRelSet.h"</p><p>  #include "ProSelection.h"</p><p>  void MenuNewM

57、dl();//聲明菜單動作函數(shù)函數(shù)</p><p>  zhongjianzhdlg dlg;//實例化對話框</p><p>  #ifdef _DEBUG</p><p>  #define new DEBUG_NEW</p><p><b>  #endif</b></p><p>  st

58、atic uiCmdAccessState UsrAccessDefault(uiCmdAccessMode access_mode)</p><p><b>  {</b></p><p>  return(ACCESS_AVAILABLE);</p><p><b>  }</b></p><p&g

59、t;<b>  //</b></p><p><b>  //注意!</b></p><p><b>  //</b></p><p>  //如果此 DLL 動態(tài)鏈接到 MFC</p><p>  //DLL,從此 DLL 導出并</p><p

60、>  //調(diào)入 MFC 的任何函數(shù)在函數(shù)的最前面</p><p>  //都必須添加 AFX_MANAGE_STATE 宏。</p><p><b>  //</b></p><p><b>  //例如:</b></p><p><b>  //</b>&l

61、t;/p><p>  //extern "C" BOOL PASCAL EXPORT ExportedFunction()</p><p><b>  //{</b></p><p>  //AFX_MANAGE_STATE(AfxGetStaticModuleState());</p><p&

62、gt;  //// 此處為普通函數(shù)體</p><p><b>  //}</b></p><p><b>  //</b></p><p>  //此宏先于任何 MFC 調(diào)用</p><p>  //出現(xiàn)在每個函數(shù)中十分重要。這意味著</p><p>  /

63、/它必須作為函數(shù)中的第一個語句</p><p>  //出現(xiàn),甚至先于所有對象變量聲明,</p><p>  //這是因為它們的構(gòu)造函數(shù)可能生成 MFC</p><p>  //DLL 調(diào)用。</p><p><b>  //</b></p><p>  //有關(guān)其他詳細信息,

64、</p><p>  //請參閱 MFC 技術(shù)說明 33 和 58。</p><p><b>  //</b></p><p>  // CzhongjianzhApp</p><p>  BEGIN_MESSAGE_MAP(CzhongjianzhApp, CWinApp)</p><p>

65、  END_MESSAGE_MAP()</p><p>  // CzhongjianzhApp 構(gòu)造</p><p>  CzhongjianzhApp::CzhongjianzhApp()</p><p><b>  {</b></p><p>  // TODO: 在此處添加構(gòu)造代碼,</p><

66、;p>  // 將所有重要的初始化放置在 InitInstance 中</p><p><b>  }</b></p><p>  // 唯一的一個 CzhongjianzhApp 對象</p><p>  CzhongjianzhApp theApp;</p><p>  // CzhongjianzhApp 初

67、始化</p><p>  BOOL CzhongjianzhApp::InitInstance()</p><p><b>  {</b></p><p>  CWinApp::InitInstance();</p><p>  return TRUE;</p><p><b>  }&

68、lt;/b></p><p>  extern"C"int user_initialize(</p><p><b>  int argc,</b></p><p>  char* argv[],</p><p>  char* version,</p><p>  ch

69、ar* build,</p><p>  wchar_t errbuf[80])</p><p><b>  {</b></p><p>  ProError status;</p><p>  ProFileName Msg;</p><p>  uiCmdCmdId uiCmdNewMdl;&

70、lt;/p><p>  ProStringToWstring(Msg,"message.txt");</p><p>  status=ProCmdActionAdd("新建全新對象命令",(uiCmdCmdActFn)MenuNewMdl,</p><p>  uiCmdPrioDefault,UsrAccessDefault,

71、PRO_B_TRUE,PRO_B_TRUE,&uiCmdNewMdl); //返回動作函數(shù)的標識給參數(shù)uiCmdNewMdl</p><p>  status=ProMenubarmenuPushbuttonAdd("Utilities","NewMdl","NewMdl",</p><p>  "Usr But

72、ton For New </p><p>  Mdl","Utilities.psh_util_aux",PRO_B_TRUE,uiCmdNewMdl,Msg); //將動作函數(shù)與菜單聯(lián)系起來</p><p><b>  return 0;</b></p><p><b>  }</b><

73、;/p><p>  extern"C"void user_terminate(void)</p><p><b>  {</b></p><p><b>  }</b></p><p>  void MenuNewMdl()</p><p><b>

74、  {</b></p><p>  ProMdl mdl;</p><p>  ProPath a;</p><p>  //將零件三維造型圖的位置路徑賦給參數(shù)a</p><p>  ProStringToWstring(a,"E:\\圖形\\zhongjianzhou.prt");</p>&l

75、t;p>  //打開零件三維造型圖</p><p>  ProMdlLoad(a,PRO_MDL_UNUSED,PRO_B_FALSE,&mdl);</p><p>  ProMdlDisplay(mdl);</p><p>  AFX_MANAGE_STATE(AfxGetStaticModuleState());</p><p&

76、gt;  dlg.DoModal();//模式方式顯示對話框</p><p><b>  }</b></p><p>  3.2 MFC對話框的建立及運行</p><p>  3.2.1 新建一個MFC DLL的項目</p><p>  新建一個名稱為“zhongjianzhou”的MFC DLL項目,并設置好頭文件、庫

77、文件、和項目的屬性,然后在項目的主文件zhongjianzhou.cpp內(nèi)添加常用的頭文件、初始化函數(shù)和終止函數(shù)。 圖3-1 MFC對話框</p><p>  3.2.2 創(chuàng)建對話框資源 </p><p>  在VC的【資源視圖】里面添加對話框資源并在對話框上添加3個Button按鈕、9個編輯控件(Edi

78、t Control)、9個靜態(tài)文本控件(Static Text),將對話框的Caption屬性改為“畢業(yè)設計”,如圖3-1所示,各控件的ID及屬性設置如表3-1所示。</p><p>  表3-1 對話框控件設置</p><p>  3.2.3 創(chuàng)建對話框類</p><p> ?。?)設計好對話框界面后,就可以創(chuàng)建一個對話框類了。方法是雙擊設計好的對話框窗口,然后輸

79、入對話框類的名稱zhongjianzhoudlg,如圖3-2所示。</p><p>  圖3-2 創(chuàng)建對話框類</p><p> ?。?)給對話框窗口上的編輯控件添加double類型的變量如圖3-3所示。</p><p>  圖3-3 添加成員變量對話框</p><p> ?。?)用相同的方法給各個編輯框添加double類型。</p&g

80、t;<p>  (4)分別雙擊【確定】、【取消】和【再生】按鈕,給按鈕添加事務處理程序。</p><p> ?。?)給類添加兩個成員函數(shù):</p><p>  void input(double x); // 將編輯框中的數(shù)值傳遞給編輯框變量</p><p>  void sets(double d, int n); // 將編輯框變量的值賦給對應的

81、尺寸值</p><p>  3.3 整個參數(shù)化的實現(xiàn)</p><p>  3.3.1 編寫代碼,實現(xiàn)每個函數(shù)的功能</p><p>  設置好類的成員變量成員函數(shù)之后,就可以編寫代碼以實現(xiàn)每個函數(shù)的功能,具體如下:</p><p>  (1)對話框類頭文件</p><p>  #pragma once</p>

82、;<p>  // zhongjianzhdlg 對話框</p><p>  class zhongjianzhdlg : public CDialog</p><p><b>  {</b></p><p>  DECLARE_DYNAMIC(zhongjianzhdlg)</p><p><b&g

83、t;  public:</b></p><p>  zhongjianzhdlg(CWnd* pParent = NULL); // 標準構(gòu)造函數(shù)</p><p>  virtual ~zhongjianzhdlg();</p><p><b>  // 對話框數(shù)據(jù)</b></p><p>  enum

84、{ IDD = IDD_biyesheji };</p><p>  protected:</p><p>  virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持</p><p>  DECLARE_MESSAGE_MAP()</p><p><b>  

85、public:</b></p><p>  afx_msg void OnBnClickedOk();</p><p>  afx_msg void OnBnClickedCancel();</p><p><b>  // 中間段長</b></p><p>  double ml;</p>&

86、lt;p><b>  // 兩端段長</b></p><p>  double sl;</p><p><b>  // 兩端段直徑</b></p><p>  double sd;</p><p><b>  // 中間段直徑</b></p><p&

87、gt;  double md;</p><p><b>  // 槽段長</b></p><p>  double cl;</p><p><b>  // 槽段直徑</b></p><p>  double cd;</p><p><b>  // 兩端段倒角&l

88、t;/b></p><p>  double sda;</p><p><b>  // 槽段倒角</b></p><p>  double cda;</p><p><b>  // 槽段圓角</b></p><p>  double cy;</p>&

89、lt;p>  // 將編輯框中的數(shù)值傳遞給編輯框變量</p><p>  void input(double x);</p><p>  // 將編輯框變量的值賦給對應的尺寸值</p><p>  void sets(double d, int n);</p><p>  afx_msg void OnBnClickedzaisheng

90、();</p><p><b>  };</b></p><p> ?。?)對話框類程序主文件:zhongjianzhdlg.cpp</p><p>  // zhongjianzhdlg.cpp : 實現(xiàn)文件</p><p>  #include "stdafx.h"</p><

91、p>  #include "zhongjianzh.h"</p><p>  #include "zhongjianzhdlg.h"</p><p>  #include ".\zhongjianzhdlg.h"</p><p>  #include "ProToolkit.h"&

92、lt;/p><p>  #include "ProUtil.h"</p><p>  #include "ProSolid.h"</p><p>  #include "ProMdl.h"</p><p>  #include "ProDrawing.h"</p

93、><p>  #include "ProWindows.h"</p><p>  #include "ProModelitem.h"</p><p>  // zhongjianzhdlg 對話框</p><p>  IMPLEMENT_DYNAMIC(zhongjianzhdlg, CDialog)<

94、;/p><p>  zhongjianzhdlg::zhongjianzhdlg(CWnd* pParent /*=NULL*/)</p><p>  : CDialog(zhongjianzhdlg::IDD, pParent)</p><p><b>  , ml(241)</b></p><p>  , sl(29.8

95、)</p><p><b>  , sd(34)</b></p><p><b>  , md(35)</b></p><p><b>  , cl(5)</b></p><p><b>  , cd(32)</b></p><p>

96、;<b>  , sda(2)</b></p><p><b>  , cda(1)</b></p><p><b>  , cy(1)</b></p><p><b>  {</b></p><p><b>  }</b></

97、p><p>  zhongjianzhdlg::~zhongjianzhdlg()</p><p><b>  {</b></p><p><b>  }</b></p><p>  void zhongjianzhdlg::DoDataExchange(CDataExchange* pDX)</

98、p><p><b>  {</b></p><p>  CDialog::DoDataExchange(pDX);</p><p>  DDX_Text(pDX, IDC_ml, ml);</p><p>  DDX_Text(pDX, IDC_sl, sl);</p><p>  DDX_Text(

99、pDX, IDC_sd, sd);</p><p>  DDX_Text(pDX, IDC_md, md);</p><p>  DDX_Text(pDX, IDC_cl, cl);</p><p>  DDX_Text(pDX, IDC_cd, cd);</p><p>  DDX_Text(pDX, IDC_sda, sda);</

100、p><p>  DDX_Text(pDX, IDC_cda, cda);</p><p>  DDX_Text(pDX, IDC_cy, cy);</p><p><b>  }</b></p><p>  BEGIN_MESSAGE_MAP(zhongjianzhdlg, CDialog)</p><p

101、>  ON_BN_CLICKED(IDOK, OnBnClickedOk)</p><p>  ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)</p><p>  ON_BN_CLICKED(IDC_zaisheng, OnBnClickedzaisheng)</p><p>  END_MESSAGE_MAP()<

102、/p><p>  // zhongjianzhdlg 消息處理程序</p><p>  /*************************************************************</p><p>  /*【確定】的事務處理函數(shù)</p><p>  /********************************

103、*****************************</p><p>  void zhongjianzhdlg::OnBnClickedOk()</p><p><b>  {</b></p><p>  input(sl);</p><p>  input(sd);</p><p>  

104、input(cl);</p><p>  input(cd);</p><p>  input(ml);</p><p>  input(md);</p><p>  input(cl);</p><p>  input(cd);</p><p>  input(sl);</p>

105、<p>  input(sd);</p><p>  input(sda);</p><p>  input(sda);</p><p>  input(cda);</p><p>  input(cda);</p><p>  input(cy);</p><p>  input(c

106、y);</p><p>  sets(sl,0);</p><p>  sets(sd,1);</p><p>  sets(cl,2);</p><p>  sets(cd,3);</p><p>  sets(ml,4);</p><p>  sets(md,5);</p>&

107、lt;p>  sets(cl,6);</p><p>  sets(cd,7);</p><p>  sets(sl,8);</p><p>  sets(sd,9);</p><p>  sets(sda,10);</p><p>  sets(sda,11);</p><p>  se

108、ts(cda,12);</p><p>  sets(cda,13);</p><p>  sets(cy,14);</p><p>  sets(cy,15);</p><p>  int p_window_id;</p><p>  ProWindowCurrentGet(&p_window_id);<

109、;/p><p>  ProWindowActivate(p_window_id);</p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p><b>  OnOK();</b></p><p><b>  }</b></p><p>  void zho

110、ngjianzhdlg::OnBnClickedCancel()</p><p><b>  {</b></p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p>  OnCancel();</p><p><b>  }</b></p><p> 

111、 // 將編輯框中的數(shù)值傳遞給編輯框變量</p><p>  void zhongjianzhdlg::input(double x)</p><p><b>  {</b></p><p>  UpdateData(true);</p><p><b>  }</b></p><

112、;p>  // 將編輯框變量的值賦給對應的尺寸值</p><p>  void zhongjianzhdlg::sets(double d, int n)</p><p><b>  {</b></p><p>  //d為編輯框變量值,n為相應尺寸的尺寸標號</p><p>  ProMdl p_handle;&

113、lt;/p><p>  ProModelitem p_handle1;</p><p>  ProMdlCurrentGet(&p_handle);//獲得當前窗口中的模型句柄</p><p>  ProModelitemInit(p_handle,n,PRO_DIMENSION,&p_handle1);//根據(jù)類型、所屬模型以及項的標示號來獲得模型項&

114、lt;/p><p>  ProDimensionValueSet(&p_handle1,d); //設置指定尺寸對象的值</p><p><b>  }</b></p><p>  void zhongjianzhdlg::OnBnClickedzaisheng()</p><p><b>  {</

115、b></p><p>  // TODO: 在此添加控件通知處理程序代碼</p><p>  ProMdl p_handle;</p><p>  ProMdlCurrentGet(&p_handle);</p><p>  ProSolidRegenerate((ProSolid)p_handle,PRO_REGEN_NO_F

116、LAGS); //重生或更新實體對象</p><p><b>  }</b></p><p>  3.3.2 編譯程序</p><p>  程序編好后,就可以生成DLL文件。單擊【生成解決方案】即可進行編譯生成項目。</p><p>  3.3.3 編寫注冊文件</p><p>  編寫注冊文件z

117、hongjianzh.dat如下:</p><p>  Name zhongjianzh</p><p>  startup dll</p><p>  exec_file E:\程序\zhongjianzh\zhongjianzh\Debug\zhongjianzh.dll</p><p>  text_dir E:\程序\zhongjia

118、nzh\zhongjianzh\text</p><p>  allow_stop true</p><p>  revision Wildfire</p><p><b>  End</b></p><p>  3.3.4 注冊運行程序</p><p>  通過Pro/E的【輔助應用程序】菜單打

119、開文件,并啟動程序,在菜單【工具】下可以看到新添加的【中間軸】項,如圖3-4所示。</p><p>  圖3-4 添加【中間軸】項</p><p>  單擊【中間軸】,會彈出中間軸的對話框,同時調(diào)入前面所繪的零件圖如圖3-5所示,修改其中一個編輯框值,例如修改兩端端直徑為340,單擊【確定】,再單擊【再生】,零件可以按照新尺寸重新生成如圖3-6所示。</p><p>

120、;  圖3-5 中間軸對話框 圖3-6 再生零件圖</p><p><b>  結(jié)論</b></p><p>  本次設計完成了卷筒中間軸的參數(shù)化設計,主要包含以下幾點內(nèi)容:</p><p>  1.完成了一項菜單的添加。在菜單【工具】下新添加了【中間軸】項。</p><p> 

121、 2.完成了MFC對話框的建立。在單擊菜單【工具】下的【中間軸】項后會彈出一個對話框。包含:中間段長、兩端段長、兩端段直徑、中間段直徑、槽段長、槽段直徑、兩端段倒角、槽段倒角、槽段圓角九個參數(shù)對話框。</p><p>  3.實現(xiàn)了對已有圖形的調(diào)用。當單擊【中間軸】項后不僅會彈出對話框,而且還會調(diào)用原有的中間軸圖形。</p><p>  4.實現(xiàn)了對原有圖形的修改。當對對話框內(nèi)的數(shù)據(jù)做出合

122、理的修改后會生成一個新的圖形。</p><p>  不足之處是未能實現(xiàn)對整個卷筒的參數(shù)化設計,實現(xiàn)的功能有限??梢栽俸罄m(xù)設計中添加卷筒菜單項。再單擊【卷筒】項后,會產(chǎn)生卷筒外殼、倒繩器、彈性聯(lián)軸器、中間軸卷筒部件等下拉菜單。再單擊這些下拉菜單的某一項后會彈出對話框,以實現(xiàn)對這些零件的修改。最后生成一個全新的卷筒。</p><p><b>  致 謝</b><

123、/p><p>  本文是在老師**的悉心指導下完成的。從題目的確定,到關(guān)鍵問題的解決,直至取得目前階段性的成果,都傾注了老師大量的心血。老師嚴謹求實的治學態(tài)度、高度負責的敬業(yè)精神、淵博的學識、博大的胸懷、開拓的視野、敏銳的洞察力,都給了我深深的影響和啟迪,使我無論在學習上還是在思想上,都受益匪淺。衷心感謝老師對我在學習上的關(guān)心和幫助。值此成文之際,特此向老師致以衷心的感謝和崇高的敬意。</p><

124、p><b>  參考文獻</b></p><p>  [1] 吳立軍.Pro/Engineer二次開發(fā)技術(shù)基礎(chǔ).北京:電子工業(yè)出版社,2006</p><p>  [2] JohnE.swanke visual C++ MFC擴展編程實例.北京:機械工業(yè)出版社,1999</p><p>  [3] 孫小撈等.Pro/Engineer

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論