基于ProE二次開(kāi)發(fā)的端蓋參數(shù)化模型的實(shí)現(xiàn)
基于ProE二次開(kāi)發(fā)的端蓋參數(shù)化模型的實(shí)現(xiàn),基于,proe,二次開(kāi)發(fā),參數(shù),模型,實(shí)現(xiàn)
湘潭大學(xué)畢業(yè)設(shè)計(jì)目錄第一章 緒 論11.1 三維CAD技術(shù)11.1.1CAD技術(shù)的發(fā)展11.2 課題背景及意義21.3 應(yīng)用程序的開(kāi)發(fā)工具31.4 課題的主要研究?jī)?nèi)容3第二章 Pro/TOOLKIT二次開(kāi)發(fā)的基礎(chǔ)理論32.1 Pro/TOOLKIT的基本知識(shí)32.1.1 Pro/TOOLKIT簡(jiǎn)介32.1.2 Pro/TOOLKIT的工作模式42.1.3 Pro/TOOLKIT對(duì)象和動(dòng)作42.1.4 對(duì)象句柄42.1.5 Pro/TOOLKIT函數(shù)返回值52.2 創(chuàng)建Pro/TOOLKIT應(yīng)用程序的基本方法52.3 Pro/TOOLKIT信息文件的建立62.4 編譯和連接設(shè)置72.5 編制注冊(cè)文件及應(yīng)用程序的運(yùn)行72.5.1 編制注冊(cè)文件72.5.2 應(yīng)用程序的運(yùn)行7第三章 用戶(hù)界面設(shè)計(jì)83.1 菜單的設(shè)計(jì)83.1.1 向菜單欄添加菜單條83.1.2 向菜單條下添加下級(jí)子菜單83.1.3 端蓋菜單設(shè)計(jì)83.2 對(duì)話框的設(shè)計(jì)123.2.1 MFC對(duì)話框123.2.2 UI對(duì)話框123.3 端蓋對(duì)話框設(shè)計(jì)143.3.1 構(gòu)想143.3.2 創(chuàng)建方法14第四章 端蓋的開(kāi)發(fā)244.1 總體方案244.2 基于三維模型的參數(shù)化程序設(shè)計(jì)分析254.2.1 端蓋三維模型的建立254.2.2 端蓋參數(shù)化程序設(shè)計(jì)304.3 注冊(cè)并運(yùn)行程序364.4 操作流程36第五章 零件圖形清單37結(jié)束語(yǔ)41參考文獻(xiàn)42附錄I 程序清單43附錄 外文文獻(xiàn)翻譯44附錄 外文文獻(xiàn)原文51基于Pro/E二次開(kāi)發(fā)的端蓋參數(shù)化模型的實(shí)現(xiàn)摘 要:CAD技術(shù)在機(jī)械設(shè)計(jì)中發(fā)揮著越來(lái)越突出的作用。而三維實(shí)體模型比二維圖形能更直觀、更全面地反映設(shè)計(jì)意圖,并且在三維模型的基礎(chǔ)上可以進(jìn)行零件裝配、干涉檢查、有限元分析、運(yùn)動(dòng)分析等高級(jí)的計(jì)算機(jī)輔設(shè)計(jì)工作,因此目前機(jī)械設(shè)計(jì)中廣泛采用三維設(shè)計(jì)。而目前我國(guó)Pro/E應(yīng)用日益普及,而二次開(kāi)發(fā)嚴(yán)重滯后。所以,進(jìn)行二次開(kāi)發(fā)是非常必要的。論文介紹了其二次開(kāi)發(fā)工具Pro/TOOLKIT,并以凸緣端蓋為例,詳細(xì)的論述了應(yīng)用ProToolkit進(jìn)行菜單開(kāi)發(fā)、對(duì)話框開(kāi)發(fā),即UI對(duì)話框,以及如何在VC環(huán)境下編制C語(yǔ)言程序以激活、調(diào)用對(duì)話框界面,設(shè)計(jì)出更加友好透明的用戶(hù)界面,方便快捷地實(shí)現(xiàn)端蓋的參數(shù)化設(shè)計(jì)和修改,準(zhǔn)確再生出新的實(shí)體模型。關(guān)鍵詞:ProENGINEER、Visual C+、Pro/TOOLKIT、二次開(kāi)發(fā)、端蓋The Realization of Cover Parametric Parts Based on the Redevelopment of Pro/EAbstract:CAD technology is made more and more use in mechanical designDesign idea can be expressed more visualized and more comprehensive in three-dimensional full-scale mock-up than in two-dimensional drawing ,and based on three dimensional fullscale mock up,many other advanced CAD such as component assembly,interference check,finite element analysis,motion analysis and so on can be proceedHence,threedimensional design is widely used in mechanical design However,at the present the application development severely lags behind the increasing popularization of the Pro/E application in our country .So, it is very necessary to develop the Pro/E application.This paper introduces the customization tool Pro/TOOLKIT, and taking cover flange for example, This article provides an example to introduce the technique how to design UI Dialog Boxes By way of Pro/Es secondary development tool Pro/TOOLKIT as well as compile c programs to activate and pick up UI dialog boxes in Visual C+. Taking Pro/Toolkit as development tool, a friendly design interface of Cover is established. This paper investigates the method of establishing parametric 3 D model and programming based on 3D model in Pro/E,auto-modeling of 3D parts is realized using Pro/Toolkit.Keywords:ProENGINEER、Visual C+、Pro/TOOLKIT 、secondary development第一章 緒 論1.1 三維CAD技術(shù)設(shè)計(jì)和生產(chǎn)的方法隨著計(jì)算機(jī)的迅速發(fā)展每天都在發(fā)生著顯著的變化。以前許多只能靠手工完成的作業(yè),逐漸通過(guò)計(jì)算機(jī)實(shí)現(xiàn)了高效化和高精度化。這種利用計(jì)算機(jī)來(lái)達(dá)到高效化、高精度化,實(shí)現(xiàn)自動(dòng)化設(shè)計(jì)、生產(chǎn)以及解析計(jì)算的方法稱(chēng)為CAD(Computer Aided Design,計(jì)算機(jī)輔助設(shè)計(jì))。CAD是指利用計(jì)算機(jī)的硬件和軟件進(jìn)行的設(shè)計(jì)活動(dòng),它從根本上改變了過(guò)去的手工繪圖、發(fā)圖、憑圖紙組織整個(gè)生產(chǎn)過(guò)程的技術(shù)管理方式,使之變?yōu)橐越y(tǒng)一的產(chǎn)品數(shù)據(jù)庫(kù)為核心的交互式產(chǎn)品設(shè)計(jì)、分析、制造和維護(hù)的過(guò)程。它的迅速發(fā)展和廣泛應(yīng)用,給工程設(shè)計(jì)制造業(yè)帶來(lái)了蓬勃生機(jī),使傳統(tǒng)的產(chǎn)品設(shè)計(jì)方法與生產(chǎn)組織模式發(fā)生了深刻的變革。1.1.1CAD技術(shù)的發(fā)展CAD技術(shù)起步于50年代后期,自從計(jì)算機(jī)出現(xiàn)之后人們就不斷地將計(jì)算機(jī)技術(shù)引入機(jī)械設(shè)計(jì)、制造領(lǐng)域。因?yàn)樗槕?yīng)生產(chǎn)力的發(fā)展,在其產(chǎn)生之后就得到了迅速地發(fā)展。CAD技術(shù)經(jīng)歷了四次飛躍:曲面造型系統(tǒng)、實(shí)體造型技術(shù)、參數(shù)化技術(shù)、變量化技術(shù)。(1)曲面造型系統(tǒng)70年代是飛機(jī)和汽車(chē)工業(yè)的蓬勃發(fā)展時(shí)期。期間飛機(jī)及汽車(chē)的制造中遇到了大量的自由曲面問(wèn)題,此時(shí)法國(guó)人提出了貝賽爾算法,法國(guó)的達(dá)索飛機(jī)制造公司的開(kāi)發(fā)者們借此算法在二維繪圖系統(tǒng)的基礎(chǔ)上,開(kāi)發(fā)出以表面模型為特點(diǎn)的自由曲面建模方法,推出了三維曲面造型系統(tǒng)CATIA。(2)實(shí)體造型技術(shù)表面模型基本上解決CAM的問(wèn)題,但是由于表面模型技術(shù)只能表達(dá)形體的表面信息,很難準(zhǔn)確地表達(dá)如質(zhì)量、重心、慣性矩等零件的其他特性?;趯?duì)CAD一體化技術(shù)發(fā)展的探索,SDRC公司于1979年發(fā)布了世界上第一個(gè)完全基于實(shí)體造型技術(shù)的大型CAD軟件I-DEAS。實(shí)體造型技術(shù)能夠精確表達(dá)零件的全部屬性,給設(shè)計(jì)帶來(lái)了很大的方便。(3)參數(shù)化技術(shù)正當(dāng)實(shí)體造型技術(shù)在CAD系統(tǒng)中廣泛運(yùn)用時(shí),出現(xiàn)了一種比無(wú)約束自由造型更好的算法參數(shù)化實(shí)體造型方法。它主要的特點(diǎn)是:基于特征、全尺寸約束、全數(shù)據(jù)相關(guān)、尺寸驅(qū)動(dòng)設(shè)計(jì)修改。參數(shù)化技術(shù)徹底克服了自由緘默的無(wú)約束狀態(tài),由尺寸決定實(shí)體造型的幾何形狀。尺寸驅(qū)動(dòng)已經(jīng)成為當(dāng)今造型系統(tǒng)的基本功能。如果想修改零件形狀的話,只需修改一下尺寸的數(shù)值就可以實(shí)現(xiàn)形狀上的改變。這種新構(gòu)想最先在PTC公司(Parametric Technology Corp)的軟件PRO/ENGINEER中成為現(xiàn)實(shí)。由于參數(shù)化技術(shù)的成功應(yīng)用,使得它很快成為CAD業(yè)界的標(biāo)準(zhǔn),許多軟件廠商紛紛追趕。(4) 變量化技術(shù)變量化造型技術(shù)保留了參數(shù)化技術(shù)基于特征、全數(shù)據(jù)相關(guān)、尺寸驅(qū)動(dòng)設(shè)計(jì)修改的優(yōu)點(diǎn),但是在約束定義方面做了一定的改變。變量化造型技術(shù)將所需定義的尺寸“參數(shù)”進(jìn)一步區(qū)分為形狀約束和尺寸約束,而不僅僅是用尺寸來(lái)約束全部幾何。通常在新產(chǎn)品開(kāi)發(fā)的概念設(shè)計(jì)階段,設(shè)計(jì)者首先考慮的是設(shè)計(jì)思想及概念,并將其體現(xiàn)在某些幾何形狀之中。但是這些幾何形狀的嚴(yán)格的尺寸定位關(guān)系并不能在設(shè)計(jì)的初始階段完全確定,所以希望在初始階段能夠允許欠尺寸約束的存在。事實(shí)上,參數(shù)化技術(shù)和變量化技術(shù)已經(jīng)成為了當(dāng)今主流CAD軟件的兩大流派。兩種造型理論相互依存,共同發(fā)展。我國(guó) CAD 技術(shù)的引進(jìn)是從60年代開(kāi)始的,最早起步于航空工業(yè),最近幾年發(fā)展很快,現(xiàn)已在機(jī)械、電子、建筑、汽車(chē)、服裝等行業(yè)逐步進(jìn)入實(shí)用階段。1.2 課題背景及意義Pro /ENGINEER是美國(guó)PTC(Parametric Technology Corporation)公司于1988年開(kāi)發(fā)的參數(shù)化設(shè)計(jì)系統(tǒng),是一套由設(shè)計(jì)至生產(chǎn)的機(jī)械自動(dòng)化軟件。參數(shù)化設(shè)計(jì)就是將零件尺寸的設(shè)計(jì)用參數(shù)來(lái)描述,并在設(shè)計(jì)修改時(shí)通過(guò)修改參數(shù)的數(shù)值來(lái)更改零件的外形。Pro/ENGINEER與傳統(tǒng)的CAD系統(tǒng)僅提供繪圖工具有著極大的不同,它提供了一套完整的機(jī)械產(chǎn)品解決方案,包括機(jī)械設(shè)計(jì)、板金設(shè)計(jì)、加工制造、機(jī)構(gòu)分析、有限元分析等,它使產(chǎn)品的設(shè)計(jì)效率大大提高,使產(chǎn)品在設(shè)計(jì)初期具有更多的靈活性,保證在日后根據(jù)系統(tǒng)要求進(jìn)行相應(yīng)的更改和計(jì)算;另外在產(chǎn)品的設(shè)計(jì)方案階段,可以形象的表現(xiàn)系統(tǒng)的組成特點(diǎn),而在產(chǎn)品的生產(chǎn)階段可以方便與加工中心數(shù)據(jù)連接。Pro/ENGINEER的特性如下:3D實(shí)體模型,單一數(shù)據(jù)庫(kù),以特征作為設(shè)計(jì)的單位, 參數(shù)式設(shè)計(jì),數(shù)據(jù)管理(Data Management),裝配管理(Assemble Management),工程數(shù)據(jù)庫(kù)再利用(Engineering Data Reuse),易用性(Ease of Use),硬件獨(dú)立性(Hardware Independence)。由于Pro/ENGINEER的功能強(qiáng)大并且通用性非常強(qiáng),然而,由于Pro/ENGINEER軟件的通用性,使得該軟件在進(jìn)行具體的產(chǎn)品設(shè)計(jì)時(shí)感到不方便。對(duì)系列化產(chǎn)品,可以通過(guò)抽取關(guān)鍵的參數(shù)值,再依設(shè)計(jì)規(guī)范計(jì)算出各尺寸值并傳遞給下級(jí)零件和子裝配,自動(dòng)的將模型建造出來(lái)。為了使Pro/ENGINEER軟件能在特定的企業(yè)單位的特定產(chǎn)品設(shè)計(jì)中最大限度的發(fā)揮潛力,創(chuàng)造效益,需Pro/ENGINEER進(jìn)行二次開(kāi)發(fā),換句話說(shuō),二次開(kāi)發(fā)就是對(duì)Pro/ENGINEER進(jìn)一步的充實(shí)、完善。基于上述原因,利用Pro/TOOLKIT工具箱及VC+開(kāi)發(fā)操作簡(jiǎn)單的端蓋是很有必要。1.3 應(yīng)用程序的開(kāi)發(fā)工具系統(tǒng)程序模塊的設(shè)計(jì)選擇Visual C+6.0作為開(kāi)發(fā)平臺(tái)。Visual C+6.0是運(yùn)行于Windows上的交互式可視化集成開(kāi)發(fā)環(huán)境,是美國(guó)Microsoft Visual Studio的一部分。像其它的可視化開(kāi)發(fā)環(huán)境一樣,Visual C+6.0集程序的代碼編輯編譯連接調(diào)試于一體,給編程人員提供了一個(gè)完整而又方便的開(kāi)發(fā)界面和許多有效的輔助開(kāi)發(fā)工具。VC+6.0的應(yīng)用程序向?qū)Вˋpp Wizard)可以為很大一部分類(lèi)型的程序提供框架代碼,用戶(hù)不需要書(shū)寫(xiě)代碼,只需要幾個(gè)按鈕就可以生成一個(gè)完整的可以運(yùn)行的程序。在Pro/TOOLKIT中,PTC向用戶(hù)提供了大量的C語(yǔ)言函數(shù)庫(kù),函數(shù)采用面向?qū)ο蟮娘L(fēng)格。通過(guò)調(diào)用這些底層函數(shù),用戶(hù)能方便而又安全地訪問(wèn)Pro/ENGINEER的數(shù)據(jù)庫(kù)及內(nèi)部應(yīng)用程序,進(jìn)行二次開(kāi)發(fā),擴(kuò)展一些特定功能。1.4 課題的主要研究?jī)?nèi)容本課題的主要研究?jī)?nèi)容是端蓋的開(kāi)發(fā)設(shè)計(jì),當(dāng)用戶(hù)選擇不同的樣式后,應(yīng)用程序可以在基礎(chǔ)模型上自動(dòng)生成相應(yīng)的端蓋。具體工作包括:(1)Pro/TOOLKIT基本特點(diǎn)和基本數(shù)據(jù)結(jié)構(gòu)的研究。分析Pro/TOOLKIT內(nèi)部的基本數(shù)據(jù)結(jié)構(gòu)、功能函數(shù)及其使用方法;探討Pro/TOOLKIT中的一些基本的自定義對(duì)象。(2)用戶(hù)界面的設(shè)計(jì)。研究菜單信息文件,制作端蓋的菜單界面;研究對(duì)話框資源文件,創(chuàng)建主對(duì)話框,并在主對(duì)話框中彈出一個(gè)自定義對(duì)話框;研究Pro/TOOLKIT與Visual C+6.0的接口技術(shù);在VC中制作Pro/TOOLKIT用戶(hù)界面。(3)參數(shù)化建模的研究。Pro/ENGINEER軟件對(duì)于每個(gè)模型都有一個(gè)主要設(shè)計(jì)步驟和參數(shù)列表,所以要先繪制三維模型,定出參數(shù)列表;設(shè)計(jì)端蓋程序,實(shí)現(xiàn)自動(dòng)加載菜單、選擇不同的端蓋、彈出對(duì)話框、修改端蓋模型參數(shù)值、生成零件等功能。第二章 Pro/TOOLKIT二次開(kāi)發(fā)的基礎(chǔ)理論2.1 Pro/TOOLKIT的基本知識(shí)2.1.1 Pro/TOOLKIT簡(jiǎn)介Pro/TOOLKIT是PTC公司為Pro/ENGINEER軟件提供的用戶(hù)化開(kāi)發(fā)工具箱,該工具箱為用戶(hù)程序及第三方程序提供了與Pro/ENGINEER的無(wú)縫連接。用戶(hù)程序或第三方的程序是用C語(yǔ)言編寫(xiě)的。Pro/TOOLKIT提供了一個(gè)C語(yǔ)言的函數(shù)庫(kù),該函數(shù)庫(kù)能夠使用戶(hù)或第三方的應(yīng)用程序以一種可控的、安全的方式訪問(wèn)Pro/ENGINEER的數(shù)據(jù)庫(kù)和應(yīng)用程序。用戶(hù)或第三方通過(guò)C程序代碼擴(kuò)充Pro/ENGINEER系統(tǒng)的功能,開(kāi)發(fā)基于Pro/ENGINEER系統(tǒng)的應(yīng)用程序模塊,從而滿(mǎn)足用戶(hù)的特殊要求。Pro/TOOLKIT采用的是功能強(qiáng)大的面向?qū)ο蟮姆绞絹?lái)編寫(xiě)的。因此,用來(lái)在Pro/ENGINEER和應(yīng)用程序之間傳遞信息的數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)用程序來(lái)講是不可見(jiàn)的,而只能通過(guò)Pro/TOOLKIT中的函數(shù)來(lái)訪問(wèn)。Pro/Toolkit支持在windows2000NT/XP操作系統(tǒng)中使用C和C+語(yǔ)言設(shè)計(jì)程序,采用Microsoft Visual C+6.0的集成環(huán)境下完成程序的設(shè)計(jì)、調(diào)試和編譯。2.1.2 Pro/TOOLKIT的工作模式Pro/TOOLKIT有兩種工作模式,即同步模式和異步模式。同步模式分為兩種模式,一種是標(biāo)準(zhǔn)的使用模式,即DLL模式。Pro/TOOLKIT應(yīng)用程序與Pro/ENGINEER的集成是通過(guò)DLL模式來(lái)實(shí)現(xiàn)的,在DLL模式中,通過(guò)編譯和連接Pro/TOOLKIT的C代碼生成一個(gè)目標(biāo)文件,該目標(biāo)文件在Pro/ENGINEER啟動(dòng)時(shí)與Pro/ENGINEER連接在一起,就像是Pro/ENGINEER本身的程序一樣;Pro/TOOLKIT應(yīng)用程序和Pro/ENGINEER之間的信息交換是直接通過(guò)函數(shù)調(diào)用來(lái)實(shí)現(xiàn)的。另一種模式是多進(jìn)程模式。異步模式分為簡(jiǎn)單異步模式和全異步模式。本課題通過(guò)菜單對(duì)話框向Pro/ENGINEER發(fā)送消息,采用同步DLL模式。2.1.3 Pro/TOOLKIT對(duì)象和動(dòng)作Pro/TOOLKIT采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法。對(duì)象 ( Object)和動(dòng)作(Action)是Pro/TOOLKIT中最基本的概念。Pro /T OO LKIT的對(duì)象實(shí)質(zhì)上是一種類(lèi)型為結(jié)構(gòu)體的數(shù)據(jù),結(jié)構(gòu)體中的成員描述了該對(duì)象的屬性。所有對(duì)象的命名約定為Pro+,其中對(duì)象名用英文單詞表示,第一個(gè)字母大寫(xiě),如ProFeature(特征對(duì)象)。Pro/TOOLKIT對(duì)象執(zhí)行的某種特定操作稱(chēng)為動(dòng)作,動(dòng)作的執(zhí)行是通過(guò)調(diào)用Pro/TOOLKIT函數(shù)庫(kù)提供的C函數(shù)來(lái)實(shí)現(xiàn)了。與動(dòng)作相關(guān)的Pro/TOOLKIT函數(shù)名約定為:Pro+。特別要注意的是Pro/TOOLKIT函數(shù)的參數(shù)規(guī)則,規(guī)定為:ProFunction(參數(shù)1、參數(shù)2、參數(shù)3),其中第一個(gè)參數(shù)用來(lái)識(shí)別對(duì)象(通常為ID值),輸入?yún)?shù)在輸出參數(shù)之前。2.1.4 對(duì)象句柄每個(gè)Pro/TOOLKIT對(duì)象都對(duì)應(yīng)于一個(gè)結(jié)構(gòu)體,定義該結(jié)構(gòu)類(lèi)型的一個(gè)具體的結(jié)構(gòu)體變量稱(chēng)之對(duì)象句柄。按照對(duì)象句柄的定義和使用方式分成兩種類(lèi)型:Ohandle(Opaque Handle,非透明句柄)和DHandle(Database Handle,數(shù)據(jù)結(jié)構(gòu)句柄)。非透明句柄(Opaque Handle)是使用Pro/ENGINEER數(shù)據(jù)結(jié)構(gòu)的內(nèi)存地址引用Pro/ENGINEER對(duì)象,這種方式最簡(jiǎn)單。使用非透明句柄Pro/TOOLKIT應(yīng)用程序只能獲得該對(duì)象的內(nèi)存地址,不能訪問(wèn)該結(jié)構(gòu)體具體成員,其目的是防止PIDITOOLKIT應(yīng)用程序訪問(wèn)結(jié)構(gòu)體中的成員。其特點(diǎn)是使用簡(jiǎn)單高效,缺點(diǎn)是由于它是一個(gè)內(nèi)存指針,所以具有可變性。數(shù)據(jù)結(jié)構(gòu)句柄(DatabaseH andle)則可訪問(wèn)該對(duì)象結(jié)構(gòu)體的具體成員。數(shù)據(jù)結(jié)構(gòu)句柄是一個(gè)十分清晰的數(shù)據(jù)結(jié)構(gòu),它包含了足夠的信息 包括類(lèi)型、整型標(biāo)識(shí)符和指向所屬模型的句柄,由于數(shù)據(jù)結(jié)構(gòu)句柄至少包含一個(gè)整型標(biāo)識(shí),所以它具有穩(wěn)定不變的優(yōu)點(diǎn)。當(dāng)利用Pro/TOOLKIT在Pro/ENGINEER中創(chuàng)建一個(gè)包含很多信息的對(duì)象時(shí),非常重要的一點(diǎn)就是必須先建立該對(duì)象的所有相關(guān)信息,然后把這個(gè)對(duì)象添加到Pro/ENGINEER數(shù)據(jù)庫(kù)中去。然而采用面向?qū)ο蠹夹g(shù)的Pro/TOOLKIT不允許直接訪問(wèn)這些結(jié)構(gòu)的內(nèi)容。2.1.5 Pro/TOOLKIT函數(shù)返回值大多數(shù)Pro/TOOLKIT函數(shù)的返回值類(lèi)型為ProError,用來(lái)表示調(diào)用函數(shù)執(zhí)行狀態(tài)。最常用返回值是PRO_TK_NO_ERROR,表示函數(shù)調(diào)用成功。在程序中,通過(guò)檢查函數(shù)的返回值不僅便于在調(diào)試是找出錯(cuò)誤,更重要的是可以避免在執(zhí)行時(shí)出現(xiàn)異常情況,提高了程序的可靠性。2.2 創(chuàng)建Pro/TOOLKIT應(yīng)用程序的基本方法創(chuàng)建基本方法;利用Make文件創(chuàng)建Pro/TOOLKIT應(yīng)用程序;利用VC向?qū)?chuàng)建Pro/TOOLKIT應(yīng)用程序。采用Make文件的方法創(chuàng)建Pro/TOOLKIT應(yīng)用程序必須手工修改make文件,程序的設(shè)置與調(diào)試均不方便,且不能充分利用VC的資源。所以本課題利用VC向?qū)?chuàng)建Pro/TOOLKIT應(yīng)用程序。在Visual C+6.0環(huán)境下新建一個(gè)dll工程。(1)進(jìn)入Visual C+6.0集成開(kāi)發(fā)環(huán)境,選擇“File/New.”選項(xiàng),啟動(dòng) “New”對(duì)話框。在“New”對(duì)話框中選擇“Projects”選項(xiàng)卡,選擇MFC AppWizard(dll)項(xiàng)。在“Project nam”輸入工程文件名,在“Location”輸入框中輸入路徑。單擊OK按鈕。(2)在“MFC AppWizard”對(duì)話框中選擇“Regular DLL using shared MFC DLL”單選框,使Pro/TOOLKIT應(yīng)用程序使用共享的MFC。單擊Finish按鈕,進(jìn)入New Project Information窗口后,單擊OK按鈕,完成工程文件框架的建立。(3)選擇FileView打開(kāi)VC應(yīng)用程序向?qū)ё詣?dòng)生成程序文件.VC應(yīng)用程序設(shè)計(jì)向?qū)г贔ileView中自動(dòng)加入了ReadMe.txt、StdAfx.cpp和以工程文件名為前綴的cpp資源文件、def模塊定義文件以及rc資源文件等。如下圖2.1:圖2.1 VC文件圖2.3 Pro/TOOLKIT信息文件的建立信息文件是一種ASCII碼文件,用來(lái)定義菜單項(xiàng)、菜單項(xiàng)提示等信息,可以用Word記事本和寫(xiě)字板等文字處理軟件建立,也可在VC的集成開(kāi)發(fā)環(huán)境中建立,但必須以純文本格式保存且信息文件以四行為一組。其含義分別如下:第一行:Pro/ENGINEER系統(tǒng)可以識(shí)別的關(guān)鍵字,該關(guān)鍵字必須與該信息文件函數(shù)中的相關(guān)字符串相同。第二行:再菜單項(xiàng)或菜單項(xiàng)提示上顯示的英語(yǔ)文本。第三行:另一種語(yǔ)言的譯文或?yàn)榭铡5谒男校寒?dāng)前的Pro/ENGINEER版本為空。其中,第二第四行的語(yǔ)言顯示取決于系統(tǒng)環(huán)境變量lang的設(shè)置。同時(shí),信息文件必須位于text或text文件夾,為chinese-cn時(shí)表示信息為中文,為usascii表示信息為英語(yǔ)。由此,可以通過(guò)系統(tǒng)的環(huán)境變量控制顯示的語(yǔ)種,不必修改程序。2.4 編譯和連接設(shè)置設(shè)置包含文件路徑,加入“PROTOOLKITINCLUDES”;設(shè)置庫(kù)文件路徑,加入“PROTOOLKITI486_NTOBJ”;設(shè)置連接所需庫(kù)文件,加入“mpr.lib protk_dll.lib”兩庫(kù)文件;在菜單“Project/Settings”的“Link”選項(xiàng)頁(yè)設(shè)定強(qiáng)制文件輸出,即選中“Force file output”的復(fù)選項(xiàng)。2.5 編制注冊(cè)文件及應(yīng)用程序的運(yùn)行2.5.1 編制注冊(cè)文件在Pro/ENGINEER中運(yùn)行Pro/TOOLKIT應(yīng)用程序,必須先進(jìn)行注冊(cè)。注冊(cè)文件的作用是向Pro/ENGINEER系統(tǒng)傳遞應(yīng)用程序的信息。一般可只選擇Name EXEC_FILE TEXT_DIR STARTUP ALLOW_STOP REVISION和END項(xiàng)即可。保存注冊(cè)文件時(shí),要以.dat為擴(kuò)展名。建立端蓋的注冊(cè)文件如圖2.2:圖2.2 端蓋注冊(cè)文件圖2.5.2 應(yīng)用程序的運(yùn)行1注冊(cè)運(yùn)行分為自動(dòng)注冊(cè)和手動(dòng)注冊(cè)。端蓋采用自動(dòng)注冊(cè),并將注冊(cè)文件名取為“Protk.dat”將此文件位于Pro/ENGINEER的起始位置設(shè)定的目錄。其注冊(cè)文件設(shè)置DELAY_START的值為FALSE,應(yīng)用程序自動(dòng)運(yùn)行。2卸載應(yīng)用程序。將注冊(cè)文件中ALLOW_STOP設(shè)為T(mén)RUE,可以手工終止運(yùn)行。如果啟動(dòng)應(yīng)用程序失敗,可以選擇信息按鈕來(lái)顯示應(yīng)用程序的有關(guān)注冊(cè)信息,以便找出錯(cuò)的原因。第三章 用戶(hù)界面設(shè)計(jì)Pro/ENGINEER可以利用Pro/TOOLKIT提供的菜單UI對(duì)話框以及VC的可視化界面技術(shù),設(shè)計(jì)出方便實(shí)用的人機(jī)交互界面,從而大大提高系統(tǒng)的使用效率。在設(shè)計(jì)人機(jī)交互界面時(shí),要盡量能使操作自然簡(jiǎn)便快捷。3.1 菜單的設(shè)計(jì)菜單是Pro/ENGINEER的主要用戶(hù)界面,Pro/TOOLKIT提供了一系列菜單操作函數(shù),允許應(yīng)用程序創(chuàng)建何管理菜單。在應(yīng)用Pro/TOOLKIT對(duì)Pro/ENGINEER進(jìn)行開(kāi)發(fā)的過(guò)程中,添加用戶(hù)自定義菜單是最常用的技術(shù)。菜單在Pro/ENGINEER界面上的生成代表著動(dòng)態(tài)鏈接庫(kù)加載成功,這是進(jìn)行后續(xù)工作的基礎(chǔ)。3.1.1 向菜單欄添加菜單條Pro/ENGINEER是一個(gè)不斷發(fā)展不斷更新的軟件,某個(gè)版本下有的菜單在另外一個(gè)版本下可能沒(méi)有,因此,如果用戶(hù)自定義菜單依賴(lài)某個(gè)菜單條,很有可能在另外一個(gè)版本中就不能正常使用。這樣只能修改應(yīng)用程序來(lái)適應(yīng)這種變化,其軟件的通用性較差。因此,決定在Pro/ENGINEER界面上添加新的菜單條。菜單條是Pro/ENGINEER菜單體系的最頂層菜單,其創(chuàng)建的方法是:直接調(diào)用ProMenubarMenuAdd()函數(shù)向Pro/ENGINEER添加所需的菜單,要實(shí)現(xiàn)函數(shù)的功能,就必須將改按鈕和命令捆綁在一起。該命令調(diào)用某個(gè)函數(shù)實(shí)現(xiàn)按鈕功能,在Pro/TOOLKIT中,完成命令添加的函數(shù)是ProCmdAction(),函數(shù)調(diào)用成功返回PRO_TK_NO_ERROR(0),否則返回PRO_TK_GENERAL_ERROR(-1)。3.1.2 向菜單條下添加下級(jí)子菜單端蓋分為嵌入悶蓋、嵌入透蓋、凸緣悶、凸緣透蓋,不可能每個(gè)都建立一個(gè)菜單條。因此必須添加下級(jí)菜單以達(dá)到建立一個(gè)自然便捷的界面的目的。調(diào)用ProMenubarmenuMenuAdd()函數(shù),并在此菜單下添加菜單項(xiàng)。3.1.3 端蓋菜單設(shè)計(jì)在旁邊插入一個(gè)菜單條(UserMenu) “Pro/e二次開(kāi)發(fā)(&E)”,在其下添加一個(gè)下級(jí)子菜單(SubMenu )“端蓋”。在子菜單下建立四個(gè)菜單按鈕:PushButton1嵌入悶蓋,PushButton2嵌入透蓋,PushButton3凸緣悶蓋,PushButton4凸緣透蓋。建立的程序清單如下:/*=*FUNCTION: user_initialize()*=*/extern C int user_initialize()ProError status;ProFileName MsgFile;uiCmdCmdId PushButton_cmd_id1,PushButton_cmd_id2,PushButton_cmd_id3,PushButton_cmd_id4;ProStringToWstring(MsgFile, Message.txt);/設(shè)置菜單信息文件名/*=*添加菜單條*=*/status=ProMenubarMenuAdd (UserMenuBar, UserMenu,Utilities, PRO_B_TRUE, MsgFile);/*=*菜單條的下級(jí)子菜單設(shè)置*=*/添加下級(jí)子菜單項(xiàng)ProMenubarmenuMenuAdd(UserMenuBar, SubMenu, SubMenu, NULL, PRO_B_TRUE, MsgFile); /設(shè)置菜單按鈕的動(dòng)作函數(shù)ProCmdActionAdd(PushButtonAct1,(uiCmdCmdActFn)Duangai1Fn,uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id1);/添加菜單按鈕ProMenubarmenuPushbuttonAdd(SubMenu, PushButton1, PushButton1,Adding a push button to the ProE menu bar, NULL,PRO_B_TRUE, PushButton_cmd_id1, MsgFile);/設(shè)置菜單按鈕的動(dòng)作函數(shù)ProCmdActionAdd(PushButtonAct2,(uiCmdCmdActFn)Duangai2Fn,uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id2);/添加菜單按鈕ProMenubarmenuPushbuttonAdd(SubMenu,PushButton2,PushButton2,Adding another push button to the ProE menu bar,NULL,PRO_B_TRUE, PushButton_cmd_id2, MsgFile);/設(shè)置菜單按鈕的動(dòng)作函數(shù)ProCmdActionAdd(PushButtonAct3,(uiCmdCmdActFn)Duangai3Fn,uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id3);/添加菜單按鈕ProMenubarmenuPushbuttonAdd(SubMenu,PushButton3,PushButton3,Adding the third push button to the ProE menu bar,NULL,PRO_B_TRUE, PushButton_cmd_id3, MsgFile);/設(shè)置菜單按鈕的動(dòng)作函數(shù)ProCmdActionAdd(PushButtonAct4,(uiCmdCmdActFn)Duangai4Fn,uiCmdPrioDefault,AccessAvailable,PRO_B_TRUE,PRO_B_TRUE,&PushButton_cmd_id4);/添加菜單按鈕ProMenubarmenuPushbuttonAdd(SubMenu,PushButton4, PushButton4,Adding the forth push button to the ProE menu bar, NULL,PRO_B_TRUE, PushButton_cmd_id4, MsgFile);return status;/*=*FUNCTION: user_terminate()*=*/extern C void user_terminate()AFX_MANAGE_STATE(AfxGetStaticModuleState();/*=*FUNCTION: AccessAvailable (菜單項(xiàng)的訪問(wèn)權(quán)限設(shè)置:可選)*=*/static uiCmdAccessState AccessAvailable (uiCmdAccessMode access_mode)return (ACCESS_AVAILABLE);建立端蓋的菜單信息文件(中文版)如下:SubMenuSubMenu端蓋#PushButton1PushButton1嵌入悶蓋#Adding a push button to the ProE menu barAdding a push button to the ProE menu bar嵌入悶蓋#PushButton2PushButton2嵌入透蓋#Adding another push button to the ProE menu barAdding another push button to the ProE menu bar嵌入透蓋#PushButton3PushButton3凸緣悶蓋#Adding the third push button to the ProE menu barAdding the third push button to the ProE menu bar凸緣悶蓋#PushButton4PushButton4凸緣透蓋#Adding the forth push button to the ProE menu barAdding the forth push button to the ProE menu bar凸緣透蓋#創(chuàng)建端蓋菜單如下圖3.1:圖3.1 模型菜單圖3.2 對(duì)話框的設(shè)計(jì)彈出式對(duì)話框是目前最先進(jìn)最流行的一種人機(jī)交互方式,它能提供圖形與文字共存的可視化環(huán)境,使操作更為自然快捷。在進(jìn)行Pro/TOOLKIT程序設(shè)計(jì)時(shí),有兩種方法建立對(duì)話框,一種是通過(guò)VC提供的MFC可視化對(duì)話框設(shè)計(jì)技術(shù),另一種是通過(guò)Pro/TOOLKIT提供的用戶(hù)界面對(duì)話框(User Interface Dialog Boxes,簡(jiǎn)稱(chēng)UI對(duì)話框)。3.2.1 MFC對(duì)話框MFC是VC+程序的一個(gè)重要的軟件資源,為開(kāi)發(fā)Windows應(yīng)用程序提供了強(qiáng)大的支持,使用MFC可以實(shí)現(xiàn)程序界面的可視化設(shè)計(jì)。MFC對(duì)話框作為一種窗口,具有窗口的一切功能,與UI對(duì)話框相比,使用MFC對(duì)話框界面布局更加容易,設(shè)計(jì)調(diào)試都比較容易。但它建立的對(duì)話框與Pro/ENGINEER的風(fēng)格不一樣,不利于用戶(hù)的操作。3.2.2 UI對(duì)話框利用UI對(duì)話框技術(shù)可以在Pro/TOOLKIT應(yīng)用程序中設(shè)計(jì)出風(fēng)格與Pro/ENGINEER系統(tǒng)本身具有的對(duì)話框相似的人機(jī)交互界面??刂瞥绦蛴肅或C+語(yǔ)言編寫(xiě),用來(lái)在Pro/ENGINEER環(huán)境裝入對(duì)話框資源、顯示對(duì)話框、設(shè)置動(dòng)作和退出對(duì)話框等。UI對(duì)話框的設(shè)計(jì)主要涉及兩個(gè)方面:一是按界面的布局編寫(xiě)資源文件;二是針對(duì)UI對(duì)話框的功能編寫(xiě)相應(yīng)的控制程序。1.資源文件資源文件是用來(lái)定義和描述UI對(duì)話框外觀及屬性的文本文件。主要內(nèi)容包括UI對(duì)話框的組成部分元件(component)或稱(chēng)控件、各元件的屬性定義和元件的布局形式。編寫(xiě)資源文件進(jìn)應(yīng)注意以下幾點(diǎn):(1)區(qū)分大小寫(xiě);(2)括號(hào)必須成對(duì);(3)對(duì)話框名應(yīng)與資源文件名相同;(4)“!”后面的內(nèi)容為注釋部分,對(duì)對(duì)話框的定義沒(méi)有任何影響;(5)資源文件可用任何一種支持純文本格式的文字處理軟件編寫(xiě),如Word、寫(xiě)字板或記事本等,也可以用VC應(yīng)用程序設(shè)計(jì)向?qū)Ь帉?xiě)。無(wú)論用何種方法編寫(xiě),都必須按純文本格式保存,且擴(kuò)展名為.res。保存在工作目錄下所建VC程序中Release/text/resource子目錄中。其中取決于當(dāng)前使用的語(yǔ)言(chinese_cn或usascii)。資源文件的結(jié)構(gòu)如下:(Dialog(Componens)(Resources))Dialog為頂層語(yǔ)句,下面主要包含兩段構(gòu)成,其中原件段(Components)聲明了該對(duì)話框的所有元件,資源段(Resource)分為定義了各元件的屬性及布局。資源文件僅僅是對(duì)UI對(duì)話框的描述,必須通過(guò)Pro/TOOLKIT應(yīng)用程序來(lái)裝入、顯示和控制對(duì)話框。分為創(chuàng)建和終止兩部分。創(chuàng)建對(duì)話框的過(guò)程如下:(1)調(diào)用ProUIDialogCreate()函數(shù)將資源文件裝入內(nèi)在;(2)調(diào)用對(duì)話框零件的動(dòng)作函數(shù)設(shè)置指定元件的動(dòng)作函數(shù);(3)調(diào)用ProUIDialogActivate()函數(shù)顯示和激活對(duì)話框;(4)調(diào)用ProUIDialogDestroy()函數(shù)從內(nèi)在清除對(duì)話框資源。這四步是創(chuàng)建一個(gè)UI對(duì)話框的最基本步驟。其中第二步可實(shí)現(xiàn)數(shù)據(jù)的調(diào)用,它的動(dòng)作設(shè)置函數(shù)與元件類(lèi)型有關(guān),其主要目的是設(shè)置用戶(hù)在對(duì)話框界面上對(duì)某一元素進(jìn)行操作時(shí),調(diào)用的動(dòng)作函數(shù)。在完成這四步的情況下,可以終止UI對(duì)話框,具體方法是調(diào)用ProUIDialogExit()函數(shù)。3.3 端蓋對(duì)話框設(shè)計(jì)3.3.1 構(gòu)想1.在主對(duì)話框中添加以下元件。(1)Label1與Label1.1標(biāo)簽,用于提示圖形。Lable1其圖形顯示零件圖形,該圖形直接從三維模型中獲取。Label1.1顯示設(shè)計(jì)參數(shù)與尺寸的對(duì)應(yīng)關(guān)系,該圖形直接從三維模型中獲取,在圖形軟件中加上尺寸線和參數(shù)名后轉(zhuǎn)換為UI對(duì)話框支持的GIF格式(保存在resource子目錄)。Lable1其圖形命名為Duangai3.gif,Label1.1其圖形命名為Duangai3_1.gif。(2)Label2標(biāo)簽,用于顯示參數(shù)名,命名規(guī)則為:設(shè)計(jì)參數(shù)名_Label。(3)Separator分隔線(4)PushButton1按鈕,用于生成模型。(5)PushButton2按鈕,用于退出對(duì)話框。(6)PushButton3按鈕,用于自定義對(duì)話框設(shè)計(jì)。(7)InputPanel輸入框,用于表示參數(shù)值,命名規(guī)則為:設(shè)計(jì)參數(shù)名_Value。其中兩個(gè)按鈕跟其他的按鈕用分隔線隔開(kāi)。2.在自定義對(duì)話框中添加以下元件。(1)Label1.1與主對(duì)話框的設(shè)置相同。(2)Label2標(biāo)簽,用于顯示參數(shù)名,命名規(guī)則為:設(shè)計(jì)參數(shù)名_Label。(3)Separator分隔線(4)PushButton1按鈕,用于生成模型。(5)PushButton2按鈕,用于退出對(duì)話框。(6)InputPanel輸入框,用于表示參數(shù)值,命名規(guī)則為:設(shè)計(jì)參數(shù)名_Value。3.3.2 創(chuàng)建方法其創(chuàng)建的方法是:編寫(xiě)資源文件,文件擴(kuò)展名為.res,用純文本格式保存在注冊(cè)文件中TEXT_DIR字段指定目錄下的resource子目錄。調(diào)用ProUIDialogCreate()函數(shù)將資源文件裝入內(nèi)存;調(diào)用ProUIPushbuttonActivateActionSet()函數(shù)設(shè)置按鈕的動(dòng)作;調(diào)用ProUIDialogActivate()函數(shù)顯示和激活對(duì)話框;調(diào)用ProUIDialogDestroy()函數(shù)從內(nèi)存清除對(duì)話框資源; 調(diào)用 ParamsList()顯示模型的設(shè)計(jì)參數(shù);調(diào)用ParamGetAndShow()從零件模型中獲得參數(shù)值,并在相應(yīng)的輸入框中顯示;調(diào)用ParamUpdate()更新參數(shù)值。創(chuàng)建函數(shù)原型為:ProError ProUIDialogCreate(char*dialog_name char*resource)ProError ProUIDialogActivate(char*dialog_name int*status)ProError ProUIDialogDestroy (char* dialog_name)3端蓋資源文件以凸緣悶蓋為例,其主對(duì)框資源文件如下:!資源文件:Duangai3.res(Dialog Duangai3(Components !對(duì)話框元件聲明(Label Image1)(Label Image2)(SubLayout Layout1)(Separator Separator1)(PushButton Update3)(PushButton Cancel) )(Resources !對(duì)話框資源(屬性定義)(Image1.Bitmap Duangai3.1.gif)!零件尺寸與參數(shù)對(duì)應(yīng)圖(Image1.TopOffset 10)(Image1.LeftOffset 4)(Image1.RightOffset 2)(Image2.Bitmap Duangai3.gif)!三位零件圖(Image2.TopOffset 4)(Image2.BottomOffset 8)(Image2.LeftOffset 4)(Image2.RightOffset 4)(Update3.Label 生成模型(&U)!生成模型按鈕(Update3.Bitmap cl_ok)(Update3.TopOffset 4)(Update3.BottomOffset 8)(Update3.LeftOffset 4)(Update3.RightOffset 4)!Cancel按鈕屬性定義(Cancel.Label 退出(&E)(Cancel.Bitmap cl_cancel)(Cancel.TopOffset 4)(Cancel.BottomOffset 8)(Cancel.LeftOffset 4)(Cancel.RightOffset 4)(Separator1.TopOffset 4)(Separator1.BottomOffset 4)(.Label 端蓋參數(shù)化設(shè)計(jì)) !對(duì)話框標(biāo)題(.StartLocation 5)(.Resizeable 0)(.Layout !對(duì)話框元件的布局(Grid (Rows 1 1 1) (Cols 1)(Grid (Rows 1 ) (Cols 1 1)Image1 (Grid (Rows 1 1 ) (Cols 1)Layout1Image2)Separator1(Grid (Rows 1) (Cols 1 1)Update3Cancel)(Layout Layout1(Components(Label D_Label)(OptionMenu D_Value)(Label DA_Label)(OptionMenu DA_Value)(Label DB_Label)(OptionMenu DB_Value)(Label DC_Label)(OptionMenu DC_Value)(Label SD_Label)(OptionMenu SD_Value)(Label SB_Label)(OptionMenu SB_Value)(Label R_Label)(OptionMenu R_Value)(Label B_Label)(OptionMenu B_Value)(Label Userdefined3_Value)(PushButton Userdefined3)(Resources(Userdefined3.Label 自定義)(Userdefined3.TopOffset 4)(Userdefined3.BottomOffset 8)(Userdefined3.LeftOffset 4)(Userdefined3.RightOffset 4)(D_Label.AttachLeft True)(D_Label.LeftOffset 4)(D_Label.Label D)(DA_Label.AttachLeft True)(DA_Label.LeftOffset 4)(DA_Label.Label DA)(DB_Label.AttachLeft True)(DB_Label.LeftOffset 4)(DB_Label.Label DB)(DC_Label.AttachLeft True)(DC_Label.LeftOffset 4)(DC_Label.Label DC)(SD_Label.AttachLeft True)(SD_Label.LeftOffset 4)(SD_Label.Label SD)(SB_Label.AttachLeft True)(SB_Label.LeftOffset 4)(SB_Label.Label SB)(R_Label.AttachLeft True)(R_Label.LeftOffset 4)(R_Label.Label
收藏