UG是一個當(dāng)今世界上最先進,緊密集成的CAD/CAM/CAE高端軟件,得到了廣泛應(yīng)用。然而,UG只是一個面向通用產(chǎn)品的平臺,沒有把用戶的特殊需要和設(shè)計經(jīng)驗集成到系統(tǒng)中,為此,有必要利用UG的二次開發(fā)工具對具體行業(yè)(產(chǎn)品)進行二次開發(fā),以提高設(shè)計效率,縮短設(shè)計周期。特別在模具行業(yè),相關(guān)的軟件較少,產(chǎn)品結(jié)構(gòu)復(fù)雜,設(shè)計要求高,部分零部件已形成系列化,開發(fā)出專用的沖模CAD系統(tǒng),以適應(yīng)系列化產(chǎn)品的設(shè)計,大大提高三維沖壓模設(shè)計效率,為并行化設(shè)計打下基礎(chǔ)。
一、UG二次開發(fā)的實現(xiàn)途徑
UG/Open是一系列UG開發(fā)工具的總稱,主要包括UG/OpenAPI、UG/OpenMenuScript、UG/OpenGRIP、UG/OpenUIStyle、UG/OpenC++、宏命令(Macro)等。主要介紹本文用到的以下幾個模塊。
1、用戶菜單腳本UG/OpenMenuScript
UG/OpenMenuScript提供一套用于定義UG菜單的腳本語言,UG的菜單也是用該語言寫成的,開發(fā)者使用該腳本語言可以修改UG界面的菜單結(jié)構(gòu),如添加、刪除和定制菜單,以及改變菜單的顯示文本或響應(yīng)行為(actions)等。菜單腳本文件的擴展名為*.men(文件).可以用微軟的記事本來制作,最后將擴展名由txt改為men即可。使用前,用記事本打開UG安裝目錄下的UGII\ugii_env.dat文件,找到#UGII_USER_DIR=${HOME}行,去掉#和${HOME},在=號后輸入自己的目錄,本論文為C:\GEAR,在此目錄下建立兩個文件夾,取名為startup和application。其中*.men文件必須位于"用戶目錄\startup目錄"中,UG啟動后會自動加載。
本文部分菜單腳本編輯語言主要的語法格式如下:
VERSION120//兼容Ugv12的菜單腳本
EDITUG_GATEWAY_MAIN_MENUBAR//編輯UG主菜單
BEFOREUG_HELP//第一級菜單位于Help菜單之前
CASCADE_BUTTONLAUNCH_CASCADE//菜單的ID
LABEL寧文波-沖模設(shè)計//定義主菜單的標題
END_OF_BEFORE//結(jié)束第一級菜單的編輯
MENULAUNCH_CASCADE//編輯第二級菜單
BUTTONmj//下拉菜單的ID
LABEL模架設(shè)計(&J)//定義菜單的標題
BITMAPC:\tm.bmp//加載位圖
ACTIONSmojia.dlg//菜單的相應(yīng)行為
SEPARATOR//菜單中畫分割線......
END_OF_MENU//結(jié)束菜單的編輯
2、UG/OpenUIStyle對話框技術(shù)
和VisualC++對話框設(shè)計相似,UIStyler包含對話框的各種控件,即UIObjects對象,如Label、ActionButton、Bitmap、Integer、Real、String、RadioBox、ScaleInteger(Real)StrolledWindow、SelectionBox、ToggleButton、SelectList等,可以隨意對它們進行組合并編輯確定其位置。每一UIObjects對象具有一定的屬性、選擇性及回調(diào)函數(shù),這些性質(zhì)均應(yīng)在生成UIStyler對話框文件之前確定。在保存UIStyler對話框時共生成三個文件:*.dlg、*_template.c、*.h。其中*.dlg是UIStyle對話框界面文件,非ASCII格式,封裝了對話框的圖形界面;*_template.c、*.h分別是UIStyler對話框C語言模板文件和頭文件。用戶的主要工作是修改*_template.c模板文件并在其中添加用戶代碼,確定UIStyler對話框被調(diào)用的形式及其所實現(xiàn)的功能。這些工作都在VisualC++6.0中完成,最終和*.h編譯鏈接生成可調(diào)用的*.DLL文件。
3、UG/OpenAPI
UG/OpenAPI又稱userfunction,是一個允許程序訪問并改變UG對象模型的程序集。UG/OpenAPI封裝了近2000個UG操作的函數(shù),它可以對UG的圖形終端、文件管理系統(tǒng)和數(shù)據(jù)庫進行操作,幾乎所有能在UG界面上的操作都可以用UG/OpenAPI函數(shù)實現(xiàn)。UG/OpenAPI程序分為內(nèi)部程序(InternalUG/OpenAPI程序)和外部程序(ExternalUG/OpenAPI程序)。內(nèi)部程序必須在UG環(huán)境下運行,根據(jù)所編制的程序進行交互操作。外部程序在操作系統(tǒng)中執(zhí)行,不進入到UG環(huán)境中,程序執(zhí)行過程不能進行交互操作。本文主要用到了內(nèi)部程序,其格式一般為:
#include<uf.h>//包含UG/OpenAPI公共類型和函數(shù)定義 //包含額外的頭文件
voidufusr(char*param,int*retcod,intparm_len)//程序的入口函數(shù)
{
//定義變量
UF_initialize();//訪問許可
body//應(yīng)用主體
UF_terminate();//返回許可
}
4、UG/OpenGRIP
UG/OpenGRIP是UG提供的二次開發(fā)語言模塊,也具有外部高級開發(fā)語言的接口。GRIP是UG的內(nèi)嵌語言,能夠?qū)崿F(xiàn)強大的圖形繪制、裝配、工程圖的生成和一定的文件管理功能,主要進行UG的功能調(diào)用。GRIP程序一般是在UG平臺下編制的,有獨特的開發(fā)工具、編譯鏈接過程、程序語法和文件格式,可以與UG/OpenAPI相互調(diào)用。
二、應(yīng)用實例
以模架為例,利用UIStyler制作程序中使用的對話框(圖2-1),并在VC++6.0中編程,編制程序的目的是生成動態(tài)鏈接庫文件*dll。利用UG/OpenMenuScript生成用戶菜單。(圖2-2)。
對話框編輯完成后以名稱mojia保存,生成三個用戶文件:界面文件mojia.dlg、頭文件mojia.h、模板文件mojia_template.c。把mojia_template.c調(diào)入VC++6.0,對程序鏈接編譯后,只能生成一個空的*.dll文件。要實現(xiàn)用戶的特定功能,需要在程序中添加相應(yīng)代碼。
部分代碼如下:
intUB_apply_cb(intdialog_id,
void*client_data,
UF_STYLER_item_value_type_p_tcallback_data)
{
UF_STYLER_item_value_type_tdata;
intresponse=0;
interror_code=0;
chargrip_exe[1024];
char*program_name="mojia.grx";
doublepassnumber[3];
/*MakesureUserFunctionisavailable.*/
if(UF_initialize()!=0)
return(UF_UI_CB_CONTINUE_DIALOG);
/*----Enteryourcallbackcodehere-----*/
data.item_id="L";
data.item_attr=UF_STYLER_VALUE;
UF_STYLER_ask_value(dialog_id,&data);
passnumber[0]=data.value.real;
......
該程序調(diào)用mojia.grx的繪圖程序,并把用戶輸入對話框內(nèi)的數(shù)據(jù)傳遞給GRIP,其部分代碼如下(在NXOPENGrip編譯連接后的代碼,圖2-3):
程序運行結(jié)果如圖2-4。注意*dll要放在startup文件下,*grx*dlg要放在application文件下。程序要在UG基礎(chǔ)環(huán)境中運行,否則會出現(xiàn)找不到實體的提示。
三、結(jié)論和展望
本文利用UG二次開發(fā)功能實現(xiàn)沖模部件的參數(shù)化三維設(shè)計,為加快模具建模速度、節(jié)省設(shè)計時間方面將會取得一定成效。
如果您有機床行業(yè)、企業(yè)相關(guān)新聞稿件發(fā)表,或進行資訊合作,歡迎聯(lián)系本網(wǎng)編輯部, 郵箱:skjcsc@vip.sina.com