摘要:随着制造业的快速发展,UG支持用户的二次开发,极大地满足了广大用户的个性化需求。本文通过实例详细介绍了实现UG/GRIP二次开发的过程。
关键词:UG;二次开发;GRIP;NC
主流的 CAD/CAM 软件都具有二次开发的功能。二次开发不仅解决了通用软件针对性不强的问题,减少了许多重复性的劳动,同时集成了各个单位的规范性知识,因而受到了各大厂家的青睐。很多大型模具厂也都在通用软件的基础上开发了自己的用户功能。如一汽模具基于POWERMILL开发了平面加工模块;天津汽模公司针对 UG 开发了整套数控加工模块;二汽模具和成飞模具也开发了符合自身需求的菜单功能,作为原有功能的补充。

UG 模具设计三维图
我们经常可以看到有关 CAD 建模的二次开发,特别是标准件的开发已经比较普及。但关于 NC 编程二次开发的文章却不多见。随着无人化和精细化的发展对NC 编程提出越来越高的要求,往往加工一套汽车覆盖件模具需要数以百计的程序,从安装台面加工到曲面加工;从粗加工拿料到精加工清角,程序要解决数控加工的所有内容,而汽车模具没有重复的零件,每一套模具都要编制新的程序。针对此类特征,我们尝试利用二次开发来实现同类零件的自动编程,方法简单灵活,收效较好。
目前,UG(Unigraphics)是我国使用较为广泛的一种大型 CAD/CAM/CAE 集成化软件。它拥有强大的功能和用户二次开发的接口。UG 二次开发可以使用 C 语言等,且 C 语言开发的程序计算速度相对较快,但是这些语言的开发要求高,需要用户有一定的编程水平。这对于许多规模较小的中小型模具企业来说,实现二次开发无疑是一个挑战,笔者通过调查发现,很多中小型模具企业都有着二次开发的需求,却苦于无法开展。对此,UG/GRIP 二次开发无疑是一种好的选择,它语法简单且与 UG 集成一体,不存在复杂接口问题,其所有的功能完全针对 UG 二次开发而来,针对性很强。GRIP 是一种专用的图形交互编程语言,它与 UG 系统集成,可以实现 UG 环境中的大部分应用操作。GRIP 语言与一般的通用语言并无差别,有其自身的语法结构、程序结构、内部函数以及与其它通用语言程序都具有相互调用的接口。虽然 GRIP 的功能远不如UG/Open API 强大,但由于其某些独特的优点,仍然有大量用户在使用。GRIP 语法类似 BASIC 和 FORTRAN。
例如建立一个零件的清根加工程序,使用的刀具从直径 50mm 到直径 6mm 球刀共计九把刀具,从粗加工到精加工。整个过程只需要选择加工边界和加工几何体以及料厚,其余的将自动生成 OPERATION,并至计算结束,中间的计算方法完全按照既定的规范。这样既减少了劳动强度又减少失误,同时也提高了加工效率。
1 打开UG、GRIP 编辑器
在 UG 中找到 UG TOOL→NX OPEN GRIP,打开 GRIP 编辑器,如图 1 所示。

图1 启动 GRIP 路径示意图
2 确定工作路径,建立GRS文件
在图2所示的界面中输入4回车,再输入工作路径用来存放GRIP二次开发的文件,路径只要是英文即可。比如:'D:\MYUG\'。

图2 GRIP 工作界面
再输入1回车,输入要建立的文件名。如 'NCOP'。
完成上述操作后,GRIP 将产生三个文件,存储源代码的文本文件(ASCII text file),扩展名为*.GRS;编译后文件扩展名为*.GRI;连接后文件扩展名为*.GRX 。
3 在NCOP.GRS中输入如下代码
ENTITY/OBJ(25),SURF1(5000),cbnd(90),BEID
ENTITY/surf2(5000)
NUMBER/NUM
L00:
PARAM/'请您输入料厚数据',$'
输入料厚数据',LH,RSP
JUMP/L00:,,,RSP
MESSG/'请选择加工几何体'
L10:
IDENT/'请选择加工面',surf1,CNT,NUM,$
CURSOR,X,Y,Z,RSP
JUMP/L10:,L20:,,RSP
L20:
MESSG/'请选择加工边界'
mask/3
ident/'选择曲线边界',cbnd,cnt,cbnd_cnt,rspu
JUMP/O4:,O9:,,rspu
&MODULE = &MACH $$ 激活加工模块$$
&MCS=&WCS $$ 使用当前坐标为加工坐标$$
$$ 以下为选择使用的模版及要生成的操作名称$$
$$标记A
&OPTSET='D:\resource\template_set\nc_grip.opt'
OPER/NEW, OPNAME, 'c.50','cam_metric_template', 'c.50'
TOOL/'B30',MILL,30,15,100 $$刀具设置,具体为‘MILL’类$
$$的直径30,半径15,刀长100
&tname='B30' $$选择使用该刀具
TAXIS/0,0,1 $$刀轴方向,使用I,J,K方式。
OPGEOM/GLIST, PART
OPGEOM/GITEM, surf1(1..NUM) $$选择加工几何体
OPGEOM/BND,PART,START $$边界选择开始
&BNDTYP=&CLOSED $$边界为封闭
&CMTSID=&OUTSID $$加工内侧
DO/O6:,j,1,cbnd_cnt,1 $$依次选择各个轮廓
OPGEOM/BNDITM,cbnd(j)
&TOOLOC = &ON $$使用ON边界
O6: $$ 结束循环
&FSTOCK=LH $$余量设置,此处设置等于料厚
&cuttyp=&ZZ $$刀具轨迹样式,此处沿边
&PATTRN=&PROFILE
&CUTANG=45
&stpty=&CNSTEP $$步距设置为固定步距
&STEP=10 $$步距为10
OPGEOM/BND,END $$边界选择结束
&GENPTH=&YES $$生成刀轨
OPER/ SAVE$$ $$保存操作
$$...
$$从标记A开始到该位置的内容可以多次复制,产生多个 OPERATION,$$仅仅修改余量,刀具等参数内容,即可产生不同的操作,通过多个操作$$的组合,完成一个工艺过程。
HALT
4 UG中建立新的菜单
在UG的安装目录下\UGII\ ugii_env.dat文件中找到如下语句:
UGII_USER_DIR=${HOME}将其改为UGII_USER_DIR=d:\myug\(该目录可根据需要制定)。同时建立新目录:D:\MYUG\STARTUP\和 D:\MYUG\ APPLICATION。在D:\MYUG\STARTUP下建立新文件MYNEW.MEN,文件内容显示如下:
VERSION170
EDIT UG_GATEWAY_MAIN_MENUBAR
BEFORE UG_ APPLICATION
CASCADE_BUTTON UISTYLER_DLG
LABEL NC程序自动化
END_OF_BEFORE
$$以上为在主菜单的'APPLICATION'前建立该菜单.
MENU UISTYLER_DLG
CASCADE_BUTTON QMNCA
LABEL 曲面NCA类
ACTIONS d:\myug\APPLICATION\NCOPA.GRX CASCADE_BUTTON QMNCB
LABEL 曲面NCB类
ACTIONS d:\myug\APPLICATION\NCOPB.GRX CASCADE_BUTTON QMNCC
LABEL 曲面NCC类
ACTIONS d:\myug\APPLICATION\NCOPC.GRX
END_OF_MENU
当再次启动 UG 时,会发现在 APPLICATION 菜单之前增加了一个 ‘Nc 程序自动化’的菜单,如图 3 所示。且拥有三个子菜单。这三个子菜单对于不同的加工工艺,可对应不同的曲面类型,自动按照既定的工艺流程生成需要的程序,而操作者只需判断曲面的类型即可。因此,一次性输入料厚并选择好被加工曲面及加工边界等少量内容,复杂和繁琐的规范和工艺内容均自动生成。

图3 重启后 APPLICATION 的菜单界面
在规范发生变化时,只需要后台维护如上述例子中的'D:\RESOURCE\ template_part\METRIC\ cam_metric_template.prt 所对应模版操作和GRS文件中的相应内容。
5 结束语
我们通过试行该方法,将原来数小时的工作缩短为几分钟,极大地提高了工作效率,有时只需在下班前提前一点时间执行自动操作,数小时的计算量留在计算机下班后自动计算。
UG 二次开发不仅满足了用户的个性化需求,提高企业产品的开发周期、提升企业的市场竞争力。同时也将程序员从繁杂的重复劳动中解放出来,从事更有意义的工作。