基于UG NX/OPEN二次开发Journaling技术的注射模浇注系统设计研究
2022-01-25张作胜朱振国陈传胜
张作胜,张 勇,朱振国,陈传胜
(1.安徽职业技术学院 机械工程学院,安徽 合肥 230011;2.合肥工业大学 材料科学与工程学院,安徽 合肥 230009)
注射模具的浇注系统是指从注射机喷嘴出口起到模具型腔入口止的塑料熔体流动通道。浇注系统的设计是注塑模具射中的关键部分,设计的好坏直接关系到注塑产品的质量。
对于在CAD 软件下注塑模具浇注系统的二次开发,已有许多文献论述。蒋易立在Pro/ENGI⁃NEER软件中开发出浇注系统模块[1],用户通过输入相应信息和数据库提示的参数即可生成不同的流道。周春英利用Pro/E 的Pro/Toolkit,在Visual C++编辑环境下开发了适合于大壁厚塑料制品注塑模浇注系统的应用程序[2]。周晓静用Microsoft Visual Studio 2010 结合UG 二次开发工具UG Open 开发出了专用泵类浇注系统模块与专用泵阀类浇注系统模块[3]。魏庆强等以UG7.5 为平台,VC++6.0 和 UG/OpenAPI 为二次开发工具,开发了专用于DISA 造型线的三维CAD 铸造工艺设计系统[4]。
以上观点和方法的提出为注塑模具浇注系统的二次开发带来了很好的思路,但较少有人基于VB.NET 平台使用Journaling 技术来辅助二次开发。结合前人的分析理论,本文基于UG/OPE 二次开发平台,使用VB.NET开发语言,结合Journal⁃ing 技术进行注塑模具浇注系统参数化设计模块开发,从实现浇注系统的快速设计。
1 UG/Journaling技术概述
Journaling是UG NX的一种自动化技术,其原理是通过录制UG NX 相关操作记录成日志文件,下次直接执行该日志文件即可完成同样操作[5]。Journaling 的特点就是“录制+重放”,但是其本身没有参数化的功能。
使用Journaling 技术的一般思路是“录制操作→生成代码文件→修改代码→生成DLL 文件”,这样可使Journaling代码成为UG菜单上一个独立的、参数化的命令。在二次开发中,采用.NET(本文采用VB.NET)平台下UG/Journaling,给建模经验丰富但编程经验不足的科研技术人员提供了示范作用和快速获得代码的途径。
2 注塑模浇注系统模块的二次开发
2.1 VB.NET开发环境
Visual Basic.NET 简称 VB.NET,相比 C++、Python 等语言,更加简单易学,应用范围很广,也是UG/Journaling 技术录制操作时推荐使用的代码格式。基于VB.NET 平台,使用UG/Open MenuScript 进行二次开发菜单、工具条用户化开发[6],并用 UG/Open UIStyler 为应用程序开发与UG NX 风格一致的交互界面,再结合UG/Journal⁃ing 技术录制代码,可快速进行UG/Open 二次开发。
使用NX Open for VB.NET 开发过程如图1所示。
图1 基于VB.NET二次开发流程
2.2 浇注系统模块二次开发关键步骤
2.2.1 UG NX浇注系统菜单条制作与工具条制作
UG/Open MenuScript是UG NX软件用于自定义NX 菜单的脚本语言,通过编辑MenuScript脚本语言可添加与UG NX 软件相同风格的新菜单项,用来执行用户二次开发程序。
在有关UG NX 二次开发相关的大量论文中,大多数只对菜单和普通工具条制作进行了研究,而对从NX9.0就开始使用的Ribbon风格工具条则涉及很少,即使有也仅是只字片语的描述,没有深入的研究。对于菜单的代码编写,这里不再赘述,而着重探讨Ribbon 风格工具条的设计方法。因为相关资料很少,除了软件的帮助文件外,UG NX软件安装目录UGII/MENUS 下的*.rtb 文件结构也给我们提供了研究思路。通过大量实践,我们发现在*.rtb 文件中,可使用 GROUP、CASCADE、COLLAPSED 等关键字。还可以把不同风格的UI制作成不同格式的文件,如*.ddb 文件(可变换图标的下拉式按钮)、*.csb 文件(不会变换图标的下拉式按钮)、*.gly(galley 库样式)文件以及*.grb 文件(group 文件)等,最终我们编写的浇注系统Rib⁃bon风格工具条代码如下所示:
将其命名为rbn_jzxitong.rtb,并放入applica⁃tion→profiles→UG_APP_MODELING 文件夹下,其目的是当NX 软件处于建模环境下时,浇注系统二次开发程序Ribbon工具条才显示出来。
启动UG NX12,新建一个部件或打开某个部件,进入建模模块,可验证浇注系统菜单条和Rib⁃bon 工具条已经创建完成。在帮助菜单之后出现了“浇注系统”的菜单项,如图2所示。
图2 浇注系统菜单
在NX12 界面上出现“浇注系统”的选项卡及浇注系统相关命令按钮,如图3所示。
图3 浇注系统Ribbon工具条
2.2.2 浇注系统界面UI设计
二次开发的UI 界面是人机交互的基础,在UG NX 的二次开发中,主要使用 UI Styler 来设计UI 界面。根据浇注系统二次开发程序功能的需求,选择合适的对话框控件,像叠方块一样画出满意的UI Styler对话框。保存后会得到两个后缀名不同的文件,其一是*.dlx 文件,用于描述对话框的组成,这个文件实际上是xml 格式的文本文件,最终呈现出来的就是浇注系统的UI 界面[7]。另一个是*.vb文件,可使用VB.NET进行编辑来完成进一步程序编写工作。以“唧嘴定位环”UI 界面设计为例,生成的VB 文件命名为JZ_dwh.vb,UI界面文件为JZ_dwh.dlx,开发好的界面如图4所示。
图4 浇注系统唧嘴定位环界面
2.2.3 使用UG/Journaling 进行浇注系统建模
(1)录制操作记录
设置日记语言类型为Visual Basic,之所以选择VB.NET 作为二次开发语言,是因为VB.NET 比起C++、C#语言更简单易学。但基于VB.NET 平台的UG NX 二次开发的文献论述较少,所以更值得我们研究。
以唧嘴定位环三维建模为例,步骤如下:新建一个PRT 文件,任意命名并进入建模环境;打开日记下的录制命令(工具→操作记录→录制),命名为JZ_dwhcx.vb,定位环如图5所示,其未知参数可自行定义,此处我们只需要录制好的.vb 文件。建模完成后,停止操作记录的录制。
图5 定位环
(2)将UI界面和应用程序关联
操作记录录制完毕以后,如何将代码与浇注系统UI 界面(图4)关联起来是设计的关键一环。继续以唧嘴定位环为例,在VB.NET 中新建一个项目,选择Class Library 类型的项目(DLL 文件),然后将JZ_dwh.vb(保存UI 界面时生成的VB 文件)添加到项目中,并引用三个DLL,即NXOpen、NXOpen.Utilties 和 NXOpenUI。
编写对话框回调函数是将UI 界面和应用程序关联的最重要一步。在NX 的对话框中参数设置完成后,一般按OK 或Apply 按钮执行操作,按Cancel 退出这个命令。NXOpen 对话框的操作使用了回调函数技术来判断用户按了哪个按钮,所以我们只需要完善JZ_dwh.vb文件中OK、Apply和Cancel三个回调函数的代码即可。
(3)修改日志文件,生成.dll文件
拷贝JZ_dwhcx.vb(主流道建模录制产生的vb文件)中的源代码至上述回调函数“JZ_dwh.vb”的 apply_cb()函数体内。
使用UG/Journaling录制的VB代码,有的可能是重复和无用的信息,比如录制代码文件中生成的 mark 变量,在二次开发中没有实际意义,要手动删除,否则将影响程序运算速度[8]。我们需要在进行程序阅读的时候进行辨别,从中提取有用的代码,然后对这些代码进行适当的修改,加入需要在定制模块中实现的知识和逻辑,才能进行人机交互。
在录制的VB.NET 程序中,基准坐标点、角度和长度等参数的设置是通过计算确定的。而在交互操作中,这些参数往往是从UI界面的输入框中获取,其关键代码是:
X=XXX.GetProperties.GetDouble("Value")
GetProperties.GetDouble("Value")函数将从UI 界面提取的参数传递给变量X,更多的函数可以从UG NX帮助文件获取。
以定位环为例,根据它的构造特点设置相应变量,变量的目的在于通过参数变量把用户输入文本框的定位环尺寸传递至运算程序。对录制后的代码进行改造如下(只展示部分关键代码):
这种通过录制代码改造的方法可以大大减少编写代码的工作量,修改完毕的代码文件可编译生成.dll 文件。通过这种方式生成二次开发浇注系统所有模块的*.dll 文件,并将它们和菜单文件*.men、位图等相关资源文件分别拷贝至Startup或Application目录,完成浇注系统的二次开发。
2.3 程序的执行
二次开发完成后,用户在浇注系统参数化建模过程中只需通过菜单项或者工具条选择相应命令,在弹出的对话框中输入参数,即可实现浇注系统各部分的快速建模。图5为D=100,D1=36的定位环三维模型。
图5 定位环三维模型
3 结语
本文以VB.NET 为开发语言,重点研究了UG NX 软件的 UG/Open 和 Journaling 技术相结合的开发方式,通过修改少量关键代码方式实现了注塑模具浇注系统模块的二次开发。
实践表明,通过 .NET 和 Journaling 进行 NX 二次开发,具有简单、高效和灵活的特性。随着UG NX 版本的升级,其Journaling 功能肯定会更加完善,用户修改代码的工作量也会越来越少,从而使本方法更加快捷。