张旭, 郑清春, 胡亚辉, 张善青
(1.天津市先进机电系统设计与智能控制重点实验室,天津 300384; 2.天津理工大学 机械工程学院,天津 300384)
表面微织构技术是在摩擦副表面加工出具有一定尺寸和规则的几何形貌(如微槽、微孔等),相对于光滑表面而言,合理的微织构表面能够实现良好的减摩、降摩以及抗粘结效果[1]。微织构刀具能够减少刀具与工件切屑之间的摩擦,提高刀具的切削性能,减少刀具磨损,改善抗粘附特性等[2-3]。要想实现对不同形貌和尺寸的系列化微织构刀具的研究,首先要对不同形貌及尺寸的微织构刀具进行建模。对微织构刀具的参数化设计,可以将建模工作变得简单[4-6]。
本文针对微织构车刀进行了参数化设计,以车刀的5个基本角度作为刀具参数,以微织构的类型和尺寸作为微织构参数,将UG作为开发平台,基于UG的二次开发功能,以Visual Studio作为开发工具[7-9],开发出一套微织构车刀的参数化建模系统,可以方便地绘制微织构车刀模型,从而提高建模效率。
以微织构车刀为例介绍微织构刀具的结构特点,主要包括刀具的主要结构和微织构的形貌及分布情况。
车刀的主要角度有前角(γo)、后角(αo)、主偏角(κr)、副偏角(κr’)和刃倾角(λs),如图1所示,它们就是从正交坐标系中定义和测量的。正交坐标系由基面(Pr)、切削平面(Ps)和正交平面(Po)组成,是在描述静止状态下的车刀角度时最常用的一种坐标系。
图1 车刀的主要角度
在微织构车刀的参数化设计中,将车刀的5个主要角度作为车刀的主要尺寸参数,从而实现对车刀的参数化设计。
在刀具的刀面上制备仿生微织构需要考虑以下几个方面:微织构分布的刀面,微织构的类型和微织构的参数尺寸。
对于车刀而言,微织构的分布位置可以是前刀面、主后刀面和副后刀面中的任意一个刀面。微织构的类型主要有圆柱型、凹坑型、凸包型、沟槽型和鳞片型等,对于每种类型需要定义不同的尺寸参数。
在微织构车刀的参数化设计中,将微织构的分布刀面设计为多选形式,用户可根据需要对3个刀面任意组合。
UG二次开发工具包括UG/Open MenuScript界面菜单编辑语言、UG/Open Block UI Styler用户界面制作工具、UG/Open GRIP专用的UG用户图形交互语言和UG/Open API C编程接口[10]。
为实现基于UG二次开发的参数化设计,将设计过程分为3个部分,分别是GRIP模型、交互界面和相互调用。首先,建立GRIP模型,使用GRIP语言进行曲线、实体等几何模型的建立;然后,设计交互界面,利用MenuScript编写菜单栏,利用Block UI Styler设计对话框,生成对话框的C++程序;最后,相互调用,利用基于C++平台的UG/Open API与GRIP的相互调用实现回调函数的编写。图2为UG二次开发参数化设计方法的思想。
图2 UG二次开发参数化设计方法的思想
图3所示为UG二次开发参数化设计方法中涉及到的GRIP模型的建立、交互界面的设计以及相互调用的流程图。
图3 UG二次开发参数化设计方法的流程
微织构刀具的GRIP模型的建立过程可分为2个步骤,刀具的GRIP建模和微织构的GRIP建模。本文以微织构车刀为例详细介绍了微织构刀具的GRIP建模过程,将建模程序分为2个部分,分别建立车刀和微织构的模型。
编写好的GRIP程序需要经过编译和运行才能在UG中被执行。
1) 变量的约定
在对车刀建模之前,需要明确其主要尺寸参数,车刀的主要参数及在程序中所对应的符号见表1。
表1 车刀主要参数
2) 编写车刀GRIP源程序
在Windows记事本中新建一个文件wzgcd.grs,作为微织构车刀的GRIP源程序文件,保存在自定义文件夹。
用GRIP程序画车刀的过程总的来说分为3步。首先编写程序画出刀体,然后根据各刀具角度编写用来切割刀体的实体,最后通过将前2个步骤编写的实体进行布尔运算形成车刀的“三面两刃一尖”。部分源程序如下:
……
$$在正交平面上形成前角
……
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) $求线段交点
pt(17)=POINT/INTOF,ln(26),ln(28)
……
solid(7)=SOLEXT/ln(29..31),HEIGHT,50,$
AXIS,(SINF(vs)/COSF(vs)),0,1
$$根据主偏角和副偏角大小补偿拉伸长度
$$并做布尔减运算
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
$$布尔加运算
solid(10)=UNITE/solid(9),WITH,solid(2)
……
HALT
1) 变量的约定
在对微织构建模之前,需要明确其主要的尺寸参数。以圆柱型微织构为例,其主要参数及在程序中所对应的符号见表2。
表2 微织构主要参数
2) 编写微织构的GRIP程序
在不同的刀面建立微织构模型之前,要以这个刀面为坐标平面,建立一个新的坐标系,然后再在刀面所在平面上进行微织构的建模以及布尔运算。
对不同刀面上的微织构的编写需结合其所在刀面及相关角度分别进行,但每个刀面上微织构的编写过程大致遵循同一过程。首先选定刀面,然后根据相关角度求解出对应的分布矩阵,再编写出用来切割单个织构的实体,并将其依据所求矩阵进行排列,最后通过布尔运算在刀面上形成微织构。部分源程序如下:
……
$$在前刀面上打微织构
$$建立变换矩阵
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))
$$建立微织构模型
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的源程序进行编译和链接。其中<2>Compile用于对源程序进行编译,如果编译无错误,则自动生成一个新文件wzgcd.gri。编译后的文件通过<3>Link进行链接,自动生成wzgcd.grx。
编译、链接后的GRIP程序可以直接被Unigraphics调用执行,便可在UG界面中生成微织构车刀的模型。
进入UG环境并新建一个文件,单击“文件”→“执行”→“GRIP”,在浏览对话框中选择wzgcd.grx文件,就自动生成特定尺寸微织构车刀的三维几何模型。
交互界面包括菜单栏中的定制菜单项和菜单项所对应的对话框。在开发环境下,用MenuScript语言编辑菜单栏,并在Block UI Styler模块中设计用户对话框,即可完成交互界面的设计。
在运行UG开发程序之前,必须设置开发环境。
1) 在F:zx路径下建立自己的menu文件夹,放置开发文件;
2) 在menu文件夹下建立startup和application两个文件夹,其中startup中存放UG启动时需要加载的动态共享库及菜单脚本文件,application中存放具体的扩展程序文件;
3) 激活二次开发功能的扩展,设置自己的开发路径,在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微织构刀具
END_OF_BEFORE
MENU LAUNCH_CASCADE
BUTTON DEMO_BTN1
LABEL车刀
ACTIONS chedao.dll
……
END_OF_MENU
编辑完成后运行UG便可看到通过程序添加的用户菜单,如图4所示。
图4 用户菜单
进入UG主界面,单击“开始”→“所有应用模块”→“块UI样式编辑器”,制作自定义对话框,并设置相应的块属性以及生成代码属性。
本例中采用UG/Open Block UI Styler定制对话框,并将其保存在F:zxmenuapplication路径下。如图5所示, 该对话框可根据用户所需输入刀具的主要参数、选择创建微织构的刀面、选择微织构类型和输入微织构尺寸。其中,对于刀面的选择实行多选式,可以满足用户同时在多个刀面创建微织构的需求。
图5 用户对话框
该对话框采用C++语言作为代码生成语言,保存后生成wzgcd.dlg,wzgcd.cpp和wzgcd.hpp 3个文件,其中wzgcd.dlg是对话框文件,wzgcd.cpp和wzgcd.hpp分别为对话框的C++源程序和头文件。
简单地将GRIP模型生成程序和交互界面罗列在一起并不能实现微织构刀具的智能参数化,必须要将交互界面与GRIP程序相连,使交互界面调用GRIP程序生成相应模型,才能使微织构刀具参数化系统生效。
用户对话框通过调用并修改GRIP程序和为其中的参数赋值的方式来建立微织构刀具模型,而二者的相互连接需要以用户对话框的源程序为媒介,参数化系统的实现原理如图6所示。
图6 实现原理
对话框源程序wzgcd.cpp在编辑对话框时由UG系统自动生成,通过编写源程序中的回调函数,可以实现用户通过交互界面来控制生成微织构刀具模型。
打开Visual Studio 2010,建立NX7 Open Wizard项目,添加程序wzgcd.cpp,就可以对对话框的源程序进行回调函数的编写。在回调函数的编写中,采用UG/Open API与UG/Open GRIP相互调用的方式,确定模型的GRIP程序与对话框中各项目的对应关系并将其相连接,即可实现通过对话框调用GRIP程序生成相应的微织构车刀模型。
回调函数的部分源程序如下:
……
//从用户界面块获取前角的值
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调用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];
//按顺序为共享参数表定义赋值
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进行编译,可生成wzgcd.dll,保存到F:/zx/menu/Application文件夹中,并在MenuScript编写的菜单文件中“车刀”模块调用wzgcd.dll,便可实现在点击“微织构刀具”的下拉菜单“车刀”时调用已编辑好的对话框。
打开UG软件,新建模型,选择菜单栏中的 “微织构刀具”,然后在下拉菜单中选择“车刀”,会弹出微织构车刀的对话框,根据所需选择相关项目、填写一组参数,点击“确定”便可生成对应的微织构车刀模型,如图7所示。
图7 运行结果
1) 基于UG的二次开发功能设计了微织构刀具的参数化建模系统。该系统有效地简化了微织构刀具的建模过程,使其更为简单便捷,缩短了微织构刀具的研究周期,提高了工作效率。
2) UG为开发者提供了多种二次开发工具,包括UG/Open GRIP、MenuScript、Block UI Styler和UG/Open API等。开发者可以采用有机结合的方式灵活运用这些工具,定制出所需的界面和功能。
[1] 龙远强,邓建新,周后明,等. 微织构自润滑刀具干切削0Cr18Ni9奥氏体不锈钢的切削性能[J]. 机械工程材料,2015,39(3):75-79.
[2] 杨超,刘小君,杨海东, 等. 表面织构对刀具切削性能及前刀面摩擦特性的影响[J]. 摩擦学学报,2015,35(2):228-235.
[3] 杜宏益,何林,杜红星,等. 仿生摩擦学刀具织构设计[J]. 组合机床与自动化加工技术,2016,(4):138-142.
[4] 唐卓. 基于UG的三维标准件库的研究与实现[D]. 武汉:华中科技大学,2007.
[5] 郑光文,孙力,谢玲玲,等. 基于UG的离合器盖三维参数化设计[J]. 机械制造与自动化,2010,40(3):121-124.
[6] 刘英,田玉涛,黄忠全,等. 基于UG/OPEN GRIP的系列化零件参数化建模及建库的研究[J]. 机械制造,2007,45(8):34-36.
[7] 吴明阳,高永斌,程耀楠,等. 基于UG二次开发的可转位刀片断屑槽参数化设计[J]. 工具技术,2016,50(4):35-39.
[8] 王一成,张树仁. UG二次开发中数据库的建立方法[J]. 长春大学学报,2011,21(12):1-4.
[9] 张乐林,祝锡晶,叶林征. 基于UG二次开发的参数化建模方法[J]. 计算机系统应用,2016,25(1):146-149.
[10] 周临震,李青祝,秦珂. 基于UG NX系统的二次开发[M]. 镇江:江苏大学出版社,2012.