版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
UG軟件二次開(kāi)發(fā)基礎(chǔ)卜昆西北工業(yè)大學(xué)現(xiàn)代設(shè)計(jì)與集成制造技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室2MenuScript菜單定制
MenuScript是UG/Open二次開(kāi)發(fā)軟件包中的一部分,它是一套用于定義UG菜單的腳本語(yǔ)言。 UG自身的菜單也是用MenuScript寫成的,用戶使用MenuScript可以修改UG的菜單結(jié)構(gòu),添加或刪除和定制菜單,以及改變菜單的顯示文本或響應(yīng)行為等。
3ufsta
可利用UIStyler所定制的界面來(lái)實(shí)現(xiàn)面向?qū)ο蟆⒔换ナ降牟僮鬟^(guò)程沒(méi)有明顯的執(zhí)行過(guò)程整個(gè)程序除回調(diào)函數(shù)的注冊(cè)過(guò)程外,都是純粹事件驅(qū)動(dòng)的每一個(gè)界面上的控件都可對(duì)應(yīng)一個(gè)回調(diào)函數(shù),當(dāng)用戶與相應(yīng)的UI對(duì)象發(fā)生交互時(shí),此對(duì)應(yīng)的回調(diào)函數(shù)就被執(zhí)行。
4UF的系統(tǒng)設(shè)置
方法一
打開(kāi)UG目錄下的\Ugii\ugii_env.dat文件,在文件中找到#UG_VENDOR_DIR=${UGALLIANCE_DIR}\vendor
#UGII_SITE_DIR=${UGALLIANCE_DIR}\site
5UF的系統(tǒng)設(shè)置方法一 將它們前面的注釋符號(hào)“#”刪除。它們指明了供用戶放置二次開(kāi)發(fā)文件的目錄。
當(dāng)刪掉“#”號(hào)后,UG/Open才能從這些目錄下得到二次開(kāi)發(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啟動(dòng)時(shí)需載入的文件,如
*.men
——
菜單腳本文件
*.dll
——
ufsta()的動(dòng)態(tài)鏈接庫(kù)文件8UF的系統(tǒng)設(shè)置方法一application目錄 則存放具體功能擴(kuò)展的程序文件,如
*.dlg——
對(duì)話框資源文件等
9
UG設(shè)的這兩個(gè)目錄site和vendor,是為了供給不同等級(jí)的開(kāi)發(fā)者使用:
vendor下放置UG指定開(kāi)發(fā)商的二次開(kāi)發(fā)產(chǎn)品site下則存放其余開(kāi)發(fā)者的產(chǎn)品
vendor目錄下同類內(nèi)容的文件要比site目錄下的優(yōu)先載入。
10
在ugii_env.dat文件中還有一條語(yǔ)句,是用來(lái)設(shè)置存放用戶自己二次開(kāi)發(fā)內(nèi)容的目錄: UGII_USER_DIR=${HOME}同樣將其前面的“#”號(hào)刪除,并且在其后面添上用戶的目錄
例:UGII_USER_DIR=f:\user 在此目錄下必須有startup和application目錄,它的優(yōu)先級(jí)更低。
11UF的系統(tǒng)設(shè)置方法二
在Windows
環(huán)境下,在我的電腦屬性高級(jí)環(huán)境變量系統(tǒng)變量對(duì)話框中
,設(shè)置用戶變量UGII_USER_DIR為用戶二次開(kāi)發(fā)內(nèi)容的目錄。 例:用戶目錄為f:\blk,在blk下設(shè)置有startup和application目錄。1213編程框架
定制菜單 打開(kāi)notepad,編寫菜單腳本程序(MenuScript),保存為*.men。 用來(lái)定制UG主菜單,以使用戶可以調(diào)用所作的UI界面,實(shí)現(xiàn)交互式操作。
14菜單腳本文件
菜單腳本文件*.men必須存放到startup目錄中
15VERSION 120/*兼容UGv12的菜單腳本*/EDITUG_GATEWAY_MAIN_MENUBAR /*編輯UG主菜單*/HIDEUG_HELP /*隱藏Help菜單*/BEFOREUG_HELP /*表示第一級(jí)菜單位于Help菜單之前*/CASCADE_BUTTON
MENU_ID_1
/*定義第一級(jí)菜單的ID,它是下拉菜單*/LABELTEST /*定義菜單的標(biāo)題*/END_OF_BEFORE /*結(jié)束第一級(jí)菜單的編輯*/MENUMENU_ID_1
/*編輯第二級(jí)菜單,是MENU_ID_1的下拉菜單*/CASCADE_BUTTONMENU_ID_1_1
/*定義第二級(jí)菜單的ID,它是下拉菜單*/LABELAPITEST /*定義菜單標(biāo)題*/SEPARATOR /*菜單中的分隔線*/BUTTONMENU_ID_1_2
/*定義第二級(jí)菜單的ID,它不是下拉菜單*/LABELWINDOWSCALCULATORTEST/*定義菜單標(biāo)題*/ACTIONS“CALC”
/*運(yùn)行windows的計(jì)算器*/END_OF_MENU /*結(jié)束第二級(jí)菜單的編輯*/MENUMENU_ID_1_1
/*編輯第三級(jí)菜單,是MENU_ID_1_1的下拉菜單*/BUTTONMENU_ID_1_1_1
/*定義第三級(jí)菜單的ID,它不是下拉菜單*/LABELRUNAPIPROGRAM /*定義菜單標(biāo)題*/ACTIONSapi_test.dlg /*運(yùn)行UIStyler所編寫的界面api_test.dlg*/END_OF_MENU /*結(jié)束第三級(jí)菜單的編輯*/16用戶定制的主界面
例1生成的用戶界面17VERSION120EDITUG_GATEWAY_MAIN_MENUBARBEFOREUG_HELP /*表示第一級(jí)菜單位于Help菜單之前*/
CASCADE_BUTTONUISTYLER_DLG_CASCADE_BTN
/*定義第一級(jí)菜單的ID,它是下拉菜單*/
LABELJiemianEND_OF_BEFORE
MENUUISTYLER_DLG_CASCADE_BTN BUTTONSET LABELSetmenu ACTIONSset.dlg
BUTTONAPPLYLABELApply ACTIONSapply.dlgEND_OF_MENU18用戶定制的主界面例2生成的用戶界面19編程框架定制界面
啟動(dòng)UG,點(diǎn)擊Application→UserInterfaceStyler,出現(xiàn)一個(gè)可視界面的開(kāi)發(fā)工具,在界面上可以任意添加UI對(duì)象,在保存以后會(huì)生成三個(gè)文件:*_template.c、*.h、*.dlg,分別是界面的C程序模板和界面的資源文件。
20UIStyler用戶界面制作工具
UG/Open二次開(kāi)發(fā)包中包含了用于開(kāi)發(fā)用戶界面的工具UIStyler,它位于Application→UserInterfaceStyler 它提供了全部UG的標(biāo)準(zhǔn)可視控件,能制作UG風(fēng)格的交互界面。
21UIStyler用戶界面制作工具用戶在UserInterfaceStyler中可以自由添加各種控件,控制各種控件在對(duì)話框中的排列順序。22UIStyler用戶界面制作工具編輯完對(duì)話框后保存時(shí),會(huì)自動(dòng)產(chǎn)生三個(gè)文件*.dlg——對(duì)話框資源文件
*_template.c和*.h——UF的C源碼模板文件。23UIStyler用戶界面制作工具用戶只須將*_template.c和*.h添加入工程,再向C源碼模板中的各回調(diào)函數(shù)框架內(nèi)添加實(shí)現(xiàn)自己功能的代碼,即可編譯、鏈接成動(dòng)態(tài)鏈接庫(kù)*.dll。
24對(duì)話框控件資源編輯器對(duì)話框?qū)ο鬄g覽器25UIStyler使用注意
對(duì)于每個(gè)對(duì)話框的PrefixName最好有表達(dá)其實(shí)際意義的名字,以免在程序中混淆;對(duì)于每個(gè)控件的Identifier最好也有表達(dá)其實(shí)際意義的名字;262728UIStyler使用注意
對(duì)于每個(gè)對(duì)話框的LaunchDialogFrom,應(yīng)根據(jù)不同的入口方式設(shè)置不同內(nèi)容。All——用戶可以在程序中設(shè)置入口方式;Callback——表示此對(duì)話框是從其它對(duì)話框的回調(diào)函數(shù)中進(jìn)入,即由別的對(duì)話框的控件啟動(dòng)它;Menu——表示此對(duì)話框是從UG菜單中調(diào)出;User
Exit——表示由其它的入口進(jìn)入。
2930UIStyler使用注意
對(duì)于控件的Callbacks回調(diào)函數(shù)設(shè)置中,CreatesDialog檢查框表示此回調(diào)函數(shù)是否可以調(diào)出下一個(gè)對(duì)話框。Attachments是用來(lái)設(shè)置控件在對(duì)話框中的位置。
313233對(duì)話框編輯示例
34用戶界面制作方法35用戶定制菜單的制作使用第二個(gè)菜單腳本文件
在此例中,用戶定制的菜單Jiemian包含兩項(xiàng)內(nèi)容,即Setmenu和Apply,它們都會(huì)彈出對(duì)話框,其中Apply的對(duì)話框Apply_app還會(huì)產(chǎn)生子對(duì)話框app。
3637用戶界面制作方法單擊UG的Application→UserInterfaceStyler,則出現(xiàn)制作用戶界面的UG界面或起始→所有應(yīng)用模塊→用戶界面樣式編輯器3839用戶界面制作方法如果是建立新的對(duì)話框,則可以直接使用UG提供的可視控件來(lái)生成需要的對(duì)話框。 單擊需要的控件,則在左邊的對(duì)話框模型中生成相應(yīng)的按鈕或其它所要求的形式,同時(shí)在界面的右邊對(duì)話框參數(shù)控制區(qū)中的對(duì)象瀏覽區(qū)中Dialog-CHANGE下立即為所產(chǎn)生的對(duì)象自動(dòng)起一個(gè)名字。40用戶界面制作方法如果選中Dialog-CHANGE,即可在Attributes的DialogTitle框中為用戶的對(duì)話框起名字,例如APPLY,則Dialog-CHANGE變?yōu)镈ialog-APPLY4142用戶界面制作方法在PrefixName框中也輸入相同的名稱
主要為了在生成的*_template.c程序中不會(huì)由于沒(méi)有起名而所有的變量前綴都是CHANGE,容易由于為不同的對(duì)話框中的變量起相同名稱而造成在程序調(diào)試中產(chǎn)生變量重復(fù)定義。
43用戶界面制作方法在Callbacks項(xiàng)目中確定是否有子對(duì)話框產(chǎn)生,若有,則哪些操作可控制產(chǎn)生子對(duì)話框。在生成控件的時(shí)候,在Callbacks項(xiàng)目中可控制是否可通過(guò)操作此控件而產(chǎn)生子對(duì)話框,在CreatesDialog前打鉤,則產(chǎn)生子對(duì)話框,見(jiàn)后面圖,此時(shí)需要在Activat欄中輸入相應(yīng)的控制參數(shù),例如ACTION_1_APP_cb。44
圖中表示Apply和OK的操作都可產(chǎn)生子對(duì)話框。則在apply_template.c程序中會(huì)產(chǎn)生相應(yīng)的函數(shù)框架APPLY_ok_cb和APPLY_apply_cb。45用戶界面制作方法對(duì)話框的各控件生成完畢時(shí),必須在File菜單中存儲(chǔ)該對(duì)話框,并選定存儲(chǔ)路徑(必須在前面生成的Application文件夾中存儲(chǔ)),此時(shí)有信息提示生成了三個(gè)文件。
46用戶界面制作方法為菜單Jiemian中包含的兩項(xiàng)內(nèi)容(即Setmenu和Apply)分別建立工程 例如apply和Set,在加入*_template.c和*.h程序時(shí)把相應(yīng)的程序放入同一工程(包括對(duì)話框及子對(duì)話框產(chǎn)生的程序)。
47界面程序調(diào)試在生成的set_template.c程序中需要做如下修改:建立工程SET,把set_template.c和set.h文件加入工程,把程序中#include
<set.h>改成#include“set.h”。482、把下面代碼中的#ifdef和#endif語(yǔ)句刪除,則SET的彈出菜單會(huì)出現(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”。把要生成子對(duì)話框的操作變量前的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語(yǔ)句刪除,則APPLY的彈出菜單會(huì)出現(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語(yǔ)句刪除, 把#include<app.h>改成#include“app.h”:
#ifdefDISPLAY_FROM_CALLBACKexternint<enteravaliduserexithere>(int*response){
代碼由UG自動(dòng)生成}#endif/*DISPLAY_FROM_CALLBACK*/
54界面程序調(diào)試在apply_template.c中申明函數(shù)app,在控制彈出app對(duì)話框的操作函數(shù)中添加函數(shù)app,加在/*-Enteryourcallbackcodehere-*/后。并在apply_template.c中增加#include"malloc.h"。
在此例中產(chǎn)生app對(duì)話框的操作函數(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)試啟動(dòng)UG,則出現(xiàn)用戶定制界面,并可彈出定制的對(duì)話框。用戶的應(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. 本站所有資源如無(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球晶圓檢測(cè)用物鏡行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)鉆頭修磨機(jī)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球醫(yī)療器械用注塑機(jī)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 主講人鄭長(zhǎng)花
- 第06講 我們生活的大洲-亞洲(解析版)
- 2025原料采購(gòu)合同的模板
- 2025個(gè)人保證擔(dān)保借款合同
- 門面房房屋租賃合同范本
- 工地配餐合同協(xié)議書范本
- it運(yùn)維外包服務(wù)合同
- 畢業(yè)設(shè)計(jì)(論文)-液體藥品灌裝機(jī)的設(shè)計(jì)與制造
- 二年級(jí)下冊(cè)數(shù)學(xué)教案 -《數(shù)一數(shù)(二)》 北師大版
- 稅收流失論文-我國(guó)個(gè)人所得稅稅收流失問(wèn)題及對(duì)策研究
- 長(zhǎng)榮股份:投資性房地產(chǎn)公允價(jià)值評(píng)估報(bào)告
- 2022年菏澤醫(yī)學(xué)專科學(xué)校單招綜合素質(zhì)試題及答案解析
- 銀行內(nèi)部舉報(bào)管理規(guī)定
- 平面幾何強(qiáng)化訓(xùn)練題集:初中分冊(cè)數(shù)學(xué)練習(xí)題
- 項(xiàng)目獎(jiǎng)金分配獎(jiǎng)勵(lì)制度和方案完整版
- 支氣管鏡試題
- 陰道鏡幻燈課件
- 現(xiàn)代漢語(yǔ)詞匯學(xué)精選課件
評(píng)論
0/150
提交評(píng)論