2892 基于ProE二次開(kāi)發(fā)的端蓋參數(shù)化模型的實(shí)現(xiàn)
2892 基于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第三章 用戶界面設(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 總體方案 ...................................................................................................................24湘潭大學(xué)畢業(yè)設(shè)計(jì)4.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湘潭大學(xué)畢業(yè)設(shè)計(jì)基于 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)用 Pro/ Toolkit 進(jìn)行菜單開(kāi)發(fā)、對(duì)話框開(kāi)發(fā),即 UI 對(duì)話框,以及如何在 VC++環(huán)境下編制 C 語(yǔ)言程序以激活、調(diào)用對(duì)話框界面,設(shè)計(jì)出更加友好透明的用戶界面,方便快捷地實(shí)現(xiàn)端蓋的參數(shù)化設(shè)計(jì)和修改,準(zhǔn)確再生出新的實(shí)體模型。關(guān)鍵詞:Pro/ENGINEER 、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 design. Design 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 full—scale mock up,many other advanced CAD such as component assembly,interference check,finite element analysis,motion analysis and so on can be proceed.Hence ,three —dimensional 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/E's 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:Pro/ENGINEER、Visual C++、Pro/TOOLKIT 、secondary development湘潭大學(xué)畢業(yè)設(shè)計(jì)1第一章 緒 論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ì)算的方法稱為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ī)和汽車工業(yè)的蓬勃發(fā)展時(shí)期。期間飛機(jī)及汽車的制造中遇到了大量的自由曲面問(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)湘潭大學(xué)畢業(yè)設(shè)計(jì)2想最先在 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ī)械、電子、建筑、汽車、服裝等行業(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)造效益,需湘潭大學(xué)畢業(yè)設(shè)計(jì)3Pro/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)可以為很大一部分類型的程序提供框架代碼,用戶不需要書寫代碼,只需要幾個(gè)按鈕就可以生成一個(gè)完整的可以運(yùn)行的程序。在 Pro/TOOLKIT 中,PTC 向用戶提供了大量的 C 語(yǔ)言函數(shù)庫(kù),函數(shù)采用面向?qū)ο蟮娘L(fēng)格。通過(guò)調(diào)用這些底層函數(shù),用戶能方便而又安全地訪問(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)用戶選擇不同的樣式后,應(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)用戶界面的設(shè)計(jì)。研究菜單信息文件,制作端蓋的菜單界面;研究對(duì)話框資源文件,創(chuàng)建主對(duì)話框,并在主對(duì)話框中彈出一個(gè)自定義對(duì)話框;研究Pro/TOOLKIT 與 Visual C++6.0 的接口技術(shù);在 VC 中制作 Pro/TOOLKIT 用戶界面。(3)參數(shù)化建模的研究。Pro/ENGINEER 軟件對(duì)于每個(gè)模型都有一個(gè)主要設(shè)計(jì)步驟和參數(shù)列表,所以要先繪制三維模型,定出參數(shù)列表;設(shè)計(jì)端蓋程序,實(shí)現(xiàn)自動(dòng)加載菜單、選擇不同的端蓋、彈出對(duì)話框、修改端蓋模型參數(shù)值、生成零件等功能。湘潭大學(xué)畢業(yè)設(shè)計(jì)4第二章 Pro/TOOLKIT 二次開(kāi)發(fā)的基礎(chǔ)理論2.1 Pro/TOOLKIT 的基本知識(shí)2.1.1 Pro/TOOLKIT 簡(jiǎn)介Pro/TOOLKIT 是 PTC 公司為 Pro/ENGINEER 軟件提供的用戶化開(kāi)發(fā)工具箱,該工具箱為用戶程序及第三方程序提供了與 Pro/ENGINEER 的無(wú)縫連接。用戶程序或第三方的程序是用 C 語(yǔ)言編寫的。Pro/TOOLKIT 提供了一個(gè) C 語(yǔ)言的函數(shù)庫(kù),該函數(shù)庫(kù)能夠使用戶或第三方的應(yīng)用程序以一種可控的、安全的方式訪問(wèn)Pro/ENGINEER 的數(shù)據(jù)庫(kù)和應(yīng)用程序。用戶或第三方通過(guò) C 程序代碼擴(kuò)充Pro/ENGINEER 系統(tǒng)的功能,開(kāi)發(fā)基于 Pro/ENGINEER 系統(tǒng)的應(yīng)用程序模塊,從而滿足用戶的特殊要求。Pro/TOOLKIT 采用的是功能強(qiáng)大的面向?qū)ο蟮姆绞絹?lái)編寫的。因此,用來(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 中最基本的概念。湘潭大學(xué)畢業(yè)設(shè)計(jì)5Pro /T OO LKIT 的對(duì)象實(shí)質(zhì)上是一種類型為結(jié)構(gòu)體的數(shù)據(jù),結(jié)構(gòu)體中的成員描述了該對(duì)象的屬性。所有對(duì)象的命名約定為 Pro+,其中對(duì)象名用英文單詞表示,第一個(gè)字母大寫,如 ProFeature(特征對(duì)象)。Pro/TOOLKIT 對(duì)象執(zhí)行的某種特定操作稱為動(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)類型的一個(gè)具體的結(jié)構(gòu)體變量稱之對(duì)象句柄。按照對(duì)象句柄的定義和使用方式分成兩種類型: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),它包含了足夠的信息— 包括類型、整型標(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ù)的返回值類型為 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 文件,湘潭大學(xué)畢業(yè)設(shè)計(jì)6程序的設(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ū)г?FileView 中自動(dòng)加入了 ReadMe.txt、StdAfx.cpp 和以工程文件名為前綴的 cpp 資源文件、 def 模塊定義文件以及 rc 資源文件等。如下圖2.1:湘潭大學(xué)畢業(yè)設(shè)計(jì)7圖2.1 VC文件圖2.3 Pro/TOOLKIT 信息文件的建立信息文件是一種 ASCII 碼文件,用來(lái)定義菜單項(xiàng)、菜單項(xiàng)提示等信息,可以用Word 記事本和寫字板等文字處理軟件建立,也可在 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)榭?。第四行:?dāng)前的 Pro/ENGINEER 版本為空。其中,第二﹑第四行的語(yǔ)言顯示取決于系統(tǒng)環(huán)境變量 lang 的設(shè)置。同時(shí),信息文件必須位于\text 或\text\文件夾,為湘潭大學(xué)畢業(yè)設(shè)計(jì)8chinese-cn 時(shí)表示信息為中文,為 usascii 表示信息為英語(yǔ)。由此,可以通過(guò)系統(tǒng)的環(huán)境變量控制顯示的語(yǔ)種,不必修改程序。2.4 編譯和連接設(shè)置設(shè)置包含文件路徑,加入“\PROTOOLKIT\INCLUDES” ;設(shè)置庫(kù)文件路徑,加入“\PROTOOLKIT\I486_NT\OBJ” ;設(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è)為 TRUE,可以手工終止運(yùn)行。如果啟動(dòng)應(yīng)用程序失敗,可以選擇信息按鈕來(lái)顯示應(yīng)用程序的有關(guān)注冊(cè)信息,以便找出錯(cuò)的原因。湘潭大學(xué)畢業(yè)設(shè)計(jì)9第三章 用戶界面設(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 的主要用戶界面,Pro/TOOLKIT 提供了一系列菜單操作函數(shù),允許應(yīng)用程序創(chuàng)建何管理菜單。在應(yīng)用 Pro/TOOLKIT 對(duì) Pro/ENGINEER 進(jìn)行開(kāi)發(fā)的過(guò)程中,添加用戶自定義菜單是最常用的技術(shù)。菜單在 Pro/ENGINEER 界面上的生成代表著動(dòng)態(tài)鏈接庫(kù)加載成功,這是進(jìn)行后續(xù)工作的基礎(chǔ)。3.1.1 向菜單欄添加菜單條Pro/ENGINEER 是一個(gè)不斷發(fā)展不斷更新的軟件,某個(gè)版本下有的菜單在另外一個(gè)版本下可能沒(mé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()湘潭大學(xué)畢業(yè)設(shè)計(jì)10{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ù)湘潭大學(xué)畢業(yè)設(shè)計(jì)11ProCmdActionAdd("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湘潭大學(xué)畢業(yè)設(shè)計(jì)12端蓋#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凸緣透蓋#湘潭大學(xué)畢業(yè)設(shè)計(jì)13創(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 提供的用戶界面對(duì)話框(User Interface Dialog Boxes,簡(jiǎn)稱 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)格不一樣,不利于用戶的操作。3.2.2 UI 對(duì)話框利用 UI 對(duì)話框技術(shù)可以在 Pro/TOOLKIT 應(yīng)用程序中設(shè)計(jì)出風(fēng)格與湘潭大學(xué)畢業(yè)設(shè)計(jì)14Pro/ENGINEER 系統(tǒng)本身具有的對(duì)話框相似的人機(jī)交互界面??刂瞥绦蛴?C 或 C++語(yǔ)言編寫,用來(lái)在 Pro/ENGINEER 環(huán)境裝入對(duì)話框資源、顯示對(duì)話框、設(shè)置動(dòng)作和退出對(duì)話框等。UI 對(duì)話框的設(shè)計(jì)主要涉及兩個(gè)方面:一是按界面的布局編寫資源文件;二是針對(duì) UI 對(duì)話框的功能編寫相應(yīng)的控制程序。1.資源文件資源文件是用來(lái)定義和描述 UI 對(duì)話框外觀及屬性的文本文件。主要內(nèi)容包括UI 對(duì)話框的組成部分元件(component)或稱控件、各元件的屬性定義和元件的布局形式。編寫資源文件進(jìn)應(yīng)注意以下幾點(diǎn):(1)區(qū)分大小寫;(2)括號(hào)必須成對(duì);(3)對(duì)話框名應(yīng)與資源文件名相同;(4)“!” 后面的內(nèi)容為注釋部分,對(duì)對(duì)話框的定義沒(méi)有任何影響;(5)資源文件可用任何一種支持純文本格式的文字處理軟件編寫,如 Word、寫字板或記事本等,也可以用 VC 應(yīng)用程序設(shè)計(jì)向?qū)Ь帉?。無(wú)論用何種方法編寫,都必須按純文本格式保存,且擴(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)用,它湘潭大學(xué)畢業(yè)設(shè)計(jì)15的動(dòng)作設(shè)置函數(shù)與元件類型有關(guān),其主要目的是設(shè)置用戶在對(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)建的方法是:編寫資源文件,文件擴(kuò)展名為.res,用純文本格式保存在注冊(cè)文件中 TEXT_DIR 字段指定目錄下的 \\resource 子目錄。調(diào)
收藏