歐陽文凱
摘 要 本文以成型教研室《基于UG的模具設(shè)計(jì)庫插件開發(fā)》的科研項(xiàng)目為例,對基于UG二次開發(fā)的注塑模輔助設(shè)計(jì)插件的設(shè)計(jì)過程做一個(gè)具體的說明,說明了UG二次開發(fā)的技巧和方法,以及UG二次開發(fā)在注塑模輔助設(shè)計(jì)當(dāng)中的應(yīng)用和前景。
關(guān)鍵詞 UG二次開發(fā) 模具設(shè)計(jì) 注塑模
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A
Injection Mold Plug-aided Design Based on
UG Secondary Development
OUYANG Wenkai
(Department of Mechanical Engineering, Wuhan University
of Technology Huaxia College, Wuhan, Hubei 430223)
Abstract In this paper, take molding department "UG-based mold design library plug-in development" research for example, to make a specific description UG secondary development based injection mold design plug-aided design process, explains UG secondary development of skills and methods, and the development and application of UG and prospects among injection mold-aided design.
Key words UG secondary development; mold design; injection mold
0 前言
在目前激烈的市場競爭中,模具的開發(fā)主要靠UG等三維軟件進(jìn)行完成。但是以UG軟件進(jìn)行模具設(shè)計(jì)和開發(fā),專業(yè)度非常高,一般人難以掌握,而軟件本身,也有不足,難以和生產(chǎn)實(shí)踐相適應(yīng),是造成模具設(shè)計(jì)工程技術(shù)人員進(jìn)步的主要瓶頸。
基于此現(xiàn)實(shí)問題,成型教研室提出《基于UG的模具設(shè)計(jì)庫插件開發(fā)》的科研立項(xiàng),目的是在UG軟件中接入一個(gè)插件,此插件將囊括150套注塑模復(fù)雜模具的整體結(jié)構(gòu),以及7大類典型常見模具的標(biāo)準(zhǔn)結(jié)構(gòu),用戶可以根據(jù)自己的產(chǎn)品工藝特點(diǎn),根據(jù)電腦的檢索分類,隨時(shí)調(diào)用匹配的模具結(jié)構(gòu),輔助設(shè)計(jì)人員進(jìn)行設(shè)計(jì),既方便教學(xué)使用,又能應(yīng)用于實(shí)踐生產(chǎn)當(dāng)中。
1 UG二次開發(fā)介紹
Unigraphics(簡稱UG)是當(dāng)前世界上最先進(jìn)和精密集成的,面向制造行業(yè)的CAID/CAD/CAM/CAE 高端軟件,它為制造行業(yè)產(chǎn)品開發(fā)的全過程提供解決方案,功能包括:概念設(shè)計(jì),工業(yè)設(shè)計(jì),性能分析和制造。
UG是一個(gè)功能強(qiáng)大的通用3D機(jī)械CAD/CAM軟件系統(tǒng),用戶若要以它為平臺進(jìn)行二次開發(fā),實(shí)現(xiàn)大型的機(jī)械設(shè)計(jì)系統(tǒng)(如模具智能化專家系統(tǒng)CAD軟件),就必須利用UG的開發(fā)模塊,借助C/C++,在以UNIX為操作系統(tǒng)的工作站上或以Windows為操作系統(tǒng)的微機(jī)工作站上編寫C程序,進(jìn)而生成可執(zhí)行文件。
用戶二次開發(fā)的結(jié)果,最終要供他人使用,因此良好的交互界面是非常重要的。UG提供的User Tool工具可使用戶的開發(fā)結(jié)果與UG的集成交互界面有機(jī)地結(jié)合起來,形成一個(gè)風(fēng)格一致的統(tǒng)一界面,方便了用戶的使用和操作。
UG二次開發(fā)使用到的工具有:UG API , UG GRIP , UG OPEN , NX OPEN , MANUSCRIPT , BLOCK UI STYLER等等。
2 UG二次開發(fā)的一般過程
作為UG NX 6.0與外部應(yīng)用程序之間的接口,UG/Open API是一系列函數(shù)的集合。通過UG/Open API的編程,用戶幾乎能夠?qū)崿F(xiàn)所有的UG NX 5.0功能。開發(fā)者可以通過用C++語言編程來調(diào)用這些函數(shù),從而實(shí)現(xiàn)用戶的需求。
(1)對UG part文件及相應(yīng)模型進(jìn)行操作,包括建立UG NX 6.0模型、查詢模型對象、建立并遍歷裝配體及創(chuàng)建工程圖等。
(2)在UG NX 6.0中創(chuàng)建交互式程序界面。
(3)創(chuàng)建并管理用戶定義對象等。
應(yīng)用函數(shù)時(shí)應(yīng)注意,所有的UG/Open API 應(yīng)用必須及時(shí)進(jìn)行初始化和終止,以確保獲取或釋放UG/Open API的執(zhí)行許可權(quán)限。
初始化函數(shù)是UF_initialize,開始調(diào)用UG/Open API的函數(shù)時(shí)應(yīng)先調(diào)用UF_initialize來獲取執(zhí)行許可權(quán)限。終止函數(shù)是UF_terminate,不再需要調(diào)用UG/Open API的函數(shù)時(shí),必須先調(diào)用UF_terminate來釋放執(zhí)行許可。
UG/Open API 程序能在兩種不同的環(huán)境(依賴于程序的連接方式)下運(yùn)行,即Internal環(huán)境(也叫“Internal開發(fā)模式”)和External模式。其中Internal環(huán)境下的程序只能在UG NX 6.0的界面環(huán)境(session)下運(yùn)行,在運(yùn)行這些程序時(shí)它們被加載到UG NX 6.0的運(yùn)行空間中(UG NX 5.0分配的內(nèi)存)。External模式開發(fā)的程序能在各種操作系統(tǒng)(Windowns NT/2000/XP及UNIX)下運(yùn)行,不在UG NX 6.0環(huán)境中或作為UG NX 6.0的子進(jìn)程運(yùn)行。盡管沒有圖形顯示,但UG/Open API提供了函數(shù)用于打印機(jī)或繪圖儀輸出,也可以輸出成CGM文件或其他數(shù)據(jù)文件。
圖1
UG二次開發(fā)需要vs2008、UG6.0這樣的工作環(huán)境,它的一般過程是:(1)利用manuscript語言編制插件啟動文件;(2)需要利用UI styler設(shè)計(jì)對話框界面文件;(3)需要利用vs2008編輯對話框生成的C語言文件,在其中添加相關(guān)的功能代碼;(4)設(shè)置UG相關(guān)環(huán)境變量,使設(shè)計(jì)好的插件內(nèi)嵌入U(xiǎn)G界面中。endprint
所以UG二次開發(fā)是一個(gè)復(fù)雜的過程,需要對多種軟件非常熟悉的操作。
3 插件工作界面的設(shè)計(jì)
UG插件工作界面的設(shè)置可以使用多種途徑,比如用VS2008自帶的MFC來設(shè)置界面,這樣設(shè)置的界面功能非常強(qiáng)大,也容易調(diào)節(jié),但是不符合UG本身的風(fēng)格,如果要設(shè)計(jì)一款完全融合UG風(fēng)格的軟件工作界面,必須使用UI styler程序,利用UI styler設(shè)計(jì)軟件工作界面,并且導(dǎo)入至VS2008的一般步驟為:
(1)設(shè)計(jì)對話框界面草圖;(2)利用UIStyler工具創(chuàng)建對話框;(3)設(shè)置對話框中的回調(diào)函數(shù);(4)保存對話框;(5)將系統(tǒng)自動生成的對話框C語言模板文件復(fù)制到VC2008項(xiàng)目中;(6)修改C文件,添加回調(diào)函數(shù)代碼,編譯連接文件;(7)將對話框文件(.dlg)復(fù)制到相應(yīng)的目錄下,將共享庫文件(.dll)復(fù)制到相應(yīng)的目錄下;(8)運(yùn)行、測試及調(diào)試應(yīng)用程序。
圖1為本次科研項(xiàng)目設(shè)計(jì)的插件工作界面。
4 回調(diào)函數(shù)功能代碼的完成
利用UIStyler工具創(chuàng)建了對話框工作界面以后,要想實(shí)現(xiàn)其中的每一個(gè)按鈕功能就必須將對話框生成的C語言文件導(dǎo)入到VC2008項(xiàng)目中,然后再其中修改相應(yīng)回調(diào)的處理代碼,以實(shí)現(xiàn)各種功能。
下面這段代碼就是在回調(diào)函數(shù)中實(shí)現(xiàn)二級對話框彈出的代碼
NXOpen::UIStyler::DialogResponse response;
theNXStyler001 = new NXStyler001();
response = theNXStyler0066->Show();
delete theNXStyler001;
其中001表示第一個(gè)二級對話框的編號,其工作界面如圖2:
圖2
下面這段代碼就是在回調(diào)函數(shù)中實(shí)現(xiàn)參數(shù)化一個(gè)長方體的代碼:
if(!UF_initialize())
{
char *edge[3]={NULL};
tag_t block_tag;
int error = 0;
double length =this->changeReal4->ItemValue();
double width = this->changeReal5->ItemValue();
double height = this->changeReal6->ItemValue();
double x =this->changeReal7->ItemValue();
double y= this->changeReal8->ItemValue();
double z= this->changeReal9->ItemValue();
double corner[3];
corner[0]=x;
corner[1]=y;
corner[2]=z;
edge[0]= (char *)UF_allocate_memory(256*sizeof(char),&error);
edge[1]= (char *)UF_allocate_memory(256*sizeof(char),&error);
edge[2]= (char *)UF_allocate_memory(256*sizeof(char),&error);
sprintf(edge[0],"%f",length);
sprintf(edge[1],"%f",width);
sprintf(edge[2],"%f",height);
UF_MODL_create_block1(UF_NULLSIGN,corner,edge,&block_tag);
UF_free(edge[0]);
UF_free(edge[1]);
UF_free(edge[2]);
}
UF_terminate();
其工作界面如圖3:
圖3
5結(jié)語
UG插件設(shè)計(jì)好后,我們將UG插件給學(xué)生使用,得到很好的反響,又把UG插件給一些搞模具設(shè)計(jì)的公司使用,也得到不錯(cuò)的反響。
本插件的創(chuàng)新之處在,將150套注塑模復(fù)雜結(jié)構(gòu)嵌入軟件中,并分成了標(biāo)準(zhǔn)的七大類和一個(gè)其他類,讓不熟悉模具結(jié)構(gòu)的設(shè)計(jì)人員可以隨時(shí)搜索匹配,從而熟悉模具的具體結(jié)構(gòu)特點(diǎn),以便進(jìn)行模具設(shè)計(jì),因而特別適用于進(jìn)行注塑模具設(shè)計(jì)學(xué)習(xí)和課程設(shè)計(jì)的學(xué)生,以及不是很熟悉各種模具結(jié)構(gòu)的模具設(shè)計(jì)從業(yè)人員。
以后擬打算在此插件的基礎(chǔ)上,將軟件參數(shù)化模型的功能進(jìn)一步強(qiáng)化,使整套模具的各個(gè)部分全部都可以進(jìn)行參數(shù)化建模,從而讓整個(gè)模具設(shè)計(jì)更加人性化和簡單化,也使模具設(shè)計(jì)人員能夠更加得心應(yīng)手的操作此款插件。
目前我國很多高等院校都開設(shè)了模具方向的課程,包括UG軟件設(shè)計(jì)課,該研究成果能彌補(bǔ)這一缺陷,不但大大提高課程的教學(xué)質(zhì)量,還為學(xué)生將來尋找就業(yè)機(jī)會打下堅(jiān)實(shí)的基礎(chǔ)。該研究成果還可以作為專利申報(bào),滿足模具設(shè)計(jì)技術(shù)人員的需要。
參考文獻(xiàn)
[1] 張冶等.Unigraphics NX參數(shù)化設(shè)計(jì)實(shí)例教程[M].清華大學(xué)出版社,2003.8.
[2] 夏天等.UG二次開發(fā)技術(shù)基礎(chǔ)[M].電子工業(yè)出版社,2005.9.endprint
所以UG二次開發(fā)是一個(gè)復(fù)雜的過程,需要對多種軟件非常熟悉的操作。
3 插件工作界面的設(shè)計(jì)
UG插件工作界面的設(shè)置可以使用多種途徑,比如用VS2008自帶的MFC來設(shè)置界面,這樣設(shè)置的界面功能非常強(qiáng)大,也容易調(diào)節(jié),但是不符合UG本身的風(fēng)格,如果要設(shè)計(jì)一款完全融合UG風(fēng)格的軟件工作界面,必須使用UI styler程序,利用UI styler設(shè)計(jì)軟件工作界面,并且導(dǎo)入至VS2008的一般步驟為:
(1)設(shè)計(jì)對話框界面草圖;(2)利用UIStyler工具創(chuàng)建對話框;(3)設(shè)置對話框中的回調(diào)函數(shù);(4)保存對話框;(5)將系統(tǒng)自動生成的對話框C語言模板文件復(fù)制到VC2008項(xiàng)目中;(6)修改C文件,添加回調(diào)函數(shù)代碼,編譯連接文件;(7)將對話框文件(.dlg)復(fù)制到相應(yīng)的目錄下,將共享庫文件(.dll)復(fù)制到相應(yīng)的目錄下;(8)運(yùn)行、測試及調(diào)試應(yīng)用程序。
圖1為本次科研項(xiàng)目設(shè)計(jì)的插件工作界面。
4 回調(diào)函數(shù)功能代碼的完成
利用UIStyler工具創(chuàng)建了對話框工作界面以后,要想實(shí)現(xiàn)其中的每一個(gè)按鈕功能就必須將對話框生成的C語言文件導(dǎo)入到VC2008項(xiàng)目中,然后再其中修改相應(yīng)回調(diào)的處理代碼,以實(shí)現(xiàn)各種功能。
下面這段代碼就是在回調(diào)函數(shù)中實(shí)現(xiàn)二級對話框彈出的代碼
NXOpen::UIStyler::DialogResponse response;
theNXStyler001 = new NXStyler001();
response = theNXStyler0066->Show();
delete theNXStyler001;
其中001表示第一個(gè)二級對話框的編號,其工作界面如圖2:
圖2
下面這段代碼就是在回調(diào)函數(shù)中實(shí)現(xiàn)參數(shù)化一個(gè)長方體的代碼:
if(!UF_initialize())
{
char *edge[3]={NULL};
tag_t block_tag;
int error = 0;
double length =this->changeReal4->ItemValue();
double width = this->changeReal5->ItemValue();
double height = this->changeReal6->ItemValue();
double x =this->changeReal7->ItemValue();
double y= this->changeReal8->ItemValue();
double z= this->changeReal9->ItemValue();
double corner[3];
corner[0]=x;
corner[1]=y;
corner[2]=z;
edge[0]= (char *)UF_allocate_memory(256*sizeof(char),&error);
edge[1]= (char *)UF_allocate_memory(256*sizeof(char),&error);
edge[2]= (char *)UF_allocate_memory(256*sizeof(char),&error);
sprintf(edge[0],"%f",length);
sprintf(edge[1],"%f",width);
sprintf(edge[2],"%f",height);
UF_MODL_create_block1(UF_NULLSIGN,corner,edge,&block_tag);
UF_free(edge[0]);
UF_free(edge[1]);
UF_free(edge[2]);
}
UF_terminate();
其工作界面如圖3:
圖3
5結(jié)語
UG插件設(shè)計(jì)好后,我們將UG插件給學(xué)生使用,得到很好的反響,又把UG插件給一些搞模具設(shè)計(jì)的公司使用,也得到不錯(cuò)的反響。
本插件的創(chuàng)新之處在,將150套注塑模復(fù)雜結(jié)構(gòu)嵌入軟件中,并分成了標(biāo)準(zhǔn)的七大類和一個(gè)其他類,讓不熟悉模具結(jié)構(gòu)的設(shè)計(jì)人員可以隨時(shí)搜索匹配,從而熟悉模具的具體結(jié)構(gòu)特點(diǎn),以便進(jìn)行模具設(shè)計(jì),因而特別適用于進(jìn)行注塑模具設(shè)計(jì)學(xué)習(xí)和課程設(shè)計(jì)的學(xué)生,以及不是很熟悉各種模具結(jié)構(gòu)的模具設(shè)計(jì)從業(yè)人員。
以后擬打算在此插件的基礎(chǔ)上,將軟件參數(shù)化模型的功能進(jìn)一步強(qiáng)化,使整套模具的各個(gè)部分全部都可以進(jìn)行參數(shù)化建模,從而讓整個(gè)模具設(shè)計(jì)更加人性化和簡單化,也使模具設(shè)計(jì)人員能夠更加得心應(yīng)手的操作此款插件。
目前我國很多高等院校都開設(shè)了模具方向的課程,包括UG軟件設(shè)計(jì)課,該研究成果能彌補(bǔ)這一缺陷,不但大大提高課程的教學(xué)質(zhì)量,還為學(xué)生將來尋找就業(yè)機(jī)會打下堅(jiān)實(shí)的基礎(chǔ)。該研究成果還可以作為專利申報(bào),滿足模具設(shè)計(jì)技術(shù)人員的需要。
參考文獻(xiàn)
[1] 張冶等.Unigraphics NX參數(shù)化設(shè)計(jì)實(shí)例教程[M].清華大學(xué)出版社,2003.8.
[2] 夏天等.UG二次開發(fā)技術(shù)基礎(chǔ)[M].電子工業(yè)出版社,2005.9.endprint
所以UG二次開發(fā)是一個(gè)復(fù)雜的過程,需要對多種軟件非常熟悉的操作。
3 插件工作界面的設(shè)計(jì)
UG插件工作界面的設(shè)置可以使用多種途徑,比如用VS2008自帶的MFC來設(shè)置界面,這樣設(shè)置的界面功能非常強(qiáng)大,也容易調(diào)節(jié),但是不符合UG本身的風(fēng)格,如果要設(shè)計(jì)一款完全融合UG風(fēng)格的軟件工作界面,必須使用UI styler程序,利用UI styler設(shè)計(jì)軟件工作界面,并且導(dǎo)入至VS2008的一般步驟為:
(1)設(shè)計(jì)對話框界面草圖;(2)利用UIStyler工具創(chuàng)建對話框;(3)設(shè)置對話框中的回調(diào)函數(shù);(4)保存對話框;(5)將系統(tǒng)自動生成的對話框C語言模板文件復(fù)制到VC2008項(xiàng)目中;(6)修改C文件,添加回調(diào)函數(shù)代碼,編譯連接文件;(7)將對話框文件(.dlg)復(fù)制到相應(yīng)的目錄下,將共享庫文件(.dll)復(fù)制到相應(yīng)的目錄下;(8)運(yùn)行、測試及調(diào)試應(yīng)用程序。
圖1為本次科研項(xiàng)目設(shè)計(jì)的插件工作界面。
4 回調(diào)函數(shù)功能代碼的完成
利用UIStyler工具創(chuàng)建了對話框工作界面以后,要想實(shí)現(xiàn)其中的每一個(gè)按鈕功能就必須將對話框生成的C語言文件導(dǎo)入到VC2008項(xiàng)目中,然后再其中修改相應(yīng)回調(diào)的處理代碼,以實(shí)現(xiàn)各種功能。
下面這段代碼就是在回調(diào)函數(shù)中實(shí)現(xiàn)二級對話框彈出的代碼
NXOpen::UIStyler::DialogResponse response;
theNXStyler001 = new NXStyler001();
response = theNXStyler0066->Show();
delete theNXStyler001;
其中001表示第一個(gè)二級對話框的編號,其工作界面如圖2:
圖2
下面這段代碼就是在回調(diào)函數(shù)中實(shí)現(xiàn)參數(shù)化一個(gè)長方體的代碼:
if(!UF_initialize())
{
char *edge[3]={NULL};
tag_t block_tag;
int error = 0;
double length =this->changeReal4->ItemValue();
double width = this->changeReal5->ItemValue();
double height = this->changeReal6->ItemValue();
double x =this->changeReal7->ItemValue();
double y= this->changeReal8->ItemValue();
double z= this->changeReal9->ItemValue();
double corner[3];
corner[0]=x;
corner[1]=y;
corner[2]=z;
edge[0]= (char *)UF_allocate_memory(256*sizeof(char),&error);
edge[1]= (char *)UF_allocate_memory(256*sizeof(char),&error);
edge[2]= (char *)UF_allocate_memory(256*sizeof(char),&error);
sprintf(edge[0],"%f",length);
sprintf(edge[1],"%f",width);
sprintf(edge[2],"%f",height);
UF_MODL_create_block1(UF_NULLSIGN,corner,edge,&block_tag);
UF_free(edge[0]);
UF_free(edge[1]);
UF_free(edge[2]);
}
UF_terminate();
其工作界面如圖3:
圖3
5結(jié)語
UG插件設(shè)計(jì)好后,我們將UG插件給學(xué)生使用,得到很好的反響,又把UG插件給一些搞模具設(shè)計(jì)的公司使用,也得到不錯(cuò)的反響。
本插件的創(chuàng)新之處在,將150套注塑模復(fù)雜結(jié)構(gòu)嵌入軟件中,并分成了標(biāo)準(zhǔn)的七大類和一個(gè)其他類,讓不熟悉模具結(jié)構(gòu)的設(shè)計(jì)人員可以隨時(shí)搜索匹配,從而熟悉模具的具體結(jié)構(gòu)特點(diǎn),以便進(jìn)行模具設(shè)計(jì),因而特別適用于進(jìn)行注塑模具設(shè)計(jì)學(xué)習(xí)和課程設(shè)計(jì)的學(xué)生,以及不是很熟悉各種模具結(jié)構(gòu)的模具設(shè)計(jì)從業(yè)人員。
以后擬打算在此插件的基礎(chǔ)上,將軟件參數(shù)化模型的功能進(jìn)一步強(qiáng)化,使整套模具的各個(gè)部分全部都可以進(jìn)行參數(shù)化建模,從而讓整個(gè)模具設(shè)計(jì)更加人性化和簡單化,也使模具設(shè)計(jì)人員能夠更加得心應(yīng)手的操作此款插件。
目前我國很多高等院校都開設(shè)了模具方向的課程,包括UG軟件設(shè)計(jì)課,該研究成果能彌補(bǔ)這一缺陷,不但大大提高課程的教學(xué)質(zhì)量,還為學(xué)生將來尋找就業(yè)機(jī)會打下堅(jiān)實(shí)的基礎(chǔ)。該研究成果還可以作為專利申報(bào),滿足模具設(shè)計(jì)技術(shù)人員的需要。
參考文獻(xiàn)
[1] 張冶等.Unigraphics NX參數(shù)化設(shè)計(jì)實(shí)例教程[M].清華大學(xué)出版社,2003.8.
[2] 夏天等.UG二次開發(fā)技術(shù)基礎(chǔ)[M].電子工業(yè)出版社,2005.9.endprint