張旭, 鄭清春, 胡亞輝, 張善青
(1.天津市先進(jìn)機(jī)電系統(tǒng)設(shè)計與智能控制重點(diǎn)實(shí)驗(yàn)室,天津 300384; 2.天津理工大學(xué) 機(jī)械工程學(xué)院,天津 300384)
表面微織構(gòu)技術(shù)是在摩擦副表面加工出具有一定尺寸和規(guī)則的幾何形貌(如微槽、微孔等),相對于光滑表面而言,合理的微織構(gòu)表面能夠?qū)崿F(xiàn)良好的減摩、降摩以及抗粘結(jié)效果[1]。微織構(gòu)刀具能夠減少刀具與工件切屑之間的摩擦,提高刀具的切削性能,減少刀具磨損,改善抗粘附特性等[2-3]。要想實(shí)現(xiàn)對不同形貌和尺寸的系列化微織構(gòu)刀具的研究,首先要對不同形貌及尺寸的微織構(gòu)刀具進(jìn)行建模。對微織構(gòu)刀具的參數(shù)化設(shè)計,可以將建模工作變得簡單[4-6]。
本文針對微織構(gòu)車刀進(jìn)行了參數(shù)化設(shè)計,以車刀的5個基本角度作為刀具參數(shù),以微織構(gòu)的類型和尺寸作為微織構(gòu)參數(shù),將UG作為開發(fā)平臺,基于UG的二次開發(fā)功能,以Visual Studio作為開發(fā)工具[7-9],開發(fā)出一套微織構(gòu)車刀的參數(shù)化建模系統(tǒng),可以方便地繪制微織構(gòu)車刀模型,從而提高建模效率。
以微織構(gòu)車刀為例介紹微織構(gòu)刀具的結(jié)構(gòu)特點(diǎn),主要包括刀具的主要結(jié)構(gòu)和微織構(gòu)的形貌及分布情況。
車刀的主要角度有前角(γo)、后角(αo)、主偏角(κr)、副偏角(κr’)和刃傾角(λs),如圖1所示,它們就是從正交坐標(biāo)系中定義和測量的。正交坐標(biāo)系由基面(Pr)、切削平面(Ps)和正交平面(Po)組成,是在描述靜止?fàn)顟B(tài)下的車刀角度時最常用的一種坐標(biāo)系。
圖1 車刀的主要角度
在微織構(gòu)車刀的參數(shù)化設(shè)計中,將車刀的5個主要角度作為車刀的主要尺寸參數(shù),從而實(shí)現(xiàn)對車刀的參數(shù)化設(shè)計。
在刀具的刀面上制備仿生微織構(gòu)需要考慮以下幾個方面:微織構(gòu)分布的刀面,微織構(gòu)的類型和微織構(gòu)的參數(shù)尺寸。
對于車刀而言,微織構(gòu)的分布位置可以是前刀面、主后刀面和副后刀面中的任意一個刀面。微織構(gòu)的類型主要有圓柱型、凹坑型、凸包型、溝槽型和鱗片型等,對于每種類型需要定義不同的尺寸參數(shù)。
在微織構(gòu)車刀的參數(shù)化設(shè)計中,將微織構(gòu)的分布刀面設(shè)計為多選形式,用戶可根據(jù)需要對3個刀面任意組合。
UG二次開發(fā)工具包括UG/Open MenuScript界面菜單編輯語言、UG/Open Block UI Styler用戶界面制作工具、UG/Open GRIP專用的UG用戶圖形交互語言和UG/Open API C編程接口[10]。
為實(shí)現(xiàn)基于UG二次開發(fā)的參數(shù)化設(shè)計,將設(shè)計過程分為3個部分,分別是GRIP模型、交互界面和相互調(diào)用。首先,建立GRIP模型,使用GRIP語言進(jìn)行曲線、實(shí)體等幾何模型的建立;然后,設(shè)計交互界面,利用MenuScript編寫菜單欄,利用Block UI Styler設(shè)計對話框,生成對話框的C++程序;最后,相互調(diào)用,利用基于C++平臺的UG/Open API與GRIP的相互調(diào)用實(shí)現(xiàn)回調(diào)函數(shù)的編寫。圖2為UG二次開發(fā)參數(shù)化設(shè)計方法的思想。
圖2 UG二次開發(fā)參數(shù)化設(shè)計方法的思想
圖3所示為UG二次開發(fā)參數(shù)化設(shè)計方法中涉及到的GRIP模型的建立、交互界面的設(shè)計以及相互調(diào)用的流程圖。
圖3 UG二次開發(fā)參數(shù)化設(shè)計方法的流程
微織構(gòu)刀具的GRIP模型的建立過程可分為2個步驟,刀具的GRIP建模和微織構(gòu)的GRIP建模。本文以微織構(gòu)車刀為例詳細(xì)介紹了微織構(gòu)刀具的GRIP建模過程,將建模程序分為2個部分,分別建立車刀和微織構(gòu)的模型。
編寫好的GRIP程序需要經(jīng)過編譯和運(yùn)行才能在UG中被執(zhí)行。
1) 變量的約定
在對車刀建模之前,需要明確其主要尺寸參數(shù),車刀的主要參數(shù)及在程序中所對應(yīng)的符號見表1。
表1 車刀主要參數(shù)
2) 編寫車刀GRIP源程序
在Windows記事本中新建一個文件wzgcd.grs,作為微織構(gòu)車刀的GRIP源程序文件,保存在自定義文件夾。
用GRIP程序畫車刀的過程總的來說分為3步。首先編寫程序畫出刀體,然后根據(jù)各刀具角度編寫用來切割刀體的實(shí)體,最后通過將前2個步驟編寫的實(shí)體進(jìn)行布爾運(yùn)算形成車刀的“三面兩刃一尖”。部分源程序如下:
……
$$在正交平面上形成前角
……
ln(26)=LINE/pt(1),ATANGL,(90-ro)
ln(27)=LINE/pt(14),pt(15)
ln(28)=LINE/pt(14),ATANGL,90
pt(16)=POINT/INTOF,ln(26),ln(27) $求線段交點(diǎn)
pt(17)=POINT/INTOF,ln(26),ln(28)
……
solid(7)=SOLEXT/ln(29..31),HEIGHT,50,$
AXIS,(SINF(vs)/COSF(vs)),0,1
$$根據(jù)主偏角和副偏角大小補(bǔ)償拉伸長度
$$并做布爾減運(yùn)算
IFTHEN/(kr+kr1)>=90
solid(9)=SUBTRA/solid(6),WITH,solid(7)
ELSE
solid(8)=SOLEXT/ln(29..31),HEIGHT,-20,$
AXIS,(SINF(vs)/COSF(vs)),0,1
solid(9)=SUBTRA/solid(6),WITH,solid(7),$
solid(8)
ENDIF
$$布爾加運(yùn)算
solid(10)=UNITE/solid(9),WITH,solid(2)
……
HALT
1) 變量的約定
在對微織構(gòu)建模之前,需要明確其主要的尺寸參數(shù)。以圓柱型微織構(gòu)為例,其主要參數(shù)及在程序中所對應(yīng)的符號見表2。
表2 微織構(gòu)主要參數(shù)
2) 編寫微織構(gòu)的GRIP程序
在不同的刀面建立微織構(gòu)模型之前,要以這個刀面為坐標(biāo)平面,建立一個新的坐標(biāo)系,然后再在刀面所在平面上進(jìn)行微織構(gòu)的建模以及布爾運(yùn)算。
對不同刀面上的微織構(gòu)的編寫需結(jié)合其所在刀面及相關(guān)角度分別進(jìn)行,但每個刀面上微織構(gòu)的編寫過程大致遵循同一過程。首先選定刀面,然后根據(jù)相關(guān)角度求解出對應(yīng)的分布矩陣,再編寫出用來切割單個織構(gòu)的實(shí)體,并將其依據(jù)所求矩陣進(jìn)行排列,最后通過布爾運(yùn)算在刀面上形成微織構(gòu)。部分源程序如下:
……
$$在前刀面上打微織構(gòu)
$$建立變換矩陣
mat1=MATRIX/YZROT,-90
mat2=MATRIX/TRANSL,1,dep1,-1
mat3=MATRIX/mat1,mat2
mat4=MATRIX/TRANSL,dis1,0,0
mat5=MATRIX/TRANSL,(-dis1*SINF(90-kr-kr1)),$
0,(-dis1*COSF(90-kr-kr1))
$$建立微織構(gòu)模型
clm(1)=SOLCYL/ORIGIN,0,0,0,HEIGHT,heg1,$
DIAMTR,dim1
clm(2)=TRANSF/mat3,clm(1),MOVE
clm(3)=TRANSF/mat4,clm(2)
……
clm(37)=TRANSF/mat5,clm(31)
solid(14)=SUBTRA/solid(13),WITH,clm(2..37)
……
HALT
在GRADE中對GRIP的源程序進(jìn)行編譯和鏈接。其中<2>Compile用于對源程序進(jìn)行編譯,如果編譯無錯誤,則自動生成一個新文件wzgcd.gri。編譯后的文件通過<3>Link進(jìn)行鏈接,自動生成wzgcd.grx。
編譯、鏈接后的GRIP程序可以直接被Unigraphics調(diào)用執(zhí)行,便可在UG界面中生成微織構(gòu)車刀的模型。
進(jìn)入UG環(huán)境并新建一個文件,單擊“文件”→“執(zhí)行”→“GRIP”,在瀏覽對話框中選擇wzgcd.grx文件,就自動生成特定尺寸微織構(gòu)車刀的三維幾何模型。
交互界面包括菜單欄中的定制菜單項(xiàng)和菜單項(xiàng)所對應(yīng)的對話框。在開發(fā)環(huán)境下,用MenuScript語言編輯菜單欄,并在Block UI Styler模塊中設(shè)計用戶對話框,即可完成交互界面的設(shè)計。
在運(yùn)行UG開發(fā)程序之前,必須設(shè)置開發(fā)環(huán)境。
1) 在F:zx路徑下建立自己的menu文件夾,放置開發(fā)文件;
2) 在menu文件夾下建立startup和application兩個文件夾,其中startup中存放UG啟動時需要加載的動態(tài)共享庫及菜單腳本文件,application中存放具體的擴(kuò)展程序文件;
3) 激活二次開發(fā)功能的擴(kuò)展,設(shè)置自己的開發(fā)路徑,在ugii_env.dat文件中找到#UG_USER_DIR=${HOME},將其修改為UG_USER_DIR=F:/zx/menu。
在F:/zx/menustartup路徑下新建weizhigou.men文件,用MenuScript語言編寫菜單欄,部分源程序如下:
VERSION 121
EDIT UG_GATEWAY_MAIN_MENUBAR
BEFORE UG_HELP
CASCADE_BUTTON LAUNCH_CASCADE
LABEL微織構(gòu)刀具
END_OF_BEFORE
MENU LAUNCH_CASCADE
BUTTON DEMO_BTN1
LABEL車刀
ACTIONS chedao.dll
……
END_OF_MENU
編輯完成后運(yùn)行UG便可看到通過程序添加的用戶菜單,如圖4所示。
圖4 用戶菜單
進(jìn)入UG主界面,單擊“開始”→“所有應(yīng)用模塊”→“塊UI樣式編輯器”,制作自定義對話框,并設(shè)置相應(yīng)的塊屬性以及生成代碼屬性。
本例中采用UG/Open Block UI Styler定制對話框,并將其保存在F:zxmenuapplication路徑下。如圖5所示, 該對話框可根據(jù)用戶所需輸入刀具的主要參數(shù)、選擇創(chuàng)建微織構(gòu)的刀面、選擇微織構(gòu)類型和輸入微織構(gòu)尺寸。其中,對于刀面的選擇實(shí)行多選式,可以滿足用戶同時在多個刀面創(chuàng)建微織構(gòu)的需求。
圖5 用戶對話框
該對話框采用C++語言作為代碼生成語言,保存后生成wzgcd.dlg,wzgcd.cpp和wzgcd.hpp 3個文件,其中wzgcd.dlg是對話框文件,wzgcd.cpp和wzgcd.hpp分別為對話框的C++源程序和頭文件。
簡單地將GRIP模型生成程序和交互界面羅列在一起并不能實(shí)現(xiàn)微織構(gòu)刀具的智能參數(shù)化,必須要將交互界面與GRIP程序相連,使交互界面調(diào)用GRIP程序生成相應(yīng)模型,才能使微織構(gòu)刀具參數(shù)化系統(tǒng)生效。
用戶對話框通過調(diào)用并修改GRIP程序和為其中的參數(shù)賦值的方式來建立微織構(gòu)刀具模型,而二者的相互連接需要以用戶對話框的源程序?yàn)槊浇?,參?shù)化系統(tǒng)的實(shí)現(xiàn)原理如圖6所示。
圖6 實(shí)現(xiàn)原理
對話框源程序wzgcd.cpp在編輯對話框時由UG系統(tǒng)自動生成,通過編寫源程序中的回調(diào)函數(shù),可以實(shí)現(xiàn)用戶通過交互界面來控制生成微織構(gòu)刀具模型。
打開Visual Studio 2010,建立NX7 Open Wizard項(xiàng)目,添加程序wzgcd.cpp,就可以對對話框的源程序進(jìn)行回調(diào)函數(shù)的編寫。在回調(diào)函數(shù)的編寫中,采用UG/Open API與UG/Open GRIP相互調(diào)用的方式,確定模型的GRIP程序與對話框中各項(xiàng)目的對應(yīng)關(guān)系并將其相連接,即可實(shí)現(xiàn)通過對話框調(diào)用GRIP程序生成相應(yīng)的微織構(gòu)車刀模型。
回調(diào)函數(shù)的部分源程序如下:
……
//從用戶界面塊獲取前角的值
PropertyList *qianjiaoProps = qianjiao->GetProperties();
double myro = qianjiaoProps->GetDouble("Value");
delete qianjiaoProps;
qianjiaoProps = NULL;
……
//從用戶界面塊獲取前刀面的布爾值
PropertyList* qiandaomianproplist = qiandaomian->GetProperties();
myrakeface = qiandaomianproplist->GetLogical("Value");
delete qiandaomianproplist;
……
//UG/Open API調(diào)用UG/Open GRIP
static void do_ugopen_api(void)
{
int status;
char *grip_exe="F:\zx\GRIP\wzgcd.grx";
int grip_arg_count=9;
UF_args_t grip_arg_list[9];
//按順序?yàn)楣蚕韰?shù)表定義賦值
grip_arg_list[0].type=
UF_TYPE_DOUBLE_ARRAY;
grip_arg_list[0].length=3;
grip_arg_list[0].address=myro;
……
//判斷前刀面是否被勾選
grip_arg_list[5].type=
UF_TYPE_DOUBLE_ARRAY;
grip_arg_list[5].length=2;
if(myrakeface=true)
{grip_arg_list[5].address=mydiameter;
}
else
{grip_arg_list[5].address=0;
}
……
status = UF_CALL(UF_call_grip(grip_exe, 9,
grip_arg_list));
}
……
將編輯好的wzgcd.cpp進(jìn)行編譯,可生成wzgcd.dll,保存到F:/zx/menu/Application文件夾中,并在MenuScript編寫的菜單文件中“車刀”模塊調(diào)用wzgcd.dll,便可實(shí)現(xiàn)在點(diǎn)擊“微織構(gòu)刀具”的下拉菜單“車刀”時調(diào)用已編輯好的對話框。
打開UG軟件,新建模型,選擇菜單欄中的 “微織構(gòu)刀具”,然后在下拉菜單中選擇“車刀”,會彈出微織構(gòu)車刀的對話框,根據(jù)所需選擇相關(guān)項(xiàng)目、填寫一組參數(shù),點(diǎn)擊“確定”便可生成對應(yīng)的微織構(gòu)車刀模型,如圖7所示。
圖7 運(yùn)行結(jié)果
1) 基于UG的二次開發(fā)功能設(shè)計了微織構(gòu)刀具的參數(shù)化建模系統(tǒng)。該系統(tǒng)有效地簡化了微織構(gòu)刀具的建模過程,使其更為簡單便捷,縮短了微織構(gòu)刀具的研究周期,提高了工作效率。
2) UG為開發(fā)者提供了多種二次開發(fā)工具,包括UG/Open GRIP、MenuScript、Block UI Styler和UG/Open API等。開發(fā)者可以采用有機(jī)結(jié)合的方式靈活運(yùn)用這些工具,定制出所需的界面和功能。
[1] 龍遠(yuǎn)強(qiáng),鄧建新,周后明,等. 微織構(gòu)自潤滑刀具干切削0Cr18Ni9奧氏體不銹鋼的切削性能[J]. 機(jī)械工程材料,2015,39(3):75-79.
[2] 楊超,劉小君,楊海東, 等. 表面織構(gòu)對刀具切削性能及前刀面摩擦特性的影響[J]. 摩擦學(xué)學(xué)報,2015,35(2):228-235.
[3] 杜宏益,何林,杜紅星,等. 仿生摩擦學(xué)刀具織構(gòu)設(shè)計[J]. 組合機(jī)床與自動化加工技術(shù),2016,(4):138-142.
[4] 唐卓. 基于UG的三維標(biāo)準(zhǔn)件庫的研究與實(shí)現(xiàn)[D]. 武漢:華中科技大學(xué),2007.
[5] 鄭光文,孫力,謝玲玲,等. 基于UG的離合器蓋三維參數(shù)化設(shè)計[J]. 機(jī)械制造與自動化,2010,40(3):121-124.
[6] 劉英,田玉濤,黃忠全,等. 基于UG/OPEN GRIP的系列化零件參數(shù)化建模及建庫的研究[J]. 機(jī)械制造,2007,45(8):34-36.
[7] 吳明陽,高永斌,程耀楠,等. 基于UG二次開發(fā)的可轉(zhuǎn)位刀片斷屑槽參數(shù)化設(shè)計[J]. 工具技術(shù),2016,50(4):35-39.
[8] 王一成,張樹仁. UG二次開發(fā)中數(shù)據(jù)庫的建立方法[J]. 長春大學(xué)學(xué)報,2011,21(12):1-4.
[9] 張樂林,祝錫晶,葉林征. 基于UG二次開發(fā)的參數(shù)化建模方法[J]. 計算機(jī)系統(tǒng)應(yīng)用,2016,25(1):146-149.
[10] 周臨震,李青祝,秦珂. 基于UG NX系統(tǒng)的二次開發(fā)[M]. 鎮(zhèn)江:江蘇大學(xué)出版社,2012.