畢業(yè)設(shè)計(jì)(論文)基于proe環(huán)境下的工程圖增強(qiáng)功能開發(fā)_第1頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于proe環(huán)境下的工程圖增強(qiáng)功能開發(fā)_第2頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于proe環(huán)境下的工程圖增強(qiáng)功能開發(fā)_第3頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于proe環(huán)境下的工程圖增強(qiáng)功能開發(fā)_第4頁(yè)
畢業(yè)設(shè)計(jì)(論文)基于proe環(huán)境下的工程圖增強(qiáng)功能開發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩53頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于pro/e環(huán)境下的工程圖增強(qiáng)功能開發(fā)jingchu university of technology本科畢業(yè)設(shè)計(jì)(論文)設(shè)計(jì)(論文)題目基于pro/e環(huán)境下的工程圖增強(qiáng)功能開發(fā) 學(xué) 院 機(jī)械工程學(xué)院 專 業(yè) 機(jī)械設(shè)計(jì)制造及其自動(dòng)化 年級(jí)班別 07機(jī)制三班 學(xué) 號(hào) 學(xué)生姓名 指導(dǎo)教師 2011年 5月23日目 錄1.摘要21.1摘要21.2 abstract32.設(shè)計(jì)說(shuō)明42.1本課題的研究目的42.2本課題的研究要求42.3本課題的研究意義43.基于pro/e環(huán)境下的工程圖增強(qiáng)功能開發(fā)53.1開發(fā)環(huán)境53.1.1開發(fā)環(huán)境介紹53.1.2軟件配置53.1.3開發(fā)環(huán)境調(diào)試53.2功能開發(fā)143

2、.2.1功能分析143.2.2程序構(gòu)架143.2.3程序開發(fā)163.2.4資源文件定義253.2.5國(guó)家標(biāo)準(zhǔn)配置303.2.6模板定義383.2.7程序注冊(cè)運(yùn)行393.3程序兼容性優(yōu)化403.3.1程序文件整理403.3.2兼容性優(yōu)化414.總結(jié)435.參考文獻(xiàn)446.外文翻譯451.摘要1.1摘要產(chǎn)品的三維設(shè)計(jì)離不開cad/cam系統(tǒng)的支持,具有技術(shù)成熟、功能強(qiáng)大的pro/engineer參數(shù)化造型系統(tǒng)在設(shè)計(jì)和制造業(yè)中引起了人們的重視,并得到了日益廣泛的應(yīng)用。pro/engineer作為通用的三維cad/cam系統(tǒng)在功能上基本能夠滿足產(chǎn)品三維設(shè)計(jì)的要求,但要高效地進(jìn)行產(chǎn)品設(shè)計(jì)以滿足更高層次的

3、要求,必須借助于高級(jí)開發(fā)工具包pro/toolkit。pro/engineer是目前國(guó)際上最流行的“參數(shù)化,全相關(guān)”的三維設(shè)計(jì)軟件。全相關(guān)技術(shù)即產(chǎn)品的三維模型與二維圖形相互關(guān)聯(lián)、能高效率地生成二維投影視圖。因?yàn)樵诠こ虒?shí)踐中,二維工程圖是必不可少的,作為重要的技術(shù)文檔,工程圖具有一定的規(guī)范和標(biāo)準(zhǔn),特別是工程信息的標(biāo)注如各種標(biāo)注符號(hào)、標(biāo)題欄和明細(xì)表以及工程圖的打印等,這都需要按行業(yè),企業(yè)和國(guó)家的標(biāo)準(zhǔn)統(tǒng)一做相應(yīng)的二次開發(fā)定制工作。pro/engineer軟件具有廣而博的通用性,但它在具體的應(yīng)用時(shí)不能直接處理特定的產(chǎn)品,再加上國(guó)外的設(shè)計(jì)觀念、標(biāo)準(zhǔn)和國(guó)內(nèi)的差異,在使用該軟件進(jìn)行具體產(chǎn)品的設(shè)計(jì)時(shí)會(huì)感到有些

4、地方不是特別方便。本課題二次開發(fā)的目的是為了減小pro/engineer系統(tǒng)上國(guó)外的設(shè)計(jì)觀念、標(biāo)準(zhǔn)和國(guó)內(nèi)的差異對(duì)用戶應(yīng)用時(shí)造成的影響和不必要的麻煩,對(duì)pro/engineer系統(tǒng)的二次開發(fā)的目的是對(duì)一些相關(guān)操作和參數(shù)進(jìn)行國(guó)標(biāo)化,更方便用戶的應(yīng)用。關(guān)鍵詞:pro/engineer、pro/toolkit、工程圖、二次開發(fā)1.2 abstractthe three-dimensional design of product is inseparable from the cad/cam system's support. with the mature technology, powerf

5、ul pro/engineer parametric modeling system in the design and manufacturing , it has aroused attention, and has been increasingly widely used. as a general three-dimensional cad/cam system, pro/engineer basically meet the requirements of three-dimensional design .if we want to be more efficient to me

6、et the requirements of a higher level, we should resort to high-level development kit pro/toolkit.pro/engineer is the world's most popular "parameter, all related," three-dimensional design software. all related technology is a technology that make three-dimensional model and two-dimen

7、sional graphics interrelated. in engineering practice, the two-dimensional engineering drawings is essential. as an important technical documents, engineering drawings have certain norms and standards, especially a variety of engineering information marked symbols, the title bar and the schedule and

8、 project map printing. all of these standards need to be done by the secondary development of software.pro/engineer software has broad and general usage, but it can not directly address specific products. what is more, foreign design concepts, standards and national differ from us. so it would be in

9、convenient in the use of the software. the second development of this project aims to reduce the influence caused by foreign concepts, standards and internal differences of the pro/engineer. the purpose of the secondary development is to make the number of related operations and parameters internati

10、onal, more convenient for application.keywords: pro/engineer, pro/toolkit, drawings, secondary development2.設(shè)計(jì)說(shuō)明2.1本課題的研究目的pro/engineer軟件具有廣而博的通用性,但它在具體的應(yīng)用時(shí)不能直接處理特定的產(chǎn)品,再加上國(guó)外的設(shè)計(jì)觀念、標(biāo)準(zhǔn)和國(guó)內(nèi)的差異,在使用該軟件進(jìn)行具體產(chǎn)品的設(shè)計(jì)時(shí)會(huì)感到有些地方不是特別方便。本課題二次開發(fā)的目的是為了減小pro/engineer系統(tǒng)上國(guó)外的設(shè)計(jì)觀念、標(biāo)準(zhǔn)和國(guó)內(nèi)的差異對(duì)用戶應(yīng)用時(shí)造成的影響和不必要的麻煩,對(duì)pro/engineer系統(tǒng)的二

11、次開發(fā)的目的是對(duì)一些相關(guān)操作和參數(shù)進(jìn)行國(guó)標(biāo)化,更方便用戶的應(yīng)用。2.2本課題的研究要求本設(shè)計(jì)課題為基于pro/engineer環(huán)境下的工程圖增強(qiáng)功能開發(fā)。為了高效地利用pro/engineer實(shí)現(xiàn)工程圖的完善及標(biāo)注;同時(shí)也為了更加深入地了解pro/engineer系統(tǒng)的開發(fā)方法和步驟,為以后的設(shè)計(jì)開發(fā)工作打下一定的基礎(chǔ)。擬在學(xué)習(xí)了解pro/engineer二次開發(fā)的過(guò)程中完成以下功能的二次開發(fā):1.自動(dòng)生成同名工程圖文件;2.用菜單的方式選擇圖框及標(biāo)題欄格式;3.按照國(guó)家標(biāo)準(zhǔn)樣式加載配置。2.3本課題的研究意義pro/engineer是目前國(guó)際上最流行的“參數(shù)化,全相關(guān)”的三維設(shè)計(jì)軟件。全相關(guān)

12、技術(shù)即產(chǎn)品的三維模型與二維圖形相互關(guān)聯(lián)、能高效率地生成二維投影視圖。因?yàn)樵诠こ虒?shí)踐中,二維工程圖是必不可少的,作為重要的技術(shù)文檔,工程圖具有一定的規(guī)范和標(biāo)準(zhǔn),特別是工程信息的標(biāo)注如各種標(biāo)注符號(hào)、標(biāo)題欄和明細(xì)表以及工程圖的打印等,這都需要按行業(yè),企業(yè)和國(guó)家的標(biāo)準(zhǔn)統(tǒng)一做相應(yīng)的二次開發(fā)定制工作。3. 基于pro/e環(huán)境下的工程圖增強(qiáng)功能開發(fā)3.1開發(fā)環(huán)境3.1.1開發(fā)環(huán)境介紹pro/toolkit是針對(duì)pro/engineer功能強(qiáng)大的二次開發(fā)工具。它封裝了許多針對(duì)pro/engineer底層資源調(diào)用的庫(kù)函數(shù)與頭文件,借助第三方編譯環(huán)境(c語(yǔ)言、vc+語(yǔ)言等)進(jìn)行調(diào)試。使用pro/toolkit開發(fā)

13、應(yīng)用程序包含三個(gè)基本步驟:編寫源文件(包括資源文件和程序源文件);生成可執(zhí)行文件;可執(zhí)行文件在pro/engineer中注冊(cè)并運(yùn)行是pro/engineer軟件自帶的二次開發(fā)模塊,可以直接訪問(wèn)proe軟件的最底層數(shù)據(jù)庫(kù)資源,這是進(jìn)行pro二次開發(fā)最根本的方法,但要求開發(fā)人員具有相當(dāng)c語(yǔ)言的編程能力;它是ptc公司為pro/engineer提供的用戶化工具箱(18以前的版本為pro/develop),該工具箱為用戶程序、軟件及第三方程序提供了與pro/engineer的無(wú)縫聯(lián)接。用戶程序和第三方程序是用c語(yǔ)言編寫的,pro/toolkit提供了大量的c語(yǔ)言的庫(kù)函數(shù),能夠使外部應(yīng)用程序安全有效地訪

14、問(wèn)pro/engineer的數(shù)據(jù)庫(kù)和應(yīng)用程序。通過(guò)c語(yǔ)言編程及應(yīng)用程序與pro/engineer的無(wú)縫集成,用戶和第三方能夠在pro/engineer系統(tǒng)中增加所需的功能。3.1.2軟件配置1.操作系統(tǒng):windows xp sp3 專業(yè)版2.程序開發(fā)軟件:pro/toolkit、microsoft visual studio 2008 企業(yè)版3.程序測(cè)試軟件:pro/engineer wildfire 4.0 m1704.程序兼容性優(yōu)化軟件:microsoft visual basic 6.0 中文版3.1.3開發(fā)環(huán)境調(diào)試首先打開microsoft visual studio 2008(以下

15、簡(jiǎn)稱vs2008)。依次選擇文件>新建>項(xiàng)目,系統(tǒng)彈出項(xiàng)目對(duì)話框(圖1)。選擇如圖所示的mfc dll 項(xiàng)目, 輸入項(xiàng)目名稱并設(shè)置項(xiàng)目路徑,點(diǎn)擊確定。在接下來(lái)的對(duì)話框中選擇“使用共享mfc dll 的規(guī)則dll”(默認(rèn)的也是這個(gè)選項(xiàng)),點(diǎn)擊完成后,系統(tǒng)自動(dòng)為我們搭建了一個(gè)dll的開發(fā)環(huán)境,現(xiàn)在,我們要在這個(gè)環(huán)境下配置toolkit 開發(fā)所需要的頭文件和庫(kù)文件路徑。圖1依次在菜單中選擇: 工具>選項(xiàng),系統(tǒng)彈出選項(xiàng)對(duì)話框。在該對(duì)話中選擇“項(xiàng)目和解決方案”一欄中的“vc+目錄”選項(xiàng),并參照?qǐng)D2的方法設(shè)置頭文件路徑。圖2添加包含文件路徑如下:d:shejiproe4.0m170pro

16、toolkitincluded:shejiproe4.0m170protoolkitprotk_applsincludesd:shejiproe4.0m170prodevelopincludesd:shejiproe4.0m170prodevelopprotk_applsincludes仍舊在該對(duì)話框下,設(shè)置庫(kù)文件路徑,如圖3:圖3添加包含文件路徑如下:d:shejiproe4.0m170protoolkiti486_ntobjd:shejiproe4.0m170prodevelopi486_ntobj設(shè)置好頭文件和庫(kù)文件路徑后,就還差最后一步了,現(xiàn)在我們要來(lái)指定使用中的具體庫(kù)文件。點(diǎn)擊:項(xiàng)目

17、>屬性,系統(tǒng)彈出該項(xiàng)目的屬性對(duì)話框。按照?qǐng)D4的方法設(shè)置工程的連接屬性。添加如下參數(shù):附加依賴項(xiàng):wsock32.lib mpr.lib psapi.lib protk_dllmd.lib忽略特定庫(kù):msvcrtd.lib如上設(shè)置即完成了vs2008與pro/toolkit程序的連接,接下來(lái)編寫測(cè)試程序如下:程序源碼:/文件名:zhucaidan.cpp#include "windows.h"#include "proutil.h"圖4#include "promenu.h"#include "promessage.h&

18、quot;#include "promenubar.h"#include "prouidialog.h"#include "prouipushbutton.h"#include "protoolkit.h"#include "promenubar.h"#include "prouicheckbutton.h"#include "prouilist.h"#include "prouispinbox.h"#include "pro

19、uilabel.h"#include "prouiradiogroup.h"#include "proarray.h"#include "prouiinputpanel.h"#include "malloc.h"#include "stdlib.h"#include "pro2dentdef.h"#include "proelement.h"#include "profeatform.h"#include "prof

20、eattype.h"#include "prostdsection.h"#include "prowindows.h"#include "promodelitem.h"#include "prorevolve.h"#include "prosolid.h"#include "proelempath.h"#include "prodtmpln.h"/以上為程序編譯所用頭文件#define pro_use_var_args1void ok_actio

21、n(char*,char*,proappdata data);void fun01();static uicmdaccessstate accessdefault(uicmdaccessmode)return access_available;/以上為函數(shù)聲明/用戶入口函數(shù):extern "c" int user_initialize()profilename msgfile;proerror status;/引用資源文件"dat01.dat":prostringtowstring(msgfile,"dat01.dat");uicmd

22、cmdid pushbuttonid01;/新建工具欄菜單:status=promenubarmenuadd("zhucaidan","imgs01","help",pro_b_false,msgfile);/在工具欄菜單上新建功能鍵:procmdactionadd("button01_act",(uicmdcmdactfn)fun01,uicmdpriodefault,accessdefault,pro_b_true,pro_b_true,&pushbuttonid01);promenubarmenupu

23、shbuttonadd("zhucaidan","button01","imgs02","imgs03",null,pro_b_true,pushbuttonid01,msgfile);procmdiconset(pushbuttonid01,"icon01.gif");return status;/用戶終止函數(shù):extern "c" void user_terminate()/功能函數(shù):void fun01()int dialog_status;/引用ui界面文件"

24、;res01.res":prouidialogcreate("res01","res01");prouidialogcloseactionset("res01",ok_action,null);prouipushbuttonactivateactionset("res01","button1",ok_action,null);prouidialogactivate("res01",&dialog_status);prouidialogdestroy(&quo

25、t;res01");void ok_action(char* dialog,char* componets,proappdata data) prouidialogexit("res01",1);/編譯以上源碼生成應(yīng)用程序,重命名應(yīng)用程序?yàn)椋?quot;dll01.dll"資源文件:/文件名:dat00.datname 主菜單exec_file d:kechengshejidll01.dlltext_dir d:kechengshejitextstartup dllfail_tol truedelay_start falseallow_stop fals

26、erevision 2010end/文件名:dat01.datimgs01畢業(yè)設(shè)計(jì)(&b)#imgs02關(guān)于我們(&m)#imgs03關(guān)于我們#ui界面文件:/文件名:res01.res(dialog res01 (components (label label1) (pushbutton button1) ) (resources (button1.label "確定")(button1.bitmap "cl_ok") (button1.attachright true) (button1.topoffset 5) (button1.b

27、ottomoffset 5) (button1.leftoffset 5) (button1.rightoffset 5) (label1.topoffset 5) (label1.bottomoffset 0) (label1.leftoffset 5) (label1.rightoffset 5) (label1.bitmap"pic01.gif") (.label "關(guān)于我們") (.dialogstyle 0) (.focus "button1") (.resizeable false) (.defaultbutton &qu

28、ot;button1") (.alwaysontop true) (.layout (grid (rows 1 1) (cols 1) label1 button1 ) ) )圖片資源:icon01.gif、pic01.gif設(shè)置以上文件路徑:d:kechengshejidll01.dlld:kechengshejitextchinese_cndat00.datd:kechengshejitextchinese_cndat01.datd:kechengshejitextchinese_cnresourceres01.resd:kechengshejitextchinese_cnres

29、ourceicon01.gifd:kechengshejitextchinese_cnresourcepic01.gif注冊(cè)并運(yùn)行測(cè)試程序,運(yùn)行pro/engineer,點(diǎn)擊:工具>輔助應(yīng)用程序,注冊(cè)并運(yùn)行資源文件dat00.dat;(如圖5)圖5啟動(dòng)成功后工具欄新增菜單“畢業(yè)設(shè)計(jì)”和功能鍵“關(guān)于我們”,點(diǎn)擊:畢業(yè)設(shè)計(jì)>關(guān)于我們,效果如圖6所示。圖63.2功能開發(fā)3.2.1功能分析本設(shè)計(jì)課題為基于pro/engineer環(huán)境下的工程圖增強(qiáng)功能開發(fā)。為了高效地利用pro/engineer實(shí)現(xiàn)工程圖的完善及標(biāo)注;同時(shí)也為了更加深入地了解pro/engineer系統(tǒng)的開發(fā)方法和步驟,為以

30、后的設(shè)計(jì)開發(fā)工作打下一定的基礎(chǔ)。擬在學(xué)習(xí)了解pro/engineer二次開發(fā)的過(guò)程中完成以下功能的二次開發(fā):1.自動(dòng)生成同名工程圖文件;對(duì)于已經(jīng)存在的pro/engineer零件圖或組件圖,通過(guò)程序獲取它的文件名,并對(duì)生成的工程圖以獲取的文件名自動(dòng)進(jìn)行命名。自動(dòng)生成零件圖或組件圖的三視圖(國(guó)家標(biāo)準(zhǔn):主視圖,俯視圖,側(cè)視圖)。2.用菜單的方式選擇圖框及標(biāo)題欄格式;pro/engineer系統(tǒng)默認(rèn)繪圖環(huán)境下的圖框及格式均不符合國(guó)家標(biāo)準(zhǔn)要求,應(yīng)按照相應(yīng)的國(guó)家標(biāo)準(zhǔn)要求繪制圖框及標(biāo)題欄模板,并在二次開發(fā)程序中加入選擇圖框的功能(圖幅:a0、a1、a2、a3、a4;圖框:橫向、縱向;是否帶裝訂邊等),程序

31、按照要求調(diào)用已有模板,自動(dòng)生成工程圖的同時(shí)生成圖框,標(biāo)題欄等。3.按照國(guó)家標(biāo)準(zhǔn)樣式加載配置;pro/engineer系統(tǒng)默認(rèn)的配置都是以英制單位為標(biāo)準(zhǔn),與國(guó)家標(biāo)準(zhǔn)不符,不適應(yīng)國(guó)家標(biāo)準(zhǔn)環(huán)境下的應(yīng)用。常規(guī)方式下修改pro/engineer配置參數(shù)僅在當(dāng)次有效,下次使用時(shí)需要重復(fù)修改,工作量大而繁瑣,擬通過(guò)研究pro/engineer系統(tǒng)的工作原理達(dá)到將pro/engineer系統(tǒng)的默認(rèn)環(huán)境更改為符合國(guó)家標(biāo)準(zhǔn)要求的配置。綜合以上功能分析,第1、2項(xiàng)功能通過(guò)pro/toolkit二次開發(fā)程序?qū)崿F(xiàn),第3項(xiàng)功能可通過(guò)重定義pro/engineer配置文件實(shí)現(xiàn)。3.2.2程序構(gòu)架依據(jù)對(duì)程序所需完成的功能的分

32、析,結(jié)合pro/toolkit程序的工作流程,擬定此功能模塊的開發(fā)流程如下:1.pro/engineer系統(tǒng)開始運(yùn)行是加載程序,在(3.1.3開發(fā)環(huán)境調(diào)試)程序加載的工具欄菜單上加載功能鍵;2.獲取當(dāng)前工作環(huán)境,若為零件或組件工作環(huán)境則功能鍵處于激活狀態(tài)(功能鍵可用),否則功能鍵不激活;圖73.pro/engineer系統(tǒng)在零件或組件工作環(huán)境下,點(diǎn)擊功能鍵獲到當(dāng)前環(huán)境下文件名并賦值給變量;4.彈出程序窗口,定義ui界面的參數(shù)和功能,將文件名變量賦值給窗口中文件名欄(可輸入更改);5.按照窗口中所列選項(xiàng)選擇圖幅、圖框、更改文件名等;6.點(diǎn)擊確定按鈕程序開始配置工作或點(diǎn)擊取消結(jié)束程序工作;7.獲取

33、pro/engineer工作進(jìn)程中是否已存在當(dāng)前工程圖,若存在則直接打開并激法工程圖;8.若pro/engineer工作進(jìn)程中不存在當(dāng)前工程圖則按照用戶的選擇調(diào)用相關(guān)的格式文件和圖幅模板,生成工程圖。9.激活工程圖,釋放程序內(nèi)存,結(jié)束程序工作。綜合以上工作流程,繪制程序框圖如圖7所示。3.2.3程序開發(fā)1.pro/engineer系統(tǒng)開始運(yùn)行是加載程序,在(3.1.3開發(fā)環(huán)境調(diào)試)程序加載的工具欄菜單上加載功能鍵。上文中用于開發(fā)環(huán)境調(diào)試的程序已使用promenubarmenuadd()函數(shù)在工具欄上加載菜單畢業(yè)設(shè)計(jì),使用procmdactionadd()函數(shù)在畢業(yè)設(shè)計(jì)菜單下加載功能鍵關(guān)于我們。

34、在菜單畢業(yè)設(shè)計(jì)上使用procmdactionadd()函數(shù)加載新的功能鍵新建工程圖,使用promenubarmenupushbuttonadd()函數(shù)定義功能鍵的各項(xiàng)參數(shù),使用procmdiconset()函數(shù)定義功能鍵的圖標(biāo),其實(shí)現(xiàn)方法為:profilename msgfile;proerror status;prostringtowstring(msgfile,"dat01.dat");uicmdcmdid pushbuttonid02;status=procmdactionadd("button02_act",(uicmdcmdactfn)fun0

35、2,uicmdpriodefault,accessdefault,pro_b_false,pro_b_true,&pushbuttonid02);promenubarmenupushbuttonadd("zhucaidan","button02","imgs04","imgs05",null,pro_b_false,pushbuttonid02,msgfile);procmdiconset(pushbuttonid02,"icon02.gif");說(shuō)明:dat01.dat為資源文件,在下

36、文中將給出定義;icon02.gif圖標(biāo)文件。fun02為點(diǎn)擊功能鍵后執(zhí)行操作的函數(shù),將在下文中定義。2.獲取當(dāng)前工作環(huán)境,若為零件或組件工作環(huán)境則功能鍵處于激活狀態(tài)(功能鍵可用),否則功能鍵不激活。status=procmdactionadd("button02_act",(uicmdcmdactfn)fun02,uicmdpriodefault,accessdefault,pro_b_false,pro_b_true,&pushbuttonid02);上文語(yǔ)句中accessdefault為函數(shù)變量,作用是決定功能鍵是否激活(是否可用),函數(shù)返回值為:access

37、_available(功能鍵激活參數(shù));access_unavailable(功能鍵不激活參數(shù))。按照程序構(gòu)架的要求,決定功能鍵是否激活的是pro/engineer系統(tǒng)的當(dāng)前工作環(huán)境。當(dāng)工作環(huán)境為零件(pro_mode_part)或組件(pro_mode_assembly)時(shí)功能鍵激活,否則不激活。使用promodecurrentget()函數(shù)獲取pro/engineer系統(tǒng)的當(dāng)前工作環(huán)境,判斷并返回合適的返回值。對(duì)accessdefault函數(shù)的定義如下:uicmdaccessstate accessdefault(uicmdaccessmode)promode mode;proerror

38、status;status=promodecurrentget(&mode);if (mode=pro_mode_part|mode=pro_mode_assembly)return access_available;else return access_unavailable;3.pro/engineer系統(tǒng)在零件或組件工作環(huán)境下,點(diǎn)擊功能鍵獲到當(dāng)前環(huán)境下文件名并賦值給變量。使用promdlcurrentget()函數(shù)獲得當(dāng)前工作環(huán)境句柄,使用promdlnameget()函數(shù)獲取當(dāng)前環(huán)境下的文件名,賦值給變量current_name,其實(shí)現(xiàn)語(yǔ)句為:proname current_n

39、ame;promdl mdlhandle;promdlcurrentget(&mdlhandle);promdlnameget(mdlhandle,current_name);使pro/engineer系統(tǒng)當(dāng)前工作文件名賦值給變量current_name,供后續(xù)程序使用。4.彈出程序窗口,定義ui界面的參數(shù)和功能,將文件名變量賦值給窗口中文件名欄(可輸入更改)。此動(dòng)作在點(diǎn)擊功能鍵后觸發(fā),即為void fun02()函數(shù),其返回值為空。上一流程中的語(yǔ)句應(yīng)包含在void fun02()函數(shù)內(nèi)。使用prouidialogcreate()函數(shù)調(diào)用pro/e標(biāo)準(zhǔn)ui界面文件res02.res;使

40、用prouipushbuttonactivateactionset()函數(shù)定義ui界面內(nèi)各按鈕所執(zhí)行的動(dòng)作;使用prouidialogcloseactionset()函數(shù)定義取消按鈕;使用prouiinputpanelvalueset()函數(shù)對(duì)ui界面內(nèi)文件名輸入欄賦值(初始值,可重新輸入更改);使用prouidialogactivate()函數(shù)顯示并激活ui界面;ui界面激活后使用prouidialogdestroy()函數(shù)清除內(nèi)存中的對(duì)話框資源。對(duì)void fun02()函數(shù)的完整定義如下:void fun02()proname current_name;promdl mdlhandle;

41、int dialog_status;promdlcurrentget(&mdlhandle);promdlnameget(mdlhandle,current_name);prouidialogcreate("res02","res02");prouidialogcloseactionset("res02",cancel_action,null);prouipushbuttonactivateactionset("res02","ok",ok_action,null);prouipushb

42、uttonactivateactionset("res02","cancel",cancel_action,null);prouiinputpanelvalueset("res02","inputtext",current_name);prouidialogactivate("res02",&dialog_status);prouidialogdestroy("res02");說(shuō)明:以上程序段調(diào)用了ui資源文件res02.res,此文件將在下文中定義;程序段中&quo

43、t;ok_action"、" cancel_action"分別為點(diǎn)擊確定、取消按鈕后執(zhí)行的動(dòng)作函數(shù)。5.按照窗口中所列選項(xiàng)選擇圖幅、圖框、更改文件名等。實(shí)現(xiàn)過(guò)程如下:/定義過(guò)程中所需變量:int w_id,p_count,a,b,i,j=0;promdl solid,*p_model_array;promdldata data01;promodel model;proname dwg_temp,name,names;wchar_t *name_temp;prodrawing drawing;prodwgcreateerrs errors;char strtmppr

44、o_path_size, *tf, *tk, name_stringpro_name_size, *tzmb;/獲取新建工程圖文件名:prouiinputpanelvalueget("res02","inputtext",&name_temp);/獲取圖幅參數(shù):prouiradiogroupselectednamesget("res02","selecttype1",&a,&tf);/獲取圖框參數(shù):prouiradiogroupselectednamesget("res02&quo

45、t;,"selecttype2",&b,&tk);/獲取工程圖模板:tzmb=strcat(*tf,*tk);/變量的賦值,變量類型轉(zhuǎn)換:prostringtowstring(dwg_temp,tzmb);prowstringtostring(name_string,name_temp);prostringtowstring(name,name_string);promdlcurrentget(&solid);promdldataget(solid,&data01);prowstringtostring(strtmp,)

46、;prostringtowstring(,strtmp);prowstringtostring(strtmp,data01.type);prostringtowstring(model.type,strtmp);6.點(diǎn)擊確定按鈕程序開始配置工作或點(diǎn)擊取消結(jié)束程序工作。確定按鈕對(duì)應(yīng)的動(dòng)作函數(shù)為:void ok_action(char* dialog,char* componets,proappdata data)上一流程中的各語(yǔ)句應(yīng)包含在ok_action()函數(shù)中,并且下一流程也應(yīng)包含其中。7.獲取pro/engineer工作進(jìn)程中是否已存在當(dāng)前工程圖,若存在則直接打開并激

47、活工程圖。使用prosessionmdllist()函數(shù)獲取pro/engineer系統(tǒng)工作進(jìn)程列表,使用for語(yǔ)句遍歷進(jìn)程列表,若存在當(dāng)前文件名的工程圖則使用promdldisplay()函數(shù)顯示進(jìn)程,并使用promdlwindowget()函數(shù)獲取進(jìn)程id,最后使用prowindowactivate()函數(shù)激活窗口,使用prowindowrepaint()函數(shù)刷新界面。程序過(guò)程如下:prosessionmdllist(pro_mdl_drawing,&p_model_array,&p_count);for(i=0,j=0;i<p_count;i+)promdlname

48、get(p_model_arrayi,names);if(name=names)j+;promdldisplay(p_model_arrayi);promdlwindowget(p_model_arrayi,&w_id);prowindowactivate(w_id);prowindowrepaint(w_id);8.若pro/engineer工作進(jìn)程中不存在當(dāng)前工程圖則按照用戶的選擇調(diào)用相關(guān)的格式文件和圖幅模板,生成工程圖。生成工程圖的語(yǔ)句如下:proobjectwindowcreate(name,pro_drawing,&w_id);prodrawingfromtmpltc

49、reate(name,dwg_temp,&model,prodwgcreate_display_drawing,&drawing,&errors);9.激活工程圖,釋放程序內(nèi)存,結(jié)束程序工作。此功能實(shí)現(xiàn)語(yǔ)句如下:/激活窗口:prowindowactivate(w_id);/刷新界面:prowindowrepaint(w_id);/結(jié)束程序:prouidialogexit("res02",1);10.整理以上功能代碼,編寫程序如下:/文件名:main.cpp#include "windows.h"#include "pro

50、util.h"#include "promenu.h"#include "promessage.h"#include "promenubar.h"#include "prouidialog.h"#include "prouipushbutton.h"#include "protoolkit.h"#include "promenubar.h"#include "prouicheckbutton.h"#include "

51、prouilist.h"#include "prouispinbox.h"#include "prouilabel.h"#include "prouiradiogroup.h"#include "proarray.h"#include "prouiinputpanel.h"#include "malloc.h"#include "stdlib.h"#include "pro2dentdef.h"#include "p

52、roelement.h"#include "profeatform.h"#include "profeattype.h"#include "prostdsection.h"#include "prowindows.h"#include "promodelitem.h"#include "prorevolve.h"#include "prosolid.h"#include "proelempath.h"#include &quo

53、t;prodtmpln.h"#include "prodrawing.h"#include "promdl.h"#define pro_use_var_args1void cancel_action(char* dialog,char* componets,proappdata data);void ok_action(char* dialog,char* componets,proappdata data);void fun02();uicmdaccessstate accessdefault(uicmdaccessmode);extern

54、"c" int user_initialize()profilename msgfile;proerror status;prostringtowstring(msgfile,"dat01.dat");uicmdcmdid pushbuttonid02;status=procmdactionadd("button02_act",(uicmdcmdactfn)fun02,uicmdpriodefault,accessdefault,pro_b_false,pro_b_true,&pushbuttonid02);promenuba

55、rmenupushbuttonadd("zhucaidan","button02","imgs04","imgs05",null,pro_b_false,pushbuttonid02,msgfile);procmdiconset(pushbuttonid02,"icon02.gif");return status;extern "c" void user_terminate()uicmdaccessstate accessdefault(uicmdaccessmode)pro

56、mode mode;proerror status;status=promodecurrentget(&mode);if (mode=pro_mode_part|mode=pro_mode_assembly)return access_available;else return access_unavailable;void fun02()proname current_name;promdl mdlhandle;int dialog_status;promdlcurrentget(&mdlhandle);promdlnameget(mdlhandle,current_name);prouidialogcreate("res02","res02");prouidialogcloseactionset("res02",cancel_action,null);prouipushbuttonactivateactionset("res02","ok",ok_acti

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論