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