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