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