基于ProE Wildfire 建立常用件參數(shù)化模型庫
《基于ProE Wildfire 建立常用件參數(shù)化模型庫》由會員分享,可在線閱讀,更多相關(guān)《基于ProE Wildfire 建立常用件參數(shù)化模型庫(80頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、 目錄 前言 0 基于Pro/E Wildfire 建立常用件參數(shù)化模型庫 1 第一章 緒論 3 1.1引言 3 1.2 課題的提出及意義 4 1.3本章小節(jié) 4 第二章二次開發(fā)總體方案的確定 4 2.1 二次開發(fā)語言(Pro/TOOLKIT) 4 2.2 開發(fā)工具的確定 5 2.3 開發(fā)環(huán)境 7 2.3.1硬件開發(fā)環(huán)境 7 2.3.2軟件開發(fā)環(huán)境 7 2.4總體設(shè)計框架 10 第三章菜單的設(shè)計開發(fā) 12 3.1 菜單的設(shè)計 12 3.1.1 編寫菜單信息資源文件 13 3.1.2 編寫菜單操作源程序 19 3.1.3 注冊運行 22 第四章建立參數(shù)化模
2、型庫 24 4.1國家標(biāo)準(zhǔn) 24 4.2參數(shù)化建模 26 4.3對話框的設(shè)計 28 4.4參數(shù)值的傳遞 46 4.5編寫注冊文件 71 4.6編譯程序并執(zhí)行 71 第五章總結(jié)與展望 77 5.1論文總結(jié) 77 5.2后續(xù)發(fā)展方向 77 致謝 78 參考文獻 79 前言 畢業(yè)設(shè)計是我們綜合運用所學(xué)的理論知識和實踐相結(jié)合的重要環(huán)節(jié)。是對我們大學(xué)四年所學(xué)知識的一次全面檢驗和應(yīng)用; 首先,畢業(yè)設(shè)計能培養(yǎng)我們分析實際問題的能力,運用所學(xué)知識動手解決實際問題的能力,從而鞏固深化所學(xué)的理論知識,為即將走向工作崗位打下堅實的基礎(chǔ)。 其次,畢業(yè)設(shè)計培養(yǎng)我們深入實際,調(diào)查研究
3、,解決在現(xiàn)實問題中可能出現(xiàn)各種問題,所以我們在設(shè)計中必須學(xué)會分析問題和解決問題的方法,要抓住主要問題,按安全可靠,經(jīng)濟實用的原則設(shè)計。 再次,畢業(yè)設(shè)計培養(yǎng)了我們熟悉有關(guān)技術(shù)政策,運用國家標(biāo)準(zhǔn)規(guī)范,手冊,圖冊等工具書,獨立進行設(shè)計計算,數(shù)據(jù)處理,編寫技術(shù)文件的工作能力。 在畢業(yè)設(shè)計中,我們必須培養(yǎng)認(rèn)真、負責(zé)、細致、踏實的工作作風(fēng),養(yǎng)成保質(zhì)保量、按時按量完成任務(wù)的習(xí)慣,要達到這一目的,我們在設(shè)計中必須應(yīng)做到: (1)隨時準(zhǔn)備各種資料,為畢業(yè)設(shè)計做好充分的準(zhǔn)備。 (2)認(rèn)真計算和檢驗,保證計算結(jié)果的準(zhǔn)確性。 (3)仿真建模和CAD制圖要認(rèn)真、仔細和不斷反復(fù)檢查,以保證圖紙的質(zhì)量。 (4)
4、勞逸結(jié)合,提高工作效率,按時完成自己的設(shè)計任務(wù)。 這次畢業(yè)設(shè)計不僅關(guān)系著每個人的學(xué)業(yè)成績,更重要的是它體現(xiàn)了每個人對待設(shè)計的認(rèn)真程度和實際能力。固然每個人的能力不同,設(shè)計有好有劣,但我們還是力求向好的方面努力,使設(shè)計既符合實際,更加完善完美。我想這與指導(dǎo)老師和領(lǐng)導(dǎo)的要求也是一致的。不過由于對一些實踐性知識了解甚少,加上本次設(shè)計時間緊、任務(wù)重、圖紙多,很難百分之百的達到畢業(yè)設(shè)計的要求。所以這次畢業(yè)設(shè)計也只能是一個嘗試,但對我將來的工作必將是一個很大的幫助,相信通過這次畢業(yè)設(shè)計能達到預(yù)期目的,各方面都有所提高。 由于經(jīng)驗不足、水平有限加之時間倉促,本次畢業(yè)設(shè)計一定存在不少錯誤,歡迎各位老師和同
5、學(xué)批評指正。 基于Pro/E Wildfire 建立常用件參數(shù)化模型庫 摘要:本課題針對多種類型通用零件,提出基于Pro/E平臺進行二次開發(fā)的一種可行方案。并且成功開發(fā)設(shè)計出能滿足用戶要求的零件模型庫。 本文首先簡單介紹了與本課題相關(guān)的Pro/E二次開發(fā)功能,包括自定義菜單的生成、對話框的制作、Pro/TOOLKIT應(yīng)用程序的執(zhí)行。其次根據(jù)本課題的要求,分析了零件二次開發(fā)的整體設(shè)計思路。然后以標(biāo)準(zhǔn)件為例,較詳細地說明了利用Pro/TOOLKIT及Visual Studio2005在Pro/E二次開發(fā)中的應(yīng)用,并給出了測試實例。最后對開發(fā)的三維建模程序進行測試。結(jié)果表明:開發(fā)程序正確
6、無誤,建模迅速,大大提高了這類通用件在Pro/E平臺上的設(shè)計效率。 關(guān)鍵詞:Pro/E、二次開發(fā)、Pro/TOOLKIT、Visual Studio2005 The Secondary Development of common parts Based on Pro/E Abstract:This article introduces a feasible method of secondary development based on Pro/E against some kinds of parts. And the spring parts library is s
7、uccessfully designed meet to the user requirements. Firstly, this articlesimply introduces the secondary development functions of Pro/E referring to this task which includes the creation of menu, the creation of the dialogue,the Pro/TOOLKIT procedure execution. Then the precept to the overall desig
8、n way of parts secondary development is analyzed.With an example of aStandard partsin detail,it particularly describes the application of Pro/TOOLKIT and Visual Studio2005 in the secondary development base on Pro/E, andtest examples. At last, the test of all process of three-dimension-part-model dri
9、ven by database is performed indicates that the program is right,and the mold can be set up quickly. The efficiency for the design of interchangeable part based on Pro/E can be increased. Keywords: Pro/E、Secondary Development、Pro/TOOLKIT、Visual Studio2005 第一章 緒論 1.1引言 (1)參數(shù)化技術(shù) 正當(dāng)實體造型技術(shù)在CAD
10、系統(tǒng)中廣泛運用時,出現(xiàn)了一種比無約束自由造型更好的算法-參數(shù)化實體造型方法。它主要的特點是:基于特征、全尺寸約束、全數(shù)據(jù)相關(guān)、尺寸驅(qū)動設(shè)計修改。參數(shù)化技術(shù)徹底克服了自由緘默的無約束狀態(tài),由尺寸決定實體造型的幾何形狀。尺寸驅(qū)動已經(jīng)成為當(dāng)今造型系統(tǒng)的基本功能。如果想修改零件形狀的話,只需修改一下尺寸的數(shù)值就可以實現(xiàn)形狀上的改變。這種新構(gòu)想最先在PTC公司(Parametric Technology Corp)的軟件PRO/ENGINEER中成為現(xiàn)實。由于參數(shù)化技術(shù)的成功應(yīng)用,使得它很快成為CAD業(yè)界的標(biāo)準(zhǔn),許多軟件廠商紛紛追趕。 (2)變量化技術(shù) 變量化造型技術(shù)保留了參數(shù)化技術(shù)基于特征、全數(shù)據(jù)
11、相關(guān)、尺寸驅(qū)動設(shè)計修改的優(yōu)點,但是在約束定義方面做了一定的改變。變量化造型技術(shù)將所需定義的尺寸“參數(shù)”進一步區(qū)分為形狀約束和尺寸約束,而不僅僅是用尺寸來約束全部幾何。通常在新產(chǎn)品開發(fā)的概念設(shè)計階段,設(shè)計者首先考慮的是設(shè)計思想及概念,并將其體現(xiàn)在某些幾何形狀之中。但是這些幾何形狀的嚴(yán)格的尺寸定位關(guān)系并不能在設(shè)計的初始階段完全確定,所以希望在初始階段能夠允許欠尺寸約束的存在。 (3)二次開發(fā)研究 Pro/ENGIEER 提供了強大的三位幾何造型功能,使我們能夠創(chuàng)建各種復(fù)雜的幾何零件模型,但有時這些功能并不能滿足我們的要求。例如標(biāo)準(zhǔn)零件系列,它們的結(jié)構(gòu)都是相同的,區(qū)別只在與尺寸,如果標(biāo)準(zhǔn)零件系列
12、通過三維建模的方式來實現(xiàn),那么工作量將是非常巨大的。最有效的方法使利用標(biāo)準(zhǔn)零件的相似性,發(fā)揮Pro/ENGEER參數(shù)化建模的特長,使用二次開發(fā)工具,如族表工具、用戶定義特征(UDF)、Pro/Program、J-link、Pro/Toolkit等來實現(xiàn)。 1.2 課題的提出及意義 產(chǎn)品的三維設(shè)計離不開CAD/CAM系統(tǒng)的支持,具有技術(shù)成熟、功能強大的Pro/ENGINEER參數(shù)化造型系統(tǒng)在設(shè)計和制造業(yè)中引起了人們的重視,并得到了日益廣泛的應(yīng)用。Pro/ENGINEER提供了強大的三維幾何造型功能,使我們能夠創(chuàng)建出各種復(fù)雜的幾何模型,作為通用的三維CAD/CAM系統(tǒng)在功能上基本能夠滿足產(chǎn)品三
13、維設(shè)計要求,但有時這些功能并不能滿足我們的需求。例如標(biāo)準(zhǔn)零件系列,它們的結(jié)構(gòu)都是相同的,區(qū)別只在于尺寸,如果標(biāo)準(zhǔn)零件系列都通過三維建模的方式來實現(xiàn),那么工作量將非常巨大。雖然Pro/ENGINEER自身也有一些模型庫,但是這遠遠滿足不了用戶的要求。因此,也就有了本課題研究開發(fā)的必要。 機械產(chǎn)品的開發(fā)過程中會用到大量的通用零件、標(biāo)準(zhǔn)件、相似件。如何建立這些常用零部件的庫,利用已有的資源,花費較少的時間完成產(chǎn)品設(shè)計是用戶非常關(guān)心的問題。建立這些通用件、標(biāo)準(zhǔn)件、相似件零件庫作為一項可行方案,一方面可以避免不同設(shè)計者的重復(fù)勞動,提高設(shè)計效率,提高設(shè)計的標(biāo)準(zhǔn)化程度,減少錯誤發(fā)生率,縮短產(chǎn)品開發(fā)周期;另
14、一方面還可以基于該軟件的三維實體模型進行更深層次的分析(如有限元分析等),以確保機械設(shè)計結(jié)果安全可靠。 綜上,對某些特殊零件進行二次開發(fā)是非常有必要的。因此也就有了本課題的提出。 1.3本章小節(jié) 本章介紹了現(xiàn)代CAD技術(shù)中的發(fā)展及其需求,并分析了參數(shù)和變量化技術(shù)的應(yīng)用前景,確定了Pro/ENGINEER二次開發(fā)的必要性和方便性,確定了課題的主要研究內(nèi)容和方向:利用Pro/E TOOLKIT進行零件的參數(shù)化建模,以及需要用到的相關(guān)技術(shù)。 第二章二次開發(fā)總體方案的確定 2.1 二次開發(fā)語言(Pro/TOOLKIT) Pro/TOOLKIT是美國Parametric Technology
15、 Corporation(PTC)公司為Pro/ENGINEER軟件提供的開發(fā)工具包,其主要目的是讓用戶或第三方通過C程序代碼擴充Pro/ENGINEER系統(tǒng)的功能,開發(fā)基于Pro/ENGINEER系統(tǒng)的應(yīng)用程序模塊,不僅如此,還可以利用Pro/TOOLKIT提供的UI對話框、菜單以及VC的可視化界面技術(shù),設(shè)計出方便實用的人機交互界面,從而大大提高系統(tǒng)的使用效率。Pro/TOOLKIT是Pro/ENGINEER的一個應(yīng)用程序接口(API),它的編程語言是C語言,可以對Pro/ENGINEER進行功能擴展,滿足PTC客戶的特定需求。而且,Pro/TOOLKIT提供了定制標(biāo)準(zhǔn)Pro/ENGINEE
16、R用戶界面的能力,自動執(zhí)行重復(fù)性的程序,通過Pro/ENGINEER集成的內(nèi)部程序(Dll)或外部應(yīng)用程序(Exe)可以為造型用戶提供自定義的應(yīng)用程序、設(shè)計規(guī)劃和繪圖自動化。 Pro/TOOLKIT工具包提供了開發(fā)Pro/ENGINEER所需的函數(shù)庫文件和頭文件,使用戶編寫的應(yīng)用程序能夠安全地控制和訪問Pro/ENGINEER,并可以實現(xiàn)應(yīng)用程序模塊與Pro/ENGINEER系統(tǒng)的無縫集成。 Pro/TOOLKIT工具包是隨Pro/ENGINEER安裝盤一起提供的,安裝時在“元件”列表框中選中“API Toolkits”復(fù)選框,并在“子元件”列表框中選中“Pro/TOOLKIT”復(fù)選框,這
17、樣將在Pro/ENGINEER系統(tǒng)的默認(rèn)目錄下自動創(chuàng)建兩個下級目錄:protoolkit和prodevelop。 Pro/TOOLKIT采用面向?qū)ο蟮某绦蛟O(shè)計方法(Object_Oriented Programming)。在Pro/ENGINEER和應(yīng)用程序之間主要是通過特定的數(shù)據(jù)結(jié)構(gòu)來傳遞信息,以應(yīng)用程序來說這種數(shù)據(jù)結(jié)構(gòu)并不是直接訪問的,而只能通過Pro/TOOLKIT提供的函數(shù)來訪問。 2.2 開發(fā)工具的確定 Pro/ENGINEER軟件本身自帶了一些二次開發(fā)工具,如族表工具、用戶定義特征(UDF)、Pro/Program、J-link、Pro/Toolkit等。 以下簡單介紹上述
18、幾種二次開發(fā)工具: 族表(Family Table) 通過族表可以方便地管理具有相同或相近結(jié)構(gòu)的零件,特別適用于標(biāo)準(zhǔn)零件的管理。族表工具是通過建立一個通用零件作為父零件,然后在其基礎(chǔ)上對各參數(shù)加以控制生成派生零件。整個族表是通過電子表格來實現(xiàn)的,因此可以稱其為表格驅(qū)動。 用戶定義特征(UDF) 用戶定義特征是將若干個系統(tǒng)特征整合為一個自定義特征,使用時作為一個整體出現(xiàn)。UDF適用特定產(chǎn)品的特定結(jié)構(gòu),有利于設(shè)計者根據(jù)產(chǎn)品特征快速生成幾何模型。 Pro/Program Pro/ENGINEER軟件對于每個模型都有一個主要設(shè)計步驟和參數(shù)列表Pro/Program,它是由類似BASIC的
19、高級語言構(gòu)成,用戶可以根據(jù)設(shè)計需要來編輯該模型的Program,使其以一個程序來工作。通過運行該程序,系統(tǒng)通過人機交互的方法來控制系統(tǒng)參數(shù)、特征出現(xiàn)與否以及特征的具體尺寸等。 J-link J-link是Pro/ENGINEER中自帶的基于JAVA語言的二次開發(fā)工具,是一種面向?qū)ο蟆ⅹ毩⒂诓僮飨到y(tǒng)平臺的開發(fā)工具。用戶通過JAVA編程實現(xiàn)向Pro/ENGINEER軟件添加功能。 Pro/TOOLKIT Pro/TOOLKIT同J-link一樣也是Pro/ENGINEER自帶的二次開發(fā)工具。在Pro/TOOLKIT中,PTC向用戶提供了大量的C語言函數(shù)庫,函數(shù)采用面向?qū)ο蟮娘L(fēng)格。通過調(diào)
20、用這些底層函數(shù),用戶能方便而又安全地訪問Pro/ENGINEER的數(shù)據(jù)庫及內(nèi)部應(yīng)用程序,進行二次開發(fā),擴展一些特定功能。 上述各種二次開發(fā)工具集中在Pro/ENGINEER的“工具”菜單中,如圖2-1所示。其中“輔助應(yīng)用程序”主要用來調(diào)用Pro/TOOLKIT程序。 圖2-1 由于Pro/TOOLKIT具有函數(shù)簡單,應(yīng)用方便等優(yōu)點,本課題將使用Pro/TOOLKIT進行二次開發(fā)研究。 2.3 開發(fā)環(huán)境 開發(fā)環(huán)境包括兩部分:即硬件開發(fā)環(huán)境和軟件開發(fā)環(huán)境。 2.3.1硬件開發(fā)環(huán)境 本課題是基于Pro/Engineer Wildfire4.0的二次開發(fā),因此只要能夠安裝支持Pro/
21、E Wildfire4.0版本即可。建議配置如表2-1所示。 表2-1 計算機配置 項目 推薦配置 CPU 2.53GHz 內(nèi)存 2GB 顯卡 顯存256MB以上,推薦使用ATIHD3470以上的顯卡 網(wǎng)卡 必須安裝網(wǎng)卡(或使用虛擬網(wǎng)卡) 2.3.2軟件開發(fā)環(huán)境 操作平臺:Windows2000/XP/NT; 開發(fā)平臺:Pro/ENGINEER Wildfire4.0; 開發(fā)語言:Visual Studio2005. 對于PROE4.0 來講,其文件結(jié)構(gòu)與2.0 是一致的,讀者可參照前面的描述來回顧相關(guān)內(nèi)容,下面請隨我一起來配置這套組合下的二次開發(fā)環(huán)境。首
22、先打開VS2005 中的VC 開發(fā)環(huán)境。依次選擇文件—>新建—>項目,系統(tǒng)彈出項目對話框(圖1-8) 圖2-2 選擇如圖所示的MFC DLL 項目,輸入項目名稱并設(shè)置項目路徑,點擊確定。在接下來的對話框中選擇“使用共享MFC DLL 的規(guī)則DLL”(默認(rèn)的也是這個選項),點擊完成后,與VC++6.0 一樣,系統(tǒng)自動為我們搭建了一個DLL的開發(fā)環(huán)境,現(xiàn)在,我們要在這個環(huán)境下配置TOOLKIT 開發(fā)所需要的頭文件和庫文件路徑。 依次在菜單中選擇:工具—>選項,系統(tǒng)彈出選項對話框。在該對話中選擇“項目和解決方案”一欄中的“VC++目錄”選項,并參照圖1-9 的方法設(shè)置頭文件路徑 圖2
23、-3 我的設(shè)置為: D:\Program Files\proeWildfire 4.0 \protoolkit\include D:\Program Files\proeWildfire 4.0 \protoolkit\protk_appls\includes D:\Program Files\proeWildfire 4.0 \prodevelop\includes D:\Program Files\proeWildfire 4.0 \prodevelop\prodev_appls\includes 仍舊在該對話框下,設(shè)置庫文件路徑,如圖1-10: 圖2-4 設(shè)置好頭文件
24、和庫文件路徑后,就還差最后一步了,現(xiàn)在我們要來指定使用中的具體庫文件。 圖2-5 點擊“項目”—>“屬性”,系統(tǒng)彈出該項目的屬性對話框。按照圖1-11 的方法設(shè)置工程的連接屬性。 我的“附加依賴關(guān)系”中為:protk_dll.lib prodev_dll.lib mpr.lib psapi.lib(筆者這里一共用到了四個庫,當(dāng)然,讀者可以根據(jù)自己需要,添加其他額外的庫文件) 在Release 版本下忽略的庫文件為:msvcrtd.lib(與VC++6.0 中是不一樣的)。設(shè)置完畢后,在Release 版本下編譯連接完全沒有問題,至此,環(huán)境設(shè)置便講完了。 2.4總體設(shè)計框架 本二
25、次開發(fā)是基于Pro/ENGINEER的關(guān)于標(biāo)準(zhǔn)件、正齒輪、錐齒輪、蝸輪、標(biāo)準(zhǔn)件的參數(shù)化設(shè)計。設(shè)計的對象是標(biāo)準(zhǔn)件。本任務(wù)將設(shè)計多種類型的標(biāo)準(zhǔn)件,要求用戶只需選擇或輸入相關(guān)參數(shù),就能自動生成所需的通用零件。標(biāo)準(zhǔn)件的類型非常多,這里將以螺栓與正齒輪為例進行二次開發(fā)設(shè)計過程說明。 本開發(fā)的總體設(shè)計流程如圖2-2所示,調(diào)用響應(yīng)圖如圖2-3所示。 打開VS2005 建立開發(fā)目錄 新建工程 設(shè)計菜單 設(shè)計對話框 Pro/toolkit編程 連接 調(diào)試通過 圖2-6 啟動Pro/E 手動加載菜單 選擇自定義菜單 選擇所需零件 調(diào)用對話框 輸入設(shè)計參數(shù)
26、 生成實體模型 退出程序 第三章菜單的設(shè)計開發(fā) 3.1 菜單的設(shè)計 菜單是Pro/ENGINEER的主要用戶界面。Pro/TOOLKIT提供了一系列菜單操作函數(shù),允許應(yīng)用程序創(chuàng)建和管理菜單。Pro/ENGINEER菜單包括菜單欄、菜單、菜單項(按鈕)、篩選按鈕、單選按鈕等等,如圖4-1示。 圖3-1 Pro/TOOLKIT可以向Pro/ENGINEER菜單中添加上述類型的菜單。添加菜單的大致過程如下: 編寫信息資源文件(信息資源文件用于提供菜單的標(biāo)簽文本和幫助信息); 使用Pro/TOOLKIT的函數(shù)編寫源程序,給菜單按鈕設(shè)置調(diào)用函數(shù)(動作函數(shù)); 注冊運行程
27、序。 下面介紹菜單的相關(guān)術(shù)語: l 菜單條(Menu bar)Pro/ENGINEER界面頂部菜單欄中的菜單,如File、Edit和View等均稱為菜單條; l 菜單條菜單(Menu bar menu)菜單條的下級子菜單。即多層菜單的次級菜單; l 菜單的按鈕(Push button)下拉菜單中用來啟動一組指令的菜單項,如File菜單條中的Edit按鈕; l 菜單的復(fù)選按鈕(Check button)下拉菜單中用來執(zhí)行開關(guān)動作的菜單項,如View菜單條中的Model Tree(模型樹)顯示或關(guān)閉菜單項; l 菜單的單選按鈕組(Radio group)下拉菜單的一組選項中只能設(shè)置其中
28、一項的菜單項; l 命令(Command)從菜單條或工具欄圖標(biāo)激活的一個執(zhí)行過程; l 命令標(biāo)識號(Command id)指向某一命令的指針。一般作為Pro/TOOLKIT函數(shù)的輸入?yún)?shù); l 動作命令(Action command)啟動菜單按鈕執(zhí)行的一組指令; l 選項命令(Option command)基于界面元素的狀態(tài)執(zhí)行的一組指令。該命令由菜單篩選按鈕和菜單單選按鈕組啟動 本設(shè)計要求所設(shè)計的菜單風(fēng)格與Pro/ENGINEER一致,即將菜單添加到Pro/ENGINEER的菜單欄,在其下拉菜單項菜單中要求有各種類型的標(biāo)準(zhǔn)件,如標(biāo)準(zhǔn)件庫,包括螺釘,螺栓,墊片,鍵等。 3.1.1
29、編寫菜單信息資源文件 信息資源文件用于提供菜單的標(biāo)簽文本(包括其他語言版本的標(biāo)簽)和幫助信息,如果要向Pro/ENGINEER中添加菜單,就必須使用信息資源文本,否則所添加的菜單不會在Pro/ENGINEER菜單欄中出現(xiàn)。 信息資源文件是一種ASCII碼文件,用來定義菜單項、菜單項提示等信息,可以用記事本和寫字板等文字處理軟件建立,也可在VC的集成開發(fā)環(huán)境中建立,但必須與純文本格式保存。在信息文件中以4行為一組,其含義為: 第1行:Pro/ENGINEER系統(tǒng)可以識別的關(guān)鍵字。該關(guān)鍵字必須與使用該信息文件函數(shù)中的相關(guān)字符串相同。 第2行:在菜單項或菜單項提示上顯示的英語文本。 第3行
30、:另一種語言的譯文或為空。這里為中文。 第4行:當(dāng)前的Pro/ENGINEER版本為空,“#”號。 按第2行或第3行的語言取決于系統(tǒng)環(huán)境變量lang的設(shè)置。 本設(shè)計中將向Pro/ENGINEER界面的頂部菜單欄中添加一個名為“通用件庫”的Menu bar類型的菜單,下屬兩個菜單項標(biāo)準(zhǔn)件庫和齒輪庫。名為“渦輪蝸桿”的下級子菜單又包含了:渦輪參數(shù)化設(shè)計、蝸桿參數(shù)化設(shè)計兩個菜單項 最終結(jié)果如圖3-2(a)、3-2 (b)所示。 圖4-2(a) “通用件庫”菜單 圖4-2(b) “標(biāo)準(zhǔn)件庫”菜單 圖4-2所示菜單的資源文件如下: StandardPartLibDesig
31、n 通用件庫 # # FirstButton 雙頭螺柱參數(shù)化設(shè)計 # # this button will generate a doublescrew_bolt this button will generate a doublescrew_bolt # # SecondButton 墊片參數(shù)化設(shè)計 # # this button will generate a shim this button will generate a shim # # ThirdButton 螺栓參數(shù)化設(shè)計 # # this button will generate
32、a bolt this button will generate a bolt # # FourthButton 螺母參數(shù)化設(shè)計 # # this button will generate nut this button will generate nut # # FifthButton 鍵參數(shù)化設(shè)計 # # this button will generate a key this button will generate a key # # SixthButton 螺釘參數(shù)化設(shè)計 # # this button will generate a
33、nut_bolt this button will generate a nut_bolt # # seventhButton 人字型齒輪參數(shù)化設(shè)計 # # this button will generate a Herringbone_gear this button will generate a Herringbone_gear # # eigthButton 軸參數(shù)化設(shè)計 # # this button will generate a shaft this button will generate a shaft # # SubMenu1 齒輪
34、參數(shù)化設(shè)計 # # SubMenu2 標(biāo)準(zhǔn)件庫 # # SubMenu3 蝸輪蝸桿參數(shù)化設(shè)計 # # ninthButton 錐齒輪參數(shù)化設(shè)計 # # this button will generate a bevel_gear this button will generate a bevel_gear # # tenthButton 蝸輪參數(shù)化設(shè)計 # # this button will generate a worm_gear this button will generate a worm_gear # # eleventhBut
35、ton 蝸桿參數(shù)化設(shè)計 # # this button will generate a worm this button will generate a worm # # twelthButton 正齒輪參數(shù)化設(shè)計 # # this button will generate a spur_gear this button will generate a spur_gear # # 在記事本編輯完以上資源后,保存為純文本格式(.txt),并且命名為Message。將Message.txt文件存放在Text\Release\text\chinese_cn目錄下 3
36、.1.2 編寫菜單操作源程序
圖3-3
新建項目,名稱standard
編寫完菜單信息資源文本后,還須使用Pro/TOOLKIT提供的菜單操作函數(shù)來實現(xiàn)每個菜單的功能,即編寫菜單項菜單的動作函數(shù)。
首先,必須列出VC程序?qū)⒂玫降南嚓P(guān)頭文件,如
#include"ProMenu.h"
#include"ProUtil.h"
#include"ProMenubar.h"
#include
37、 { } void drawHerringbone_gear() { } void drawshim() { } void drawbolt() { } void drawnut() { } void drawkey() { } void drawworm_gear() { } void drawworm() { } void drawnut_bolt() { } void drawbevel_gear() { } void drawspur_gear() { } CstandardApp::CstandardApp() {
38、 } CstandardApp theApp; BOOL CstandardApp::InitInstance() { CWinApp::InitInstance(); return TRUE; } static uiCmdAccessState AccessDefault(uiCmdAccessMode access_mode) { return (ACCESS_AVAILABLE); } 最后才編寫程序主體部分。 下面介紹說明菜單程序中用到的Pro/TOOLKIT函數(shù)。 user_initializ()函數(shù)是Pro/TOOLKIT應(yīng)用程序的初始化函數(shù),主要
39、用來對同步模式的Pro/TOOLKIT應(yīng)用程序進行初始化,任何同步模式的應(yīng)用程序要在Pro/ENGINEER系統(tǒng)中加載都必須包含該函數(shù)。其格式如程序所示。
user_terminate()函數(shù)在Pro/ENGINEER終止同步模式的Pro/TOOLKIT應(yīng)用程序時調(diào)用(如退出Pro/ENGINEER將終止應(yīng)用程序的運行),該函數(shù)由用戶定義,其中可以不執(zhí)行任何動作。
ProMenubarMenuAdd()函數(shù)的作用是向Pro/ENGINEER添加所需的菜單,包含頭文件為:#include
40、ERROR(0),否則返回PRO_TK_GENERAL_ERROR(-1)。函數(shù)如下: ProMenubarMenuAdd ("UserMenuBar", "UserMenu", "Utilities", PRO_B_TRUE, MsgFile) 其中"UserMenuBar"為菜單項名,作為調(diào)用其他菜單函數(shù)的輸入?yún)?shù);"UserMenu"為菜單標(biāo)簽名,即該菜單條的關(guān)鍵字。必須與信息文件該段的標(biāo)識關(guān)鍵字相同。"Utilities", PRO_B_TRUE表示該菜單加在“工具”菜單的右側(cè)。MsgFile為菜單信息文件名,這里定為"Message"。 ProMenubarmenuMenu
41、Add()函數(shù)的作用是向菜單添加下級子菜單。注意,在生成的下級子菜單中必須至少包含一項菜單項,否則將不顯示下級子菜單。該函數(shù)可以創(chuàng)建多層下級子菜單,只需用不同層次的菜單名標(biāo)識作為們菜單名即可。其函數(shù)如下: ProMenubarmenuMenuAdd("UserMenuBar","SubMenu1","SubMenu1",NULL,PRO_B_TRUE, MsgFile) "UserMenuBar"表示這個下級菜單是掛接在此菜單項名下。"SubMenu1"為菜單標(biāo)簽名,必須與信息文件中對應(yīng)標(biāo)識關(guān)鍵字相同。 ProMenubarmenuPushbuttonAdd()函數(shù)的作用是添加菜單按
42、鈕。其函數(shù)如下: ProMenubarmenuPushbuttonAdd("SubMenu1","PushButton1","PushButton1","Addinga push button to the ProE menu bar", NULL, PRO_B_TRUE, PushButton_cmd_id1, MsgFile) "SubMenu1"表示此菜單是菜單名為“SubMenu1”的下級子菜單,"PushButton1"是菜單標(biāo)簽名,與信息文件中對應(yīng)一致。"Adding a push button to the ProE menu bar"是提示信息,必須與信息文件中一致。 程
43、序中用到了菜單條、菜單條菜單、下級子菜單、菜單按鈕等。 將上面編輯的資源信息文件放入“Text\Release\text\chinese_cn”文件夾內(nèi)。 3.1.3 注冊運行 編寫調(diào)試完應(yīng)用程序后,將整個VC工程文件拷貝到工作目錄下,用記事本編寫注冊文件,并保存為“Protk.dat”。注冊文件內(nèi)容如圖4-9所示。 圖3-4注冊文件 這里的“.\”代表相對路徑方式,即起始目錄為Pro/ENGINEER的工作目錄。用相對路徑方式的優(yōu)點在于具有可移植性。即此二次開發(fā)程序只要存放在Pro/ENGINEER設(shè)置的工作目錄下,便能自動運行,而不要求用戶更改設(shè)置,大大地方便了用戶的使用
44、。圖4-9中各字段及其意義如表4-1所示。 表4-1注冊表字段及意義 字段名 意義 Name 外部程序標(biāo)識名,該標(biāo)識名不一定要與可執(zhí)行程序名相同 Exec_file 可執(zhí)行程序名(包括路徑) Text_dir 指定外部程序的text目錄樹的全路徑 Startup 這里取dll(動態(tài)連接庫) Allow_stop 如設(shè)為TRUE,在Pro/ENGINEER工作時可以終止應(yīng)用程序,如設(shè)為FALSE則不能終止應(yīng)用程序 Delay_start 若設(shè)為TRUE, Pro/ENGINEER在啟動時不調(diào)用Pro/TOOLKIT應(yīng)用程序,但可以手工啟動,若設(shè)為FALSE,則系
45、統(tǒng)將自動啟動。 Revision 指定Pro/TOOLKIT版本號 End 段結(jié)束標(biāo)志 注意,將DELAY_START字段內(nèi)容設(shè)為FALSE,這樣打開Pro/ENGINEER時使自動注冊運行該應(yīng)用程序。即啟動Pro/ENGINEER后,自定義菜單使自動掛接到Pro/ENGINEER菜單條上。不必再手動注冊和運行。這樣,所創(chuàng)建的“通用件庫”菜單便如同Pro/ENGINEER菜單欄中的一項菜單,即當(dāng)運行Pro/ENGINEER,“通用件庫”菜單項將自動連接上去。 第四章建立參數(shù)化模型庫 在使用CAD產(chǎn)品進行產(chǎn)品建模時,設(shè)計人員經(jīng)常要選用標(biāo)準(zhǔn)件或者選擇通用件。若每次設(shè)計人員都需要重新對
46、這些零件進行造型,設(shè)計人員必然要做許多重復(fù)性的勞動。本課題所建模型庫包括螺栓,螺釘,螺母,螺柱,鍵,墊片,正齒輪,渦輪,蝸桿,等下面以六角螺栓為例詳細說明,其他源程序見附錄 4.1國家標(biāo)準(zhǔn) 六角螺栓 GB5782-86 M5 M6 M8 M10 M12 M14 M16 M18 M20 M24 螺栓長度≤125時的螺紋長度L 16+2.00 18+2.50 22+3.00 26+3.50 30+4.00 34+4.50 38+4.50 42+5.00 46+5.00 54+5.00 螺栓長度≥125 - ≤200時 L 22+
47、2.00 24+2.50 28+3.00 32+3.50 36+4.00 40+4.50 44+4.50 48+5.00 52+5.00 60+5.00 螺栓長度>200時 L 45+3.50 49+4.00 53+4.50 57+4.50 61+5.00 65+5.00 73+5.00 <此項長度允許全螺紋制造L 25.00 30.00 35.00 40.00 45.00 50.00 55.00 65.00 65.00 70.00 搓絲坯 (6g級) D MAX 4.42 5.30 7.10 8.90 10.7
48、0 12.55 14.55 16.20 18.20 MIN 4.38 5.25 7.05 8.85 10.65 12.50 14.50 16.15 18.15 粗桿直徑 D3 MAX 5.00 6.00 8.00 10.00 12.00 14.00 16.00 18.00 20.00 24.00 MIN 4.82 5.82 7.78 9.78 11.73 13.73 15.73 17.73 19.67 23.67 六角對邊 S MAX 8.00 10.00 13.00 16.00 18.00 21
49、.00 24.00 27.00 30.00 36.00 MIN 7.78 9.78 12.73 15.73 17.73 20.67 23.67 26.67 29.67 35.38 頭部直徑 H MAX 3.65 4.15 5.45 6.58 7.68 8.98 10.18 11.72 12.72 15.22 MIN 3.35 3.85 5.15 6.22 7.32 8.62 9.82 11.28 12.28 14.78 墊圈直徑 D2 MIN 6.90 8.90 11.60 14.60 16.60 19
50、.60 22.50 25.30 28.20 33.60 4.2參數(shù)化建模 拉伸,如下圖 圖4-1 圖4-2 螺栓如上 關(guān)系如上圖4-3 設(shè)置參數(shù) 圖4-4 4.3對話框的設(shè)計 下面以六角螺栓為例介紹說明螺栓對話框的創(chuàng)建全過程。 1. 新建對話框 如圖4-1 圖4-5 點擊新建按鈕出現(xiàn)下圖4-2 圖4-6 右鍵單擊屬性彈出如圖對話框彈出4-7 圖4-7 更改對話框名稱為“螺栓參數(shù)化設(shè)計” 如下圖4-4 圖4-8 向?qū)υ捒蛑型先肟丶? 在dialog上右鍵,添加資源出現(xiàn)如下對話框4-9
51、 圖4-9 點擊導(dǎo)入圖片,整理對話框如下4-10 圖4-10 選中對話框單擊右鍵選擇“添加類”4-11 圖4-11 對話框添加完畢 2. 插入圖片 在資源視圖中右鍵,添加資源,導(dǎo)入圖片 如下圖所示 圖4-12 導(dǎo)入后的圖片都有唯一的圖片ID如下圖4-13 圖4-13 3. 完成對話框的設(shè)計 如圖4-8至4-12 螺釘參數(shù)化設(shè)計對話框4-8 螺栓參數(shù)化設(shè)計對話框4-9 鍵參數(shù)化設(shè)計4-10 雙頭螺柱參數(shù)化設(shè)計4-11 螺母參數(shù)化設(shè)計4-12 墊片
52、參數(shù)化設(shè)計4-13 4. 對話框的調(diào)用 先定義一個函數(shù) 當(dāng)點擊菜單時會觸發(fā)這個函數(shù) 這個函數(shù)的內(nèi)容是調(diào)用對應(yīng)的對話框 具體實現(xiàn)過程如下 名稱Cboltdlg,在standard.cpp中添加如下程序段 // standard.cpp : 定義DLL 的初始化例程。 #include "stdafx.h" #include "standard.h" #include "Beardlg.h" #include "shimdlg.h" #include "Protoolkit.h" #include "user_tk_error.h" #inc
53、lude "pro_wchar_t.h" #include "ProMdl.h" #include "ProMenu.h" #include "ProMenuBar.h" #include "ProMessage.h" #include "ProNotify.h" #include "ProObjects.h" #include "ProUtil.h" #include "ProUiCmd.h" #include "TestError.h" #include "boltdlg.h" #include "keydlg.h" #include "Herringbone_ge
54、ardlg.h" #include "shaftdlg.h" #include "bevel_geardlg.h" #include "nutdlg.h" #include "nut_boltdlg.h" #include "wormdlg.h" #include "worm_geardlg.h" #include "spur_gear.h" #include "doublescrew_boltdlg.h" //spur_gear.h忘了dlg后綴了注意!! #ifdef _DEBUG #define new DEBUG_NEW #endif // //TODO:
55、如果此DLL 相對于MFC DLL 是動態(tài)鏈接的, // 則從此DLL 導(dǎo)出的任何調(diào)入 // MFC 的函數(shù)必須將AFX_MANAGE_STATE 宏添加到 // 該函數(shù)的最前面。 // // 例如: // // extern "C" BOOL PASCAL EXPORT ExportedFunction() // { // AFX_MANAGE_STATE(AfxGetStaticModuleState()); // // 此處為普通函數(shù)體 // } // // 此宏先于任何MFC 調(diào)用 // 出現(xiàn)在每個函數(shù)中十分重要。這意味著 //
56、 它必須作為函數(shù)中的第一個語句 // 出現(xiàn),甚至先于所有對象變量聲明, // 這是因為它們的構(gòu)造函數(shù)可能生成MFC // DLL 調(diào)用。 // // 有關(guān)其他詳細信息, // 請參閱MFC 技術(shù)說明33 和58。 // CstandardApp BEGIN_MESSAGE_MAP(CstandardApp, CWinApp) END_MESSAGE_MAP() void drawdoublescrew_bolt() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cdoublescrew_boltd
57、lg dlg; dlg.DoModal(); } void drawshaft() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cshaftdlg dlg; dlg.DoModal(); } void drawHerringbone_gear() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CHerringbone_geardlg dlg; dlg.DoModal(); } void drawshim()
58、 { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cshimdlg dlg; dlg.DoModal(); } void drawbolt() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cboltdlg dlg; dlg.DoModal(); } void drawnut() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cnutdlg dlg;
59、dlg.DoModal(); } void drawkey() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Ckeydlg dlg; dlg.DoModal(); } void drawworm_gear() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cworm_geardlg dlg; dlg.DoModal(); } void drawworm() { AFX_MANAGE_STATE(AfxGetStati
60、cModuleState()); Cwormdlg dlg; dlg.DoModal(); } void drawnut_bolt() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cnut_boltdlg dlg; dlg.DoModal(); } void drawbevel_gear() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cbevel_geardlg dlg; dlg.DoMod
61、al(); } void drawspur_gear() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); Cspur_gear dlg; dlg.DoModal(); } // CstandardApp 構(gòu)造 CstandardApp::CstandardApp() { // TODO: 在此處添加構(gòu)造代碼, // 將所有重要的初始化放置在InitInstance 中 } // 唯一的一個CstandardApp 對象 CstandardApp theApp; // Cstandard
62、App 初始化 BOOL CstandardApp::InitInstance() { CWinApp::InitInstance(); return TRUE; } //定義菜單的可訪問性 static uiCmdAccessState AccessDefault(uiCmdAccessMode access_mode) { return (ACCESS_AVAILABLE); } //========================================= //函數(shù):user_initialize() //功能:用戶初始化函數(shù) //====
63、===================================== extern "C" int user_initialize() { ProError status; ProName msgfile; uiCmdCmdId cmd_id1, cmd_id2,cmd_id3,cmd_id4,cmd_id5,cmd_id6,cmd_id7,cmd_id8,cmd_id9,cmd_id10,cmd_id11,cmd_id12; //在Help菜單的左邊添加“標(biāo)準(zhǔn)件庫” //設(shè)置信息文件名稱 ProStringToWstring(msgfile,"stan
64、dard.txt"); //在菜單欄上help左側(cè)添加新菜單GearMenu status = ProMenubarMenuAdd("標(biāo)準(zhǔn)件庫菜單", "StandardPartLibDesign","Help", PRO_B_FALSE, msgfile); //主菜單 //在菜單欄 ProMenubarmenuMenuAdd("標(biāo)準(zhǔn)件庫菜單","SubMenu1","SubMenu1",NULL,PRO_B_TRUE,msgfile); ProMenubarmenuMenuAdd("標(biāo)準(zhǔn)件庫菜單","SubMenu2","SubMenu2",NU
65、LL,PRO_B_TRUE,msgfile); ProMenubarmenuMenuAdd("SubMenu1","SubMenu3","SubMenu3",NULL,PRO_B_TRUE,msgfile); //設(shè)置按鈕命令 ProCmdActionAdd("命令一",(uiCmdCmdActFn)drawdoublescrew_bolt,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id1); ProCmdActionAdd("命令二",(uiCmdCmdActFn)drawshim,uiC
66、mdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id2); ProCmdActionAdd("命令三",(uiCmdCmdActFn)drawbolt,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id3); ProCmdActionAdd("命令四",(uiCmdCmdActFn)drawnut,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id4); ProCmdActionAdd("命令五",(uiCmdCmdActFn)drawkey,uiCmdPrioDefault,AccessDefault,PRO_B_TRUE,PRO_B_TRUE,&cmd_id5); ProCmdActionAdd("命令六",(uiCmdCmdActFn)drawnut_bolt,uiCmdPrioDefault,AccessDefault,PRO_B
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。