




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
UG軟件二次開發(fā)基礎(chǔ)卜昆西北工業(yè)大學(xué)現(xiàn)代設(shè)計(jì)與集成制造技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室2MenuScript菜單定制
MenuScript是UG/Open二次開發(fā)軟件包中的一部分,它是一套用于定義UG菜單的腳本語言。 UG自身的菜單也是用MenuScript寫成的,用戶使用MenuScript可以修改UG的菜單結(jié)構(gòu),添加或刪除和定制菜單,以及改變菜單的顯示文本或響應(yīng)行為等。
3ufsta
可利用UIStyler所定制的界面來實(shí)現(xiàn)面向?qū)ο蟆⒔换ナ降牟僮鬟^程沒有明顯的執(zhí)行過程整個(gè)程序除回調(diào)函數(shù)的注冊過程外,都是純粹事件驅(qū)動的每一個(gè)界面上的控件都可對應(yīng)一個(gè)回調(diào)函數(shù),當(dāng)用戶與相應(yīng)的UI對象發(fā)生交互時(shí),此對應(yīng)的回調(diào)函數(shù)就被執(zhí)行。
4UF的系統(tǒng)設(shè)置
方法一
打開UG目錄下的\Ugii\ugii_env.dat文件,在文件中找到#UG_VENDOR_DIR=${UGALLIANCE_DIR}\vendor
#UGII_SITE_DIR=${UGALLIANCE_DIR}\site
5UF的系統(tǒng)設(shè)置方法一 將它們前面的注釋符號“#”刪除。它們指明了供用戶放置二次開發(fā)文件的目錄。
當(dāng)刪掉“#”號后,UG/Open才能從這些目錄下得到二次開發(fā)的功能擴(kuò)充。
6UF的系統(tǒng)設(shè)置方法一這兩個(gè)目錄
D:\UGS\NX4.0\UGALLIANCE\site
D:\UGS\NX4.0\UGALLIANCE\vendor
功能和結(jié)構(gòu)是完全相同的,都有startup和application這兩個(gè)目錄。7UF的系統(tǒng)設(shè)置方法一startup目錄 存放UG啟動時(shí)需載入的文件,如
*.men
——
菜單腳本文件
*.dll
——
ufsta()的動態(tài)鏈接庫文件8UF的系統(tǒng)設(shè)置方法一application目錄 則存放具體功能擴(kuò)展的程序文件,如
*.dlg——
對話框資源文件等
9
UG設(shè)的這兩個(gè)目錄site和vendor,是為了供給不同等級的開發(fā)者使用:
vendor下放置UG指定開發(fā)商的二次開發(fā)產(chǎn)品site下則存放其余開發(fā)者的產(chǎn)品
vendor目錄下同類內(nèi)容的文件要比site目錄下的優(yōu)先載入。
10
在ugii_env.dat文件中還有一條語句,是用來設(shè)置存放用戶自己二次開發(fā)內(nèi)容的目錄: UGII_USER_DIR=${HOME}同樣將其前面的“#”號刪除,并且在其后面添上用戶的目錄
例:UGII_USER_DIR=f:\user 在此目錄下必須有startup和application目錄,它的優(yōu)先級更低。
11UF的系統(tǒng)設(shè)置方法二
在Windows
環(huán)境下,在我的電腦屬性高級環(huán)境變量系統(tǒng)變量對話框中
,設(shè)置用戶變量UGII_USER_DIR為用戶二次開發(fā)內(nèi)容的目錄。 例:用戶目錄為f:\blk,在blk下設(shè)置有startup和application目錄。1213編程框架
定制菜單 打開notepad,編寫菜單腳本程序(MenuScript),保存為*.men。 用來定制UG主菜單,以使用戶可以調(diào)用所作的UI界面,實(shí)現(xiàn)交互式操作。
14菜單腳本文件
菜單腳本文件*.men必須存放到startup目錄中
15VERSION 120/*兼容UGv12的菜單腳本*/EDITUG_GATEWAY_MAIN_MENUBAR /*編輯UG主菜單*/HIDEUG_HELP /*隱藏Help菜單*/BEFOREUG_HELP /*表示第一級菜單位于Help菜單之前*/CASCADE_BUTTON
MENU_ID_1
/*定義第一級菜單的ID,它是下拉菜單*/LABELTEST /*定義菜單的標(biāo)題*/END_OF_BEFORE /*結(jié)束第一級菜單的編輯*/MENUMENU_ID_1
/*編輯第二級菜單,是MENU_ID_1的下拉菜單*/CASCADE_BUTTONMENU_ID_1_1
/*定義第二級菜單的ID,它是下拉菜單*/LABELAPITEST /*定義菜單標(biāo)題*/SEPARATOR /*菜單中的分隔線*/BUTTONMENU_ID_1_2
/*定義第二級菜單的ID,它不是下拉菜單*/LABELWINDOWSCALCULATORTEST/*定義菜單標(biāo)題*/ACTIONS“CALC”
/*運(yùn)行windows的計(jì)算器*/END_OF_MENU /*結(jié)束第二級菜單的編輯*/MENUMENU_ID_1_1
/*編輯第三級菜單,是MENU_ID_1_1的下拉菜單*/BUTTONMENU_ID_1_1_1
/*定義第三級菜單的ID,它不是下拉菜單*/LABELRUNAPIPROGRAM /*定義菜單標(biāo)題*/ACTIONSapi_test.dlg /*運(yùn)行UIStyler所編寫的界面api_test.dlg*/END_OF_MENU /*結(jié)束第三級菜單的編輯*/16用戶定制的主界面
例1生成的用戶界面17VERSION120EDITUG_GATEWAY_MAIN_MENUBARBEFOREUG_HELP /*表示第一級菜單位于Help菜單之前*/
CASCADE_BUTTONUISTYLER_DLG_CASCADE_BTN
/*定義第一級菜單的ID,它是下拉菜單*/
LABELJiemianEND_OF_BEFORE
MENUUISTYLER_DLG_CASCADE_BTN BUTTONSET LABELSetmenu ACTIONSset.dlg
BUTTONAPPLYLABELApply ACTIONSapply.dlgEND_OF_MENU18用戶定制的主界面例2生成的用戶界面19編程框架定制界面
啟動UG,點(diǎn)擊Application→UserInterfaceStyler,出現(xiàn)一個(gè)可視界面的開發(fā)工具,在界面上可以任意添加UI對象,在保存以后會生成三個(gè)文件:*_template.c、*.h、*.dlg,分別是界面的C程序模板和界面的資源文件。
20UIStyler用戶界面制作工具
UG/Open二次開發(fā)包中包含了用于開發(fā)用戶界面的工具UIStyler,它位于Application→UserInterfaceStyler 它提供了全部UG的標(biāo)準(zhǔn)可視控件,能制作UG風(fēng)格的交互界面。
21UIStyler用戶界面制作工具用戶在UserInterfaceStyler中可以自由添加各種控件,控制各種控件在對話框中的排列順序。22UIStyler用戶界面制作工具編輯完對話框后保存時(shí),會自動產(chǎn)生三個(gè)文件*.dlg——對話框資源文件
*_template.c和*.h——UF的C源碼模板文件。23UIStyler用戶界面制作工具用戶只須將*_template.c和*.h添加入工程,再向C源碼模板中的各回調(diào)函數(shù)框架內(nèi)添加實(shí)現(xiàn)自己功能的代碼,即可編譯、鏈接成動態(tài)鏈接庫*.dll。
24對話框控件資源編輯器對話框?qū)ο鬄g覽器25UIStyler使用注意
對于每個(gè)對話框的PrefixName最好有表達(dá)其實(shí)際意義的名字,以免在程序中混淆;對于每個(gè)控件的Identifier最好也有表達(dá)其實(shí)際意義的名字;262728UIStyler使用注意
對于每個(gè)對話框的LaunchDialogFrom,應(yīng)根據(jù)不同的入口方式設(shè)置不同內(nèi)容。All——用戶可以在程序中設(shè)置入口方式;Callback——表示此對話框是從其它對話框的回調(diào)函數(shù)中進(jìn)入,即由別的對話框的控件啟動它;Menu——表示此對話框是從UG菜單中調(diào)出;User
Exit——表示由其它的入口進(jìn)入。
2930UIStyler使用注意
對于控件的Callbacks回調(diào)函數(shù)設(shè)置中,CreatesDialog檢查框表示此回調(diào)函數(shù)是否可以調(diào)出下一個(gè)對話框。Attachments是用來設(shè)置控件在對話框中的位置。
313233對話框編輯示例
34用戶界面制作方法35用戶定制菜單的制作使用第二個(gè)菜單腳本文件
在此例中,用戶定制的菜單Jiemian包含兩項(xiàng)內(nèi)容,即Setmenu和Apply,它們都會彈出對話框,其中Apply的對話框Apply_app還會產(chǎn)生子對話框app。
3637用戶界面制作方法單擊UG的Application→UserInterfaceStyler,則出現(xiàn)制作用戶界面的UG界面或起始→所有應(yīng)用模塊→用戶界面樣式編輯器3839用戶界面制作方法如果是建立新的對話框,則可以直接使用UG提供的可視控件來生成需要的對話框。 單擊需要的控件,則在左邊的對話框模型中生成相應(yīng)的按鈕或其它所要求的形式,同時(shí)在界面的右邊對話框參數(shù)控制區(qū)中的對象瀏覽區(qū)中Dialog-CHANGE下立即為所產(chǎn)生的對象自動起一個(gè)名字。40用戶界面制作方法如果選中Dialog-CHANGE,即可在Attributes的DialogTitle框中為用戶的對話框起名字,例如APPLY,則Dialog-CHANGE變?yōu)镈ialog-APPLY4142用戶界面制作方法在PrefixName框中也輸入相同的名稱
主要為了在生成的*_template.c程序中不會由于沒有起名而所有的變量前綴都是CHANGE,容易由于為不同的對話框中的變量起相同名稱而造成在程序調(diào)試中產(chǎn)生變量重復(fù)定義。
43用戶界面制作方法在Callbacks項(xiàng)目中確定是否有子對話框產(chǎn)生,若有,則哪些操作可控制產(chǎn)生子對話框。在生成控件的時(shí)候,在Callbacks項(xiàng)目中可控制是否可通過操作此控件而產(chǎn)生子對話框,在CreatesDialog前打鉤,則產(chǎn)生子對話框,見后面圖,此時(shí)需要在Activat欄中輸入相應(yīng)的控制參數(shù),例如ACTION_1_APP_cb。44
圖中表示Apply和OK的操作都可產(chǎn)生子對話框。則在apply_template.c程序中會產(chǎn)生相應(yīng)的函數(shù)框架APPLY_ok_cb和APPLY_apply_cb。45用戶界面制作方法對話框的各控件生成完畢時(shí),必須在File菜單中存儲該對話框,并選定存儲路徑(必須在前面生成的Application文件夾中存儲),此時(shí)有信息提示生成了三個(gè)文件。
46用戶界面制作方法為菜單Jiemian中包含的兩項(xiàng)內(nèi)容(即Setmenu和Apply)分別建立工程 例如apply和Set,在加入*_template.c和*.h程序時(shí)把相應(yīng)的程序放入同一工程(包括對話框及子對話框產(chǎn)生的程序)。
47界面程序調(diào)試在生成的set_template.c程序中需要做如下修改:建立工程SET,把set_template.c和set.h文件加入工程,把程序中#include
<set.h>改成#include“set.h”。482、把下面代碼中的#ifdef和#endif語句刪除,則SET的彈出菜單會出現(xiàn)。#ifdefMENUBAR_COMMENTED_OUTexternvoidufsta(char*param,int*retcode,intrlen){interror_code;if((UF_initialize())!=0)return;if((error_code=UF_MB_add_styler_actions(actions))!=0){charfail_message[133];UF_get_fail_message(error_code,fail_message);printf("%s\n",fail_message);}UF_terminate();return;}#endif/*MENUBAR_COMMENTED_OUT*/3、編譯,聯(lián)編,把set.dll拷貝到startup目錄中。49界面程序調(diào)試50界面程序調(diào)試在生成的apply_template.c程序中需要做如下修改:建立工程APPLY,加入apply_template.c和apply.h文件,把程序中#include
<apply.h>改成#include“apply.h”。把要生成子對話框的操作變量前的0改成151界面程序調(diào)試StaticUF_STYLER_callback_info_tAPPLY_cbs[APPLY_CB_COUNT]={{UF_STYLER_DIALOG_INDEX,UF_STYLER_OK_CB,1,APPLY_ok_cb},{UF_STYLER_DIALOG_INDEX,UF_STYLER_APPLY_CB,1,APPLY_apply_cb},{UF_STYLER_NULL_OBJECT,UF_STYLER_NO_CB,0,0}};52把下面代碼中的#ifdef和#endif語句刪除,則APPLY的彈出菜單會出現(xiàn)。#ifdefMENUBAR_COMMENTED_OUTexternvoidufsta(char*param,int*retcode,intrlen){interror_code;if((UF_initialize())!=0)return;if((error_code=UF_MB_add_styler_actions(actions))!=0){charfail_message[133];UF_get_fail_message(error_code,fail_message);printf("%s\n",fail_message);}UF_terminate();return;}#endif/*MENUBAR_COMMENTED_OUT*/53把a(bǔ)pp_template.c和app.h文件加入APPLY中, 給下面的函數(shù)起名,只需把紅色部分用用戶名 稱替換,例如 externintapp(int*response), 并把#ifdef和#endif語句刪除, 把#include<app.h>改成#include“app.h”:
#ifdefDISPLAY_FROM_CALLBACKexternint<enteravaliduserexithere>(int*response){
代碼由UG自動生成}#endif/*DISPLAY_FROM_CALLBACK*/
54界面程序調(diào)試在apply_template.c中申明函數(shù)app,在控制彈出app對話框的操作函數(shù)中添加函數(shù)app,加在/*-Enteryourcallbackcodehere-*/后。并在apply_template.c中增加#include"malloc.h"。
在此例中產(chǎn)生app對話框的操作函數(shù)為intAPPLY_ok_cb和intAPPLY_apply_cb
55intAPPLY_ok_cb(intdialog_id,void*client_data,UF_STYLER_item_value_type_p_tcallback_data){
int*res=malloc(2);
/*為函數(shù)app中的參數(shù)分配空間*//*MakesureUserFunctionisavailable.*/if(UF_initialize()!=0)return(UF_UI_CB_CONTINUE_DIALOG);
/*----Enteryourcallbackcodehere-----*/
app(res);UF_terminate();return(UF_UI_CB_EXIT_DIALOG);}56界面程序調(diào)試編譯,聯(lián)編,把a(bǔ)pply.dll拷貝到startup目錄中。57界面程序調(diào)試啟動UG,則出現(xiàn)用戶定制界面,并可彈出定制的對話框。用戶的應(yīng)用程序可在app函數(shù)中添加。5859添加用戶的應(yīng)用程序例如把前例中生成block的函數(shù)do_ugopen_api()加入
60相關(guān)程序加入同一工程
61externintapp(int*response){interror_code=0;if((error_code=UF_initialize())!=0)return(0);if((error_
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 全程獨(dú)家代賣合同范本
- 華帝櫥柜合同范例
- 組裝電腦銷售合同范本
- 單位電路維修合同范本
- 鋼結(jié)構(gòu)廠房拆除合同范本
- 吊頂線型燈采購合同范例
- 合同范本商務(wù)
- 變更臨時(shí)租賃合同范本
- 交車合同范本
- 倒運(yùn)費(fèi)合同范本
- 藥房品種類別及數(shù)量清單
- 玻璃工藝學(xué)第4章 玻璃的性質(zhì)
- 四川省藥械集中采購及醫(yī)藥價(jià)格監(jiān)測平臺操作指引
- 機(jī)關(guān)檔案管理工作培訓(xùn)PPT課件
- 大學(xué)生安全教育課件(ppt共41張)
- 初中物理人教版八年級下冊 第1節(jié)牛頓第一定律 課件
- 網(wǎng)站培訓(xùn)內(nèi)容trswcm65表單選件用戶手冊
- 監(jiān)理大綱(范本)
- 空調(diào)系統(tǒng)維保記錄表格模板
- 打印版-圓與二次函數(shù)綜合題精練(帶答案)
- 工程結(jié)算書標(biāo)準(zhǔn)
評論
0/150
提交評論