APP下载

基于NX/Open API与Grip技术的渐开线内齿轮开发

2011-07-10刘军辉

制造业自动化 2011年15期
关键词:渐开线二次开发菜单

刘军辉

(河源职业技术学院,河源 517000)

0 引言

Siemens NX 是一款集工程设计、制造和分析的综合3D软件,在机械领域发挥着重要作用。针对渐开线内齿轮的设计,NX并没有现成的齿轮模块,需要在齿轮技术参数的分析与计算基础上,运用基本的建模功能对其进行繁琐的渐开线绘制、齿轮参数表达式的建立和实体造型。设计步骤较为复杂,效率底下,且在进行参数设计时容易出现错误。因此,开发出独立的齿轮模块非常有必要,本文以NX/Open API和Grip编程技术开发出一具体的渐开线内齿轮模块,使内齿轮的设计很好的传承NX的“参数化设计”思想,通过输入内齿轮的参数就可以自动设计出来。

1 二次开发的整体思路及内齿轮参数分析

图1 内齿轮开发流程

在渐开线内齿轮的二次开发过程中,需要设计菜单、用户对话框和Grip程序。菜单的设计采取MenuScript脚本进行设计,用户对话框UI界面的设计则运用UG/Open,把内齿轮的Grip编译程序grx导入VC++ 6.0进行处理,最终得到所需的渐开线内齿轮模块DLL文件,具体流程如图1所示。

在进行渐开线内齿轮开发之前,需要分析它的渐开线方程和参数。渐开线对于齿轮有着重要的作用,它是齿轮的工作齿廓,它保证了齿轮传动具有瞬时传动比恒定、传力方向恒定、传动中心距具有可分性等特点[1]。渐开线的参数方程为:

渐开线内齿轮参数定义如下:

其中,rb为基圆半径,Φ为形成渐开线的旋转角度,m为模数,z为齿数,ha为齿顶高系数,c为径向间隙系数,d为分度圆直径,db为基圆直径,da为齿径圆直径,df为齿根圆直径,α为压力角,s为分度圆上齿轮的厚度。

2 二次开发关键技术流程

在开发之前,首先确定齿轮开发的目录:E:gear,并且在此目录下创建文件夹startup和application,前者存放菜单文件(.men)和模块动态链接库文件(.dll),后者存放UI交互界面文件(.dlg)。

2.1 菜单设计

用于NX菜单的设计语言为MenuScript脚本,它能方便的对NX菜单进行更改和增减,本文在NX的菜单“窗口”前加入一个菜单“内齿轮设计”,菜单文件命名为:gear.men,内容如下所示:

VERSION 120

EDIT UG_GATEWAY_MAIN_MENUBAR

AFTER UG_APPLICATION

CASCADE_BUTTON gear_menu

LABEL 内齿轮设计

END_OF_AFTER

MENU gear_menu

BUTTON gear

LABEL基于UG/Open 与Grip渐开线内齿轮的二次开发

ACTIONS gear.dlg

END_OF_MENU

其中gear.dlg为后续设计的UI交互界面名称,它在点击菜单后弹出。在启动NX前,添加一个设置环境变量UGII_USER_DIR= E:gear,启动NX如图2所示。

图2 菜单设计

2.2 UI交互界面设计

在设计UI交互界面时,利用NX集成的UIStyler进行,它是一种所见即所得的模式,可以方便快速的设计出用户对话框窗口。在界面设计前先分析渐开线内齿轮的关键输入数据,通过这些数据可以唯一的决定内齿轮规格。按照内齿轮的参数要求,有如下数据需要选取:内齿轮外径、模数、齿数、压力角、齿顶高系数、径向间隙系数和齿宽,其中只有齿数为整数类型Interger,其余全部为Real类型。

启动NX进入“样式编辑器模式”,选择“确定和取消”按钮类型,加入上述输入参数的元素,并对其输入名称,如图3、4所示。

图3 UI界面

图4 UI属性框

保存后形成3个文件:头文件(.h)、C文件(.c)和界面文件(.dlg),在进行界面与Grip程序数据互通时需要在C文件上编写相应的功能代码,将dlg文件拷贝到startup文件下供菜单调用。

2.3 Grip建模程序设计

渐开线内齿轮的设计,先要绘制出基圆、分度圆、齿顶圆和齿根圆曲线,再依据参数决定的渐开线进行齿廓曲线绘制,其余齿廓曲线采取环形阵列的方式完成,创建完曲线之后利用齿顶圆曲线进行实体拉伸,用齿根圆曲线进行实体剪切,最后用渐开线齿廓曲线进行齿剪切成形。在对Grip进行程序设计时,为了防止内齿轮生成失败,必须加入条件判断,限制不合理的数据输入,如齿顶圆不能小于基圆。Grip关键代码如下:

number/dd,m,z,a,ha,c,w $$ 定义齿轮参数数据;

……

$$ 数据合理性判断;

ifthen/da<db

$$ 渐开线曲线方程如上述渐开线内齿轮参数的定义

$$ 运用创建的曲线进行实体建模

编写完成后运用NX自带的编译工具进行编译,得到内齿轮建模文件gear.grx。

2.4 UI界面与Grip数据传递程序设计

启动VC++ 6.0,对其开发环境进行设置,在【Project】/【Setting】的【Link】选项卡中添加:libufun.lib和libugopenint.lib两个库文件[2],把前面步形成的gear.c更改为c++程序:gear.cpp,并且把它与gear.h加载进VC。在针对gear.cpp的程序编写中,主要是编写相应“确定”按钮的回调函数int GEAR_ok ( int dialog_id, void * client_data,UF_STYLER_item_value_type_p_t callback_data)。为了读取UI界面数据程序的清晰,设计参数读取函数:void Read_para(int dialog_id),其中关键代码如下:

……

UF_STYLER_item_value_type_t data[7];//data[7]为UI界面操作的结构体数据类型;

……

data[0].item_attr=UF_STYLER_VALUE;//获取UI整体界面属性;

data[0].item_id= GEAR_D;//获取内齿轮外径元素属性;

UF_STYLER_ask_value(dialog_id,&data[0]);//获取内齿轮外径数据并存入&data[0]中;

……

回调函数GEAR_ok通过调用Read_para建立UI界面与Grip 程序的数据传递,关键代码如下:

完成gear.cpp的编程后,对其进行编译连接,生成对应的gear.dll,将它拷贝到application文件夹下,启动NX,运行结果如图5所示。

图5 内齿轮

3 结束语

NX功能的强大,不仅仅体现在它本身内置的一些功能,还体现在它对二次开发的强大支持上,只有充分的挖掘NX的潜能,定制具有专业特色领域的NX功能,才能更高效准确的进行设计。本文很好的阐述了运用NX/Open API与Grip技术进行渐开线的内齿轮开发,利用这种开发思路可以开发出其余种类的齿轮,为机械齿轮领域的NX参数化设计提供了条件。

[1] 张志强,夏尊凤,许焰.任意转角位置的渐开线齿轮齿面参数方程的研究[J].机械设计与制造,2005,8(8):52-54.

[2] 夏天,吴立军.UG二次开发技术基础[M].电子工业出版社,2005:89-90.

猜你喜欢

渐开线二次开发菜单
基于NURBS理论的渐开线齿轮齿面修复
基于Pro/E的渐开线内花键安装盘参数化设计
中国新年菜单
用修正渐开线投影法螺旋铣球面宏程序的编制
西门子Operate高级编程的旋转坐标系二次开发
浅谈Mastercam后处理器的二次开发
西门子Easy Screen对倒棱机床界面二次开发
渐开线齿廓链轮梳齿刀的设计
本月菜单
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用