纪忠华 黄诗君 张茜
【摘要】标准件在产品设计的过程中占有很大比例,标准件库的开发是减少重复设计,提高设计效率的重要手段。基于UG,利用Journal及其他二次开发工具制作热流道系统的标准件库,开发效率高,并实现复杂功能,满足开发要求。
【关键词】标准件库;UG;二次开发;热流道
1.引言
UnigraphicsNX7.0(简称UGNX7.0)是当今世界上最先进和高度集成的、面向制造行业的CAD/CAE/CAM软件系统,被广泛应用于机械、模具等领域。NX7.0提供了强大的二次开发接口,支持Java、C++、C#等多种高级编程语言,为自动化和自定义NX提供了一个广发而灵活的环境。
热流道行业中,在标准的建立上仍有所不足,在进行产品开发中,建立企业的标准件库,是减少错误并提高设计效率的最佳手段。
2.UGNX7.0二次开发语言及工具
C++作为一门高级语言,不仅具有强大的函数/类库,而且与NX的最底层经典NXOpen C更是完美兼容,用C++作为开发语言更是支持.NET和Java两大语言的范型,面向对象技术,不仅为开发人员带来诸多便利,更是增加了代码的可读性,为后期程序的优化作准备。
西门子公司为NX设计了许多二次开发工具,BlockUIStyler使界面的开发变得更加方便,MenuScript定义了菜单的脚本语言,并可以创建工具栏。NX系统内嵌的Journal日志功能更是大大降低了二次开发的代码量。
3.标准件库的开发
标准件库的开发利用MenuScript建立工具栏,BlockUIStyler做出界面后生成.hpp和.cpp文件。在VisualStudio 2008(以下简称VS2008)中读取NX7.0 C++模板文件,建立并把生成的.hpp和.cpp文件导入,进行代码的编辑。
开发应用程序项目目录有startup,
application和prt。其中,文件夹startup中存放动态链接库(*.dll)和工具条脚本文件(*.tbr),application中存放对话框文件(*.dlx)、图标位图文件(*.bmp)和图像文件(*.jpg),prt用于存放图形模板文件。
具体开发配置如图1。
应用程序开过过程中需要调试,调试通过“UG->文件->执行->NX Open”执行debug编译成功的*.dll文件。程序发布时需使用release版程序,保证程序的健壮性,并为应用程序配置可执行路径。
图1
3.1 建立工具栏
以记事本格式编写脚本文件,编写完成后更改格式为.tbr,部分脚本内容如下:
TITLE 标准件库导入
VERSION 170
BUTTON fenliuban
LABEL 分流板
BITMAP
ACTION fenliubanpeijian.dll
BUTTON qiyougang
LABEL 汽/油缸
BITMAP
ACTION qiyougang.dll
……
工具栏设计效果如图2所示。
3.2 设计界面
进入NX7.0的块样式编辑器模块(Block UI Styler),设计各级界面(这里以分流板配件及主射咀作一二级界面为例)如图3、图4所示。
图2
图3
图4
界面设计完成,将生成的.hpp和.cpp文件导入VS2008的UG二次开发模板中,界面的跳转在主界面的回调函数update_cb()中完成,主要代码如下:
Intfenliubanpeijian::update_cb(NXOpen
::BlockStyler::UIBlock* block)
{
try
{
if(block == btZhushezui)
{
zhushezui *zsz=new zhushezui;//跳转至主射咀界面
zsz->Show();
}
}
要完成界面的跳转还需要在主界面代码中添加子界面程序的头文件,具体头文件代码如下:
#include”fenliubanpeijian.hpp”
#include”fangzhuanxiao.hpp”
#include”fareguanjietou.hpp”
#include”luosi.hpp”
#include”redianou.hpp”
#include”yalijiezi.hpp”
#include”zhongxinding.hpp”
#include”zhushezui.hpp”
3.3 子界面功能设计
标准件库中部件的导入是通过现有部件的名称及型号进行调用、判断进而选择模型文件。导入方向与模型WCS方向一致,可根据需要在目标文件中修改WCS方向再进行调用,调用位置根据“指定原始点”确定,模型方向通过“指定原始点”与“指定方向点”确定,程序附带一个-Z轴移动距离功能,方便用户进行面操作之后的移动。代码在子界面程序的apply函数中的try函数中添加,主要代码如下:
partImporter1->SetFileName
(“\\\\192.168.1.3\\rui\\UGkaifa\\reliudao-3D\\01-fenliubanpeijian\\zhushezui\\”+str+”.prt”);//获取标准件文件名称
......
NXMatrix *nXMatrix1;
WCS* wcs=workPart->WCS();
NXObject *nullNXObject(NULL);
//--------------------------//通过“指定原始点”与“指定方向点”重新定义要导入部件的WCS方向
//----------------------------
Point3d opoint=point0->GetProperties()
->GetPoint(“Point”);
Point3d pointY,originp(0,0,0);
pointY=point01->GetProperties()->GetPoint(“Point”);
Vector3d vecz(0,0,1),vecy(pointY.X-opoint.X,pointY.Y-opoint.Y,pointY.Z-opoint.Z);
Direction *directionY,*directionZ;
directionY=workPart->Directions()->CreateDirection(originp,vecy,SmartObject::
UpdateOptionWithinModeling);
directionZ=workPart->Directions()->CreateDirection(originp,vecz,SmartObject::
UpdateOptionWithinModeling);
Point *point1;
point1=workPart->Points()->CreatePoint
(opoint);
Xform *xform1;
xform1=workPart->Xforms()->CreateXformBy
PointYDirZDir(point1,directionY,directionZ,
SmartObject::UpdateOptionWithinModeling,
1.0);//建立坐标系
......
double dble=double0->GetProperties()->GetDouble("Value");
Point3d destinationPoint2(destinationPoint1.X,destinationPoint1.Y,destinationPoint1.Z-dble);//设置-Z轴的移动距离
(篇幅原因只简述部分代码)
3.4 配置程序执行路径
开发完成后,将程序发布,需要将程序打包,并制定程序说明书,说明程序的配置及使用方法。开发环境通过配置文件方法进行配置,将配置文件(“$(UGII_BASE_DIR)\ UGII\menus\custom_dirs.dat”)用记事本格式打开,并将程序执行路径添加到最后一行,如图5所示。
图5
配置程序之后重新启动UG主程序,在菜单项中即可找到自定义程序入口。
4.结论
通过UG二次开发技术,研究并建立了热流道系统的标准件库,极大程序地减少了标准件重复设计的时间,系统界面简便且人性化。系统简便实用,降低了设计者的劳动强度,对设计效率有很大提高。
参考文献
[1]唐杰,张祥林.C++在UG二次开发中的应用[J].现代机械,2007(1):80-82.
[2]王艺树,张毅,梁强.基于UG的参数化标准件库的研究与实现[J].信息与技术,2009,38(2):127-129.
[3]周临震,李青祝,秦珂.基于UGNX系统的二次开发[M].江苏大学出版社,2012.
[4]UGS公司.NX7.5 HelpLibrary[Z].2010.
作者简介:纪忠华(1990—),男,江苏东台人,广东工业大学硕士研究生在读,研究方向:NX二次开发。