APP下载

基于UG二次开发的榴弹外形结构设计系统关键技术研究

2019-04-15刘松健赵捍东曹红松

测试技术学报 2019年3期
关键词:榴弹二次开发程序

刘松健, 赵捍东, 曹红松, 刘 闯, 刘 胜

(中北大学 机电工程学院, 山西 太原 030051)

0 引 言

榴弹作为构成火炮弹药的基本弹种, 在杀伤敌人有生力量, 摧毁敌人防御工事、武器装备及其它军事设施上有着不可替代的作用. 在现代战争中, 对榴弹的战术技术要求越来越越具体化和多样化, 榴弹的设计要迅速反映现代战争的需求[1]. 随着计算机技术的发展, 数字化设计技术在弹药设计工作中有着越来越广泛的应用. 大量的专家学者已经在弹药的数字化设计系统研究上取得了显著成果[2-5].

目前, 各类弹药数字化设计系统所采用的参数化建模技术主要为基于交互式运行模式的UG二次开发技术. 该模式允许开发人员直接添加菜单项, 从用户对菜单的交互操作中调用程序, 实现和UG界面的无缝集成并扩充成所需的特定功能. 采用该技术的UG二次开发应用程序开发简单、操作灵活, 执行时的每个步骤都能从UG的客户窗口中得到动态反映, 能方便地通过UI界面对象来实现与用户的交互、屏幕选取等复杂操作[6,7]. 然而基于该模式的应用程序必须在UG框架内执行, 导致该类方法存在集成于某一设计系统中时会出现数据交互不便, 无法同时对多个零件进行批量操作等缺陷. 本文为了使UG二次开发应用程序能够独立运行, 适合集成在数字化设计系统中, 实现对多个部件进行快速操作等功能, 在榴弹外形结构设计系统中采用了基于批处理运行模式的UG二次开发方法.

1 系统构成

该系统由C#语言在 Visual Studio 2012(以下简称VS2012)环境下进行开发, 总体架构为典型的4层体系结构, 包括用户层、应用层、数据层及驱动层, 系统框架如图 1 所示.

用户层是软件的交互界面, 用户通过由C#编写的可视化界面调用系统的各功能模块完成设计工作.

应用层主要由榴弹设计和快速建模两个功能模块构成. 其中, 榴弹设计模块分为口径及用途选择模块、榴弹质量初步选择模块、榴弹外形设计、榴弹内腔设计和榴弹装药选择5个子模块; 快速建模模块分为引信建模、弹体建模、弹带建模、药柱建模和榴弹装配5个子模块.

数据层即为软件的数据库, 由各类数据文件组成. 系统通过读取相应的数据文件得到设计工作中所需的各项参数, 并将设计结果保存在新建的数据文件中, 各功能模块通过对该数据文件进行读写完成数据交互.

驱动层是在VS2012环境下, 将程序进行编译, 完成各模块功能的实现. 系统通过NXOpenAPI函数从后台调用UG, 完成对模型的快速操作.

图 1 系统框架图Fig.1 System frame diagram

2 榴弹的参数化模型

榴弹的参数化模型根据功能模块的设计结果生成. 三维模型的建立流程如图 2 所示.

图 2 榴弹的三维模型建立过程Fig.2 Three-dimensional modeling process of grenade

2.1 榴弹模型的设计流程

榴弹模型的设计流程由榴弹设计功能模块实现, 该模块程序根据相关弹药设计理论知识整理得到. 模块功能涵盖了榴弹设计过程中给定最大射程、榴弹口径选择、引信选择、榴弹质量初步设计、榴弹外形设计、弹带设计、榴弹内腔设计和榴弹装药选择等主要内容[8,9].

模块程序通过对外弹道数据文件和各项设计参数文件的读取完成设计工作中对部分外弹道设计参数的查询及各步骤中所需设计参数的调用, 并完成相关计算工作. 榴弹模型的设计结果被储存在新建的ini文件中, 建模模块通过读取ini文件调用相应的UG二次开发应用程序完成三维模型的绘制, 设计功能模块的主界面及设计结果如图 3 所示.

图 3 榴弹的设计结果Fig.3 The result of shell design

2.2 榴弹的参数化模型

榴弹的参数化模型如图 4 所示. UG在建立三维模型时需要先绘制草图, 而绘制该草图的过程即为榴弹的参数化模型. 建模模块根据不同类型的设计结果调用相应的建模程序模板, 将设计结果中的参数带入至建模程序中, 驱动建模程序完成草图的绘制. 设计结果中各参数与榴弹参数化模型中的参数对应如表 1 所示.

其中, 口螺处的半径R2按照螺纹的内径选取. 外圆弧与内圆弧需要根据其圆心坐标、半径以及起止位置的角度确定.

图 4 榴弹参数化模型Fig.4 Parametric model of grenade

圆弧起始角度

圆弧停止角度

圆柱部定心部宽度L2,L4等长, 弹带槽宽L5根据所选弹带确定;

非定心部段长度

L3=L13-L2-L4-L5.

非定心部段半径R7略小于定心部处半径R6, 与尾柱部半径R8相等;

弹底半径R11=R8-L7×tanθ2;

弹丸内腔圆柱部半径

截锥部长

L11=L13-L8-L9-L10-L12.

弹底半径

R5=R4-L11×tanθ1.

当修改榴弹设计参数时, 模型中对应参数也会随之变化, 以此来达到快速修改榴弹模型的效果.

表 1 模型参数与设计参数对应关系Tab.1 The correspondence between model parameters and design parameters

3 参数化建模方法

3.1 程序模板配置

本文采用的平台为UG NX10.0与VS2012. 将UG的根文件夹NX10.0下的UGOPEN文件夹中vs_files里的VC#文件夹复制到VS2012根文件夹Microsoft Visual Studio 11.0完成开发环境的搭建. 在VS2012中新建UG10开发模板并在设置向导中选择外部类型, 再向所配置的开发模板中添加根据设计结果绘制榴弹模型的操作步骤代码, 最后将模板发布为exe文件, 以供建模模块调用.

3.2 快速建模方法

本文通过VS2012编写NX OpenAPI程序从外部驱动UG完成建模的各个步骤. NX OpenAPI是一个允许程序访问并改变UG对象模型的程序集, 并且封装了近2 000个UG操作函数[10]. 它是VS2012与UG的接口, 通过它可以对UG的图形终端进行操作[11].

3.2.1 弹体的创建

榴弹弹体作为回转体, 在建模过程中, 可以通过草图绘制母线, 再通过建立回转特征得到. 榴弹弹体母线的构成元素主要包含直线和圆弧.

1) 直线元素的添加通过函数CreateLine()绘制再用函数AddGeometry()添加至草图中.

2) 圆弧元素的绘制通过函数CreateArc()完成, 函数所需的参数有圆心坐标、圆弧半径和起止弧度. 再通过函数AddGeometry()添加至草图中.

3) 回转特征的构建由回转特征构造器RevolveBuilder实现, 建立回转特征需要的参数有: 构造器所使用的截面Section、用于生成回转特征的截面线Geometry、回转方向以及回转轴线Axis, 由构造器的CommitFeature()函数提交特征, 完成对回转特征的构建.

3.2.2 口螺的创建

榴弹弹体与引信的连接通过口螺实现, 因此在建模过程中需要对口螺进行绘制. 在UG的API函数库中, 并无用于直接创建螺纹类特征的API函数, 所以需要通过扫掠特征和切除运算模拟机加工中对螺纹的切制来实现口螺的创建, 具体步骤如下:

1) 根据螺纹的牙型添加需切除部分的草图, 添加方法与上文相同.

2) 创建螺旋线, 螺旋线由构造器HelixBuilder进行创建, 并根据螺纹的参数对构造器中的Value(直径)、PitchLaw(螺距)、StartLimit(起始位置)、EndLimit(终止位置)4个成员进行设置, 确定螺旋线的尺寸, 再通过设置CoordinateSystem(坐标系统)成员确定螺旋线的位置与方向.

3) 创建扫掠特征, 扫掠特征由构造器SweptBuilder进行创建, 建立扫掠特征所需的参数有: 构造器所使用的截面Section、用于生成扫掠特征的截面线Geometry(通过选取草图中的所有曲线)、 用于生成扫掠特征的引导线Spline(通过选取构成螺旋线的样条曲线)以及扫掠过程的定位方法OrientationMethod. 由构造器的Commit()函数提交特征, 完成扫掠特征的创建.

4) 布尔运算切除, 将回转特征作为参数代至构造器BooleanBuilder中的Add()函数中, 完成将弹体作为目标体的操作, 选取扫掠特征为函数CreateRuleBodyDumb()的参数完成对工件具体的选取; 由构造器的Commit()函数提交特征, 完成对口螺的切制.

3.2.3 弹体、引信、弹带的装配

榴弹的各部分三维模型绘制完成后, 装配工作同样可以由API函数完成. 通过API函数进行装配时, 各组件的定位方式均为绝对原点. 二次开发程序根据各组件在装配体中的位置以及自身尺寸, 计算装配时所需的偏移量和旋转量, 并以此为参数添加到装配体中.

坐标偏移存放在变量Point3d(X,Y,Z)中, 旋转方向存放在变量Matrix3x3(Xx,Xy,Xz,Yx,Yy,Yz,Zx,Zy,Zz)中. UG二次开发应用程序通过坐标偏移和方向旋转的方式完成各组件的装配. 各部件的加载操作则由函数OpenBase()完成, 二次开发程序将部件的路径filePath作为参数代入至函数OpenBase(), 再由函数AddComponent()根据坐标偏移和旋转方向将组件添加至装配体中. 最终三维模型如图 5 所示.

图 5 榴弹的三维模型Fig.5 The three-dimensional model of the shell

因此, UG二次开发程序可以通过多次调用函数OpenBase()在一个程序中多次打开不同的三维模型, 再通过调用不同的API函数对打开的三维模型进行快速操作, 以此来实现在一个应用程序中对多个模型进行快速操作. 另一方面, 当面对较为复杂的模型时, 亦可以将模型拆分为数个外形较为简单的组件, 通过执行一个或多个UG二次开发应用程序完成对各组件的操作, 再利用OpenBase()与AddComponent()函数将组件进行装配, 完成对一些外形较为复杂的模型的参数化设计.

4 结 论

本文在榴弹设计理论研究的基础上, 将基于批处理模式的UG二次开发技术与参数化设计方法相结合, 开发了一种榴弹外形结构参数化设计系统. 根据可视化界面的设计内容, 建立了榴弹弹体的三维CAD参数化模型, 通过NXOpenAPI函数从后台调用UG完成系统三维模型的快速操作, 弥补了基于交互式运行模式的UG二次开发应用程序必须在UG框架内执行, 集成于某一设计系统中时会出现数据交互不便, 无法同时对多个零件进行批量操作等缺陷. 为今后相关数字化设计平台的集成及复杂模型的参数化设计提供了参考.

猜你喜欢

榴弹二次开发程序
浅谈基于Revit平台的二次开发
米尔科姆公司向南非国防军提供Y4型6发榴弹发射器
浅谈Mastercam后处理器的二次开发
试论我国未决羁押程序的立法完善
中国LG6型40毫米半自动榴弹发射器
西门子Easy Screen对倒棱机床界面二次开发
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
创卫暗访程序有待改进
美国将于2015年底完成40mm智能榴弹的研制