APP下载

发射药药型参数驱动结构建模方法研究

2019-06-25郑向阳张领科符少波

火炮发射与控制学报 2019年2期
关键词:草图二次开发绘制

郑向阳,张领科,符少波

(1.南京理工大学 能源与动力工程学院,江苏 南京 210094;2.西安北方惠安化学工业有限公司,陕西 西安 710300)

火炮的内弹道设计是装药设计的核心,基本任务是根据内弹道设计所给定的弹道指标确定膛内构造参数和装填条件等。发射药是火炮的主要能量来源,也是火炮装药设计的关键元件,在装药设计中,选择合适的发射药及药型,求解装填条件、计算发射药弧厚等是设计的主要任务[1]。随着武器的发展以及武器性能要求的不断提高,装药设计的重要性越来越突出。

在内弹道设计过程中,要考虑火炮膛内的实际最大装填密度(极限装填密度)Δj,设计方案的装填密度Δ不能大于此数值[2]。Δj的确定会直接影响内弹道设计方案的优劣性和可行性,在发射药密度、火炮药室结构、装填方式等参量确定以后,Δj的确定主要与发射药的形状和药型参数有关,对于固体粒状发射药,在装填时可将其视为颗粒物,颗粒的形状大小将直接影响颗粒的堆积密度,从而影响Δj.目前对于不同形状的发射药,Δj是未知的,通常根据装填经验将Δj取一定的数值范围,为了提高设计的可靠性,一般需要留出较大的设计余量,当弧厚等药型参数改变时甚至忽略对Δj的影响。因此,在现代火炮所追求的机动性高、威力大、精确打击等目标下,研究发射药药形对装填密度的影响具有重要的意义,而这一研究需要以生成发射药三维模型为前提,笔者根据发射药的药型参数来驱动结构建模方法的研究,并模拟了一种模块装药的装填过程,初步验证了相同条件下不同药形发射药的装填密度具有差异性。

1 发射药结构建模概述

目前多孔粒状发射药得到了广泛的应用,其药形主要包括圆柱形、梅花形等,以多孔粒状发射药的三维模型为颗粒离散元模型,运用离散单元法可进行装填过程的仿真,来研究发射药药形对装填密度的影响。因此,实现发射药药型参数驱动结构建模可为后续工作带来极大的便捷。

1.1 SolidWorks二次开发概述

SolidWorks API是基于COM组件技术构造的,通过COM技术为开发人员提供了强大的二次开发接口(API),凡是支持COM编程的开发工具均可用于SolidWorks二次开发[3]。常用的二次开发工具有Visual Basic、C++、VBA、C#等,各有优势。

C#具有可视化操作和高效运行效率的优点,且在界面设计和数据库编程等方面功能强大,同时支持.NET Framework技术,使其成为目前流行的开发工具之一[4-6]。此外,SolidWorks可通过宏录制生成C#的*.csproj文件,可为二次开发提供便捷的参考代码。笔者采用C#生成EXE文件的形式对SolidWorks进行二次开发。

1.2 发射药药形选择

目前对于小口径自动炮、中小口径加农炮、榴弹炮以及一些大口径火炮都采用多孔粒状火药。这种形状的火药能方便地适应多种枪炮弹道性能的需要,且装填密度大,能实行机械化装填,药形制造也不困难[7]。表1为部分单基药药形尺寸表[8]。

表1 部分单基药药形尺寸表

由表1可知,多孔粒状火药在各种火炮中得到了广泛的应用。根据装药的应用情况,本文的发射药药形采用圆柱形和梅花形。

1.3 整体设计思路

发射药药型参数驱动结构建模的设计思路,主要包括:操作界面设计、关联Access药型参数数据库、分析发射药药型特征、编写二次开发程序等。

发射药实物模型如图1所示,操作界面如图2所示,界面上的数据库窗口关联药型参数数据库,显示数据库内容,并可通过窗口更新数据库内参数。

二次开发流程图如图3所示。

2 药型参数驱动结构建模方法

2.1 关联药型参数数据库

建立的发射药药型参数数据库,发射药药形包括圆柱形和梅花形,药型特征如图4所示, 图中,e2为弧厚,d0为孔径。

圆柱七孔药型参数关系有:

D=4e2+3d0,

(1)

式中,D为外径。

梅花十九孔药型参数关系有:

D=6e2+5d0.

(2)

根据药型参数关系,所建立的药型数据库包含的参数主要有药型、孔数、孔径、弧厚和长度。

运用DataGridView控件绑定数据库,如下函数可将数据库的内容显示在窗口中:

tableAdapter.Fill(dataSet.dataTable).

如下函数可将显示在窗口中的药型参数更新到数据库中:

tableAdapterManager.UpdateAll(dataSet).

2.2 药型特征分析与建模方法

通过对SolidWorks二次开发,实现发射药药型参数驱动结构建模,生成的发射药三维模型如图5所示,建模方法为分为两步:

1)绘制发射药径向截面草图。

2)拉伸特征。

重点在于草图的绘制,以此体现发射药的药型特征。

由图4可知,发射药三维建模的难点在于确定发射药径向截面上药孔位置以及梅花状发射药花边的画法。由图4(a)可知,圆柱七孔的药型特征比较简单,草图即绘制8个相对位置符合药型特征的圆形。梅花十九孔的药型特征较复杂,可利用其水平和垂直方向的对称性,先绘制如图6所示的四分之一草图,包括7个孔和4条圆弧,然后再通过水平镜像和垂直镜像,得到图4(b)所示完整的径向截面草图,重点在于确定孔与圆弧的坐标。

由梅花药型特征可知弧1~4分别以孔3、5、7和6的圆心为弧心,以弧厚与孔半径之和为弧半径画圆,交于点B、C、D和E后形成4条圆弧。以孔1圆心为原点,右方向为x轴,上方向为y轴建立直角坐标系。孔的坐标可通过圆心坐标来表示,弧的坐标通过弧心、弧起点坐标和弧终点坐标来表示。弧1~ 4的弧心坐标分别为孔3、5、7和6的圆心坐标,终点坐标分别为下一条弧的起点坐标,因此需确定孔1~ 7的圆心坐标和点A~E的坐标。

给出在图6所示直角坐标系下孔与圆弧的坐标分别为:

孔1:(0,0) ;

孔2:(0,d0+e2);

孔3:(0,2(d0+e2));

孔4:((d0+e2)cos 30°,(d0+e2)sin 30°) ;

孔5:((d0+e2)cos 30°,(d0+e2)(sin 30°+1));

孔6:(2(d0+e2)cos 30°,0);

孔7:(2(d0+e0)cos 30°,2(d0+e2)sin 30°).

点A:(0,2.5d0+3e2);

点B:((0.5d0+e2)cosα1,(0.5d0+e2)sinα1+

2(d0+e2));

点C:((0.5d0+e2)cosα2+(d0+e2)cos 30°,(0.5d0+e2)sinα2+(d0+e2)(sin 30°+1));

点D:((0.5d0+e2)cosβ1+2(d0+e2)cos 30°,(0.5d0+e2)sinβ1);

点E:(2(d0+e2)cos 30°+0.5d0+e2,0).

其中:

β2=60°-α2.

由孔3与孔5的相对位置和孔5与孔7的相对位置相同可知:

α1=α2.

由梅花十九孔发射药药型特征的对称性可知:

β1=β2.

2.3 C#二次开发程序

在编写程序代码前,需在项目中添加用于SolidWorks二次开发的插件引用,本例中需用到SolidWorks.Interop.sldworks.dll和SolidWorks.Interop.swconst.dll,可在SolidWorks的安装目录SolidWorksapi edistCLR2文件夹中找到该文件。

给出基于C#的主要二次开发程序:

SldWorks swApp=new SldWorks();

swDoc=((ModelDoc2)(swApp.ActiveDoc));

string partTplt="D: SolidWorkslangchin

ese-simplifiedTutorialpart.prtdot";

ModelDoc2 swDoc=(ModelDoc2)swApp.NewDocument(partTplt,(int)swDwgPaperSizes_e.swDwgPaperA2size, 0.0, 0.0);

//创建SldWorks文件对象

bool boolstatus=swDoc.Extension.SelectByI

D2("前视基准面","PLANE", 0, 0, 0, false, 0, null, 0);

swDoc.SketchManager.InsertSketch(true);

//选择基准面并点击"草图绘制"(开始/结束)

所运用的草图绘制方法主要有:绘制圆形方法、绘制圆弧方法、绘制中心线方法、镜像实体方法等,相关API函数如表2所示。

表2 草图绘制API函数

拉伸特征的API函数:

boolstatus=swDoc.Extension.SelectByID2("草图1","SKETCH", 0, 0, 0, false, 0, null, 0);

FeaturemyFeature=swDoc.FeatureManager.F

eatureExtrusion(true, false, false, 0, 0, l_0, 0.0, false, false, false, false, 0.0, 0.0, false, false, false, false, true, false, false);//选择草图、拉伸

2.4 二次开发注意事项

SolidWorks进行草图绘制时,开启对象捕捉可以让系统自动忽略点坐标误差造成的微小尺寸间隙影响,使得两点合并,轮廓形成闭环,有效地方便用户对于草图的绘制,但使用程序对如本例中的微小尺寸进行草图绘制时,容易引起系统的错误捕捉导致草图绘制失败,因此需关闭该功能。为了不影响其后的草图绘制和最后特征的生成,建议对象捕捉的关闭和开启成对使用[9]。关闭和开启对象捕捉功能的API函数为:

swApp.SetUserPreferenceToggle(((int)(swUser-PreferenceToggle_e.swSketchInference)), false/true).

对于尺寸较小的模型,还应运用自动缩放整屏方法,使界面自动以合理的比例显示全图,以此来保证程序对于点坐标有准确的定位。自动缩放整屏的API函数为swDoc.ViewZoomtofit2().

3 模拟算例分析

以122 mm模块装药的装填过程为例,选用不同药形的发射药,基于离散单元法模拟发射药装填过程,来研究发射药药形对于装填密度的影响,验证模拟效果。

3.1 发射药离散元模型

EDEM为目前功能最为强大、应用最为广泛的离散元建模仿真软件[10],运用EDEM,导入SolidWorks所建立的发射药三维模板,建立发射药的离散元模型。发射药选用17/7圆柱发射药和14/19梅花发射药,药型参数如表3所示。

表3 所选发射药药型参数

建立的离散元颗粒模型如图7所示。

目前EDEM是通过选用多个球形颗粒填充颗粒模板的方式来建立颗粒离散元模型,因此所建立的颗粒离散元模型与颗粒模板存在一定的差异,但颗粒模板对发射药离散元模型的建立起着规划和约束的作用。

为了验证发射药药形对装填密度的影响,两种发射药的密度、弹性模量、泊松比以及发射药表面的摩擦系数等仿真参数均取值相同。

3.2 模块装药模型

装药模块选用122 mm模块,经实验测量,模块为口径122 mm,高度150 mm的圆柱状容器,如图8所示。 在EDEM中建立模块的几何体模型,并在模块上方创建圆柱状的颗粒工厂,生成发射药颗粒模型,颗粒的重力的作用下落到模块内,模拟模块装药自然状态下的装填过程,如图9所示。

3.3 仿真结果分析

当发射药装满模块时,结束仿真,如图10所示。此时,计算两种发射药的装药量,与模块容积的比值即为122 mm模块下两种发射药的装填密度。

经实验测量,发射药的密度约为1.574 g/cm3,EDEM中所建立的17/7圆柱发射药和14/19梅花发射药的模型体积分别为402 mm3和866 mm3,可得单个颗粒的质量分别为0.63 g和1.36 g .在图10中生成的17/7圆柱发射药和14/19梅花发射药的数量分别约为2 790个和1 210个,可得装药量分别约为1 758 g和1 646 g .

122 mm模块为圆柱状容器,根据模块尺寸可得模块容积约为175.35 cm3.最终计算得出122 mm模块下17/7圆柱发射药和14/19梅花发射药的装填密度分别约为10 026 kg/m3和9 387 kg/m3,初步验证了相同条件下不同药形发射药的装填密度具有差异性。

4 结束语

笔者利用C#语言,连接发射药药型参数数据库,对SolidWorks进行二次开发,并模拟了一种模块装药的装填过程,分析了常用药形中圆柱七孔和梅花十九孔发射药的药型特征,得到了发射药径向截面上药型参数的结构关系;提供了一种运用SolidWorks绘制发射药径向截面草图的方法,绘制的径向截面草图符合发射药的药型特征;实现了以发射药药型参数为依据,程序驱动结构建模,生成的药粒模型符合理论模型,为发射药离散元模型的建立提供了模板。用EDEM软件建立了发射药的离散元模型,并模拟了两种不同药形的发射药对于122 mm模块的装填过程,初步验证了发射药模板的实用性以及不同药形发射药装填密度的差异性。

猜你喜欢

草图二次开发绘制
AutoCAD 与PDMS 二次开发在三维复杂形体设计建模上的应用
Painting ski maps 绘制滑雪地图
绘制童话
草图家具
例谈对高中数学教材中习题的二次开发
绘制世界地图
浅谈CAD软件二次开发的方法及工具
不能承受的生命之轻
例谈课本习题的“二次开发”
画好草图,寻找球心