UG是一個當今世界上最先進,緊密集成的CAD/CAM/CAE高端軟件,得到了廣泛應用。然而,UG只是一個面向通用產品的平臺,沒有把用戶的特殊需要和設計經驗集成到系統中,為此,有必要利用UG的二次開發工具對具體行業(產品)進行二次開發,以提高設計效率,縮短設計周期。特別在模具行業,相關的軟件較少,產品結構復雜,設計要求高,部分零部件已形成系列化,開發出專用的沖模CAD系統,以適應系列化產品的設計,大大提高三維沖壓模設計效率,為并行化設計打下基礎。
一、UG二次開發的實現途徑
UG/Open是一系列UG開發工具的總稱,主要包括UG/OpenAPI、UG/OpenMenuScript、UG/OpenGRIP、UG/OpenUIStyle、UG/OpenC++、宏命令(Macro)等。主要介紹本文用到的以下幾個模塊。
1、用戶菜單腳本UG/OpenMenuScript
UG/OpenMenuScript提供一套用于定義UG菜單的腳本語言,UG的菜單也是用該語言寫成的,開發者使用該腳本語言可以修改UG界面的菜單結構,如添加、刪除和定制菜單,以及改變菜單的顯示文本或響應行為(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寧文波-沖模設計//定義主菜單的標題
END_OF_BEFORE//結束第一級菜單的編輯
MENULAUNCH_CASCADE//編輯第二級菜單
BUTTONmj//下拉菜單的ID
LABEL模架設計(&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等,可以隨意對它們進行組合并編輯確定其位置。每一UIObjects對象具有一定的屬性、選擇性及回調函數,這些性質均應在生成UIStyler對話框文件之前確定。在保存UIStyler對話框時共生成三個文件:*.dlg、*_template.c、*.h。其中*.dlg是UIStyle對話框界面文件,非ASCII格式,封裝了對話框的圖形界面;*_template.c、*.h分別是UIStyler對話框C語言模板文件和頭文件。用戶的主要工作是修改*_template.c模板文件并在其中添加用戶代碼,確定UIStyler對話框被調用的形式及其所實現的功能。這些工作都在VisualC++6.0中完成,最終和*.h編譯鏈接生成可調用的*.DLL文件。
3、UG/OpenAPI
UG/OpenAPI又稱userfunction,是一個允許程序訪問并改變UG對象模型的程序集。UG/OpenAPI封裝了近2000個UG操作的函數,它可以對UG的圖形終端、文件管理系統和數據庫進行操作,幾乎所有能在UG界面上的操作都可以用UG/OpenAPI函數實現。UG/OpenAPI程序分為內部程序(InternalUG/OpenAPI程序)和外部程序(ExternalUG/OpenAPI程序)。內部程序必須在UG環境下運行,根據所編制的程序進行交互操作。外部程序在操作系統中執行,不進入到UG環境中,程序執行過程不能進行交互操作。本文主要用到了內部程序,其格式一般為:
#include<uf.h>//包含UG/OpenAPI公共類型和函數定義 //包含額外的頭文件
voidufusr(char*param,int*retcod,intparm_len)//程序的入口函數
{
//定義變量
UF_initialize();//訪問許可
body//應用主體
UF_terminate();//返回許可
}
4、UG/OpenGRIP
UG/OpenGRIP是UG提供的二次開發語言模塊,也具有外部高級開發語言的接口。GRIP是UG的內嵌語言,能夠實現強大的圖形繪制、裝配、工程圖的生成和一定的文件管理功能,主要進行UG的功能調用。GRIP程序一般是在UG平臺下編制的,有獨特的開發工具、編譯鏈接過程、程序語法和文件格式,可以與UG/OpenAPI相互調用。
二、應用實例
以模架為例,利用UIStyler制作程序中使用的對話框(圖2-1),并在VC++6.0中編程,編制程序的目的是生成動態鏈接庫文件*dll。利用UG/OpenMenuScript生成用戶菜單。(圖2-2)。
對話框編輯完成后以名稱mojia保存,生成三個用戶文件:界面文件mojia.dlg、頭文件mojia.h、模板文件mojia_template.c。把mojia_template.c調入VC++6.0,對程序鏈接編譯后,只能生成一個空的*.dll文件。要實現用戶的特定功能,需要在程序中添加相應代碼。
部分代碼如下:
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,其部分代碼如下(在NXOPENGrip編譯連接后的代碼,圖2-3):
程序運行結果如圖2-4。注意*dll要放在startup文件下,*grx*dlg要放在application文件下。程序要在UG基礎環境中運行,否則會出現找不到實體的提示。
三、結論和展望
本文利用UG二次開發功能實現沖模部件的參數化三維設計,為加快模具建模速度、節省設計時間方面將會取得一定成效。
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com