UG/OPEN API在汽车模具编程中的应用

2015-12-02 01:42
制造业自动化 2015年10期
关键词:毛坯对话框编程

高 原

GAO Yuan

(天津汽车模具股份有限公司,天津 300308)

0 引言

汽车冲压模具基体结构主要包括平面、立面和孔等,模具二维编程主要是利用CAM软件编制面和孔的编程。由于模具整体轮廓尺寸大,铸件毛坯等原因,所有加工面、孔的铸造贴量是不均匀的。为了使UG CAM模块更加符合铸件的编程及加工特点,我们需要借助API函数库,基于UG CAM模板,使用C++语言进行专业化的二次开发,使UG CAM更加符合模具加工的要求。

1 CAM辅助模块开发背景

使用UG CAM模板策略编制一个同时加工多个面的程序(oper_tag)时,毛坯余量(Blank Distance)只能设置一个固定值,且这个值需要人工输入,如图1所示。但是铸件无法保证所有面的铸造量均匀一致。通过逆向工程得到四个平面实际铸造量分别为15mm,18mm,17mm,19mm,如图2所示。为了加工时程序的安全,编程员只能将Blank Distance参数框输入19,如图1所示。加工1,2,3号面时机床Z向总共空运行7mm。

图1 FACE_MILLING编程模板

这就体现出了UG软件通用CAM模块在汽车模具编程加工过程中的弊端:1)不符合模具结构特点,功能不够强大;2)浪费编程及加工工时;3)手动输值极易出错等。

图2 模具理论贴量与实际铸造贴量

2 面余量分析模块设计思路

通过调用API中UDOP(User Defined Operations)系列函数,在PROFILE_3D策略基础之上,进行开发主要实现针对每一边界存储自己一组数据。使用UIStyler编辑器生成一个UG风格的对话框,以便于操作和显示分析计算结果,如图3所示,对话框显示了某一边界所包含的一组数据:毛坯余量、每层切深、侧面余量、底面余量以及毛坯增量,五个按钮分别实现批量编辑毛坯余量、批量修改底面余量、自动修改参数和指向前一边界、指向后一边界。面板中设置一个用户边界参数开关“Custom Boundary Data”,关掉后所有边界按照相同参数设置,如同图1所示UG自带加工策略。点击“后一边界”或“前一边界”显示相应边界的五参数。

图3 面余量分析模块对话框

图4 程序属性表

利用UIStyler提供的控件资源,组装好对话框,并规划好控件的布局,确定响应控件事件的回调函数,保存生成Edit_para.dlg,Edit_para.c和Edit_para.h文件。在Edit_para.dlg中自定义各回调函数后,通过编译生成Edit_para.dll。调用Edit_para.dll执行UG/Open API函数、访问Edit_para.dlg资源文件,实现面余量分析对话框界面功能。将最终计算结果存储在程序的属性表(Attributes)中,如图4所示。

所有数据保存完后,不同铸造平面根据属性表中对应的数值而生成不同高度的刀轨,铸造量大的就多加工几刀,铸造量少的就少加工几刀。

3 面余量分析模块设计流程

1)选择一个程序后进入面余量分析模块。系统判断所选程序是否包含加工边界mill_area,如果程序没有加工边界,则返回程序。

2)程序中存在mill_area,则等待用户下一步操作:单击批量修改毛坯余量按钮则进入3);单击批量修改底面余量按钮则进入4);单击Auto Parameter按钮则进入5);单击OK按钮,系统提示用户是否保存文件,如果需要则保存文件,程序终止;单击Back或Cancel按钮则程序终止。

3)判断是否选择了毛坯体,如果存在毛坯体则计算出毛坯余量值,如果没有毛坯体,则退出计算进入2)。

4)判断是否选择了毛坯体,如果存在毛坯体则计算出底面余量值,如果没有毛坯体,则退出计算进入2)。

5)判断是否选择了毛坯体,如果存在毛坯体则计算出当前边界对应的毛坯余量值和底面余量值等,点击后一边界计算下一边界各参数值,直至所有边界计算结束。如果没有毛坯体,则退出计算进入2)。

程序流程图如图5所示。

4 核心函数及算法

4.1 框选毛坯函数

图5 面余量分析模块程序流程图

图6 按类选择对话框

4.2 匹配与计算函数

4.3 某边界参数的计算与匹配方法

调用函数UF_MODL_ask_minimum_dist(),可以计算出object1与object2在三维空间中的最小距离min_dist,并得到object1与object2上最小距离点pt_on_obj1[3]和pt_on_obj2[3]。

匹配边界mill_area的最大距离毛坯面过程,如图7所示:1)利用API函数UF_MODL_ask_minimum_dist(),循环三个毛坯面face1-3,计算得到三组最小距离矢量vector1[3],vector2[3],vector3[3];2)加工mill_area时刀轴方向规定为ZC[3],找到与ZC[3]平行的矢量,将不平行的vector3[3]排除,即将face3排除;3)然后我们计算刀轴平行的两个面到边界的最小值min_dist 1,min_dist 2,我们得到最大值min_dist 1,计算结束,边界mill_area的最大距离毛坯面为face1,匹配成功。

图7 匹配计算方法

循环程序中所有边界,即可得到每个边界对应的毛坯余量值。

4.4 保存和调用计算结果

4.4.1 批量修改毛坯余量

使用函数UF_ATTR_assign(oper_tag,"CUSTOM_BLANK_DIS",value)将模具基体四角平面不同铸造量计算结果,存储到程序属性表(Attributes)中,如图4所示,其中value包含了数值:16,19,18,20 (所有毛坯余量都加上毛坯增量1mm,主要是考虑加工更加安全)。

4.4.2 批量修改底面余量

对于平面粗加工,底面余量是一致的,为0.5mm。同毛坯余量一样,存储在Attributes中。如图4所示,CUSTOM_FKOOR_STOCK属性值为0.5;0.5;0.5;0.5。

4.4.3 修改毛坯余量和底面余量

此功能是同时修改某一边界的毛坯余量和底面余量,这就不存在匹配问题,因为人工选择毛坯面就是做匹配。使用函数UF_UI_select_with_class_dialog()进行选择指定毛坯面,当只选择一个面时,只修改毛坯余量,选择两个面时,同时修改毛坯余量和底面余量。再指向下一边界继续选面修改参数,直至修改完所有边界参数,并将结果保存到属性表中。

4.4.4 数据使用

所有数据保存完后,等到程序生成时,调用属性表中所有参数,生成一个包含多个不同边界(加工面)不同层切深度(铸造量)的满足铸件毛坯特点的数控程序。

5 结束语

模具编程过程中,一些人机交互界面的输值对话,是经常犯错的地方。一个小数点的错误,可能在数控机床上造成重大生产事故。同时UG CAM模块因其商品化、通用化的特点,不可能满足复杂的模具制造,但是它拥有像API这样的开放性的体系结构,用户可以在通用CAM模块基础上,融入专业知识,构建专用CAM系统来满足要求。这也是UG软件具有强大生命力的原因之一。

[1]American EDS PLM solution,Unigraphics NX2.0 Help.

[2]董正卫,等.UG/OPEN API编程基础[M].北京:清华大学出版社,2002.

[3]黄翔,等.UG应用开发教程与实例精解[M].北京:清华大学出版社,2005.

[4]C++程序设计与数据结构基础教程[M].天津:天津大学出版社,2006.

猜你喜欢
毛坯对话框编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
正常恢复虚拟机
基于机器视觉的毛坯件磨削轨迹识别研究
Bootlace Worms’Secret etc.
What Is Beauty?
基于路径图的平面毛坯尺寸基准的研究
涡旋式汽车空调压缩机动盘毛坯加工用夹具研发