基于VBA和PowerPoint的发动机零部件照片存取系统设计与实现

2018-09-21 02:48刘义顺江宝宇
汽车与驾驶维修(维修版) 2018年8期
关键词:单张幻灯片名称

刘义顺、江宝宇

(长安汽车动力研究院试验试制所 401120)

1 发动机零部件照片存取系统方法

系统分为2个子系统,分别为零部件照片存储系统和零部件照片查询系统。前者主要为试验人员使用,后者主要为项目组研发人员使用,零部件照片信息流如图1所示。

图1 发动机零部件照片信息流

零部件照片存储系统工作原理,主要是将发动机解体后,根据需要对发动机零部件位置进行拍照,然后将单个零部件多张照片存放在同一张幻灯片,再在存储照片的幻灯片中编译宏程序,运行宏程序后实现将单张幻灯片以唯一指定的命名方式保存为单张图片,并将所有图片存放在指定服务器文件夹中,这样便可实现零部件照片的存储功能[1]。

零部件照片查询系统原理主要基于Excel VBA程序平台,建立查询系统。首先根据发动机的固有特征信息,查询并调取存放在服务器文件夹中零部件单张图片,然后将图片以相应规则排列组合显示在系统界面中,以便研发人员实现集中对多张零部件图片信息的获取。

2 零部件照片存储功能实现

发动机零部件图片要满足查询需求,就必须使图片文件名在文件夹中具有唯一性,这样才能精准定位,不引起查询冲突。图片命名方式多种多样,系统采用发动机号加零部件名称方式,例如XXX-AAA-18-001-缸盖(XXX为部门,AAA为发动机型号,18为年份,001为序号)。根据图片命名定义要求,存储系统将单张幻灯片存储为图片前,必须将发动机号和零部件名称识别出来,组合后形成新的图片文件名[2]。

本系统中采取如下方式:发动机号存放地址为试验工程师编辑的零部件照片及幻灯片文件名前,例如XXX-AAA-18-001,AAA发动机交变负荷试验报告,发动机号即为XXX-AAA-18-001;零部件名称的存放地址为存放零部件的单张幻灯片任意位置,但字体必须指定格式,单张幻灯片中不能再使用相同的字体格式,以便程序识别,本系统中采取“华文仿宋”格式。程序部分代码如下。

fname = ActivePresentation.Namen = InputBox("请输入发动机号位数")

……

If shp.TextFrame.TextRange.Font.NameFarEast = "华文仿宋"Then

trng = shp.TextFrame.TextRange.Text

saveimagename = fname & "-" & trng & ".bmp"

saveimagepath = "10.30.25.252D:图片数据库"

slideobject.Export saveimagepath & saveimagename, "bmp",1600, 1200

……

Next slideobject

由于部门和发动机型号不一致,发动机号占据的字符数就不一致。本系统引入InputBox函数,使试验人员首先输入发动机号占据的字符数,以便程序准确提取发动机号。另外,slideobject.export函数可设置导出图片的格式和分辨率,以保证零部件图片的清晰度。存放程序流程图如图2所示。

图2 发动机零部件照片存放程序流程图

运行宏程序,发动机零部件解析照片就按照预定的方式保存至指定服务器文件夹中。

3 零部件照片查询功能实现

3.1 零部件照片查询

发动机号加零部件名称作为图片的识别码,如果以此作为查询条件,那么产品工程师根本不清楚该发动机对应的试验信息。根据产品开发流程,系统预先建立一张Excel表存放样机状态,表中同一行添加1个试验信息,包括项目名称、样机阶段、试验名称、试验轮次、零部件名称和发动机号共6个子项。系统查询时只要选择前面5个子项,就可查询出发动机号,再结合零部件名称就可以实现需求零部件图片的精准定位。5个可供选择的子项均采用下拉列表的方式,可提示工程师按需操作。

试验工程师在试验完成后把6个子项添加进样机状态信息表,产品工程师在查询选择子项时,如果样机状态信息表中未进行该项目、阶段、试验或轮次,查询时会进行相应提示。例如,试验项目未开始小批量阶段,选择小批量阶段后,系统会提示进行低一级选择。

上述实现通过循环和判断条件逐级进行,全部满足后将样机状态信息表中对应的发动机号赋予预先定义的发动机号“enginenumber”变量中,同时将选择的发动机零部件名称赋予预先定义的发动机零部件名称“enginecomponents”变量中。图片调用部分代码如下。

path = "10.30.25.252D:图片数据库"

name = enginenumber & "-" & enginecomponents

UserForm1.Controls("image" & z).Picture = LoadPicture(path& name & ".bmp")

其中path是变量存放图片的存放地址,再使用将图形载入到窗体的LoadPicture函数即可实现图片调用。查询程序流程图如图3所示。

图3 发动机零部件照片查询程序流程图

3.2 零部件图片界面组合实现

为保证发动机零部件图片的清晰度,系统界面最大支持同时显示6张照片,通过添加和删除按钮实现图片的添加和删除。当删除至照片没有时,系统提示“已无图片,无法进行删除”;当添加超过6张时,系统提示“图片已达屏幕最大显示容量张数6”。

软件中图片通过image控件来实现,图片的顺序以image后加相应的数字来控制。图片数量则通过建立一个全局整形变量“z”来实现,每点击1次“添加”或“删除”按钮,变量“z”则加1或减1,且照片顺序按照后进先出的方式进行删除操作。最后程序根据图片所需求的数量,按照预先定义的排列方式进行顺序排列。

在排序前,首先对屏幕进行清屏操作,以便清空前面排列的图片,为后面图片的重排留下空白空间。同时,图片的大小和位置也按照对应图片数量要求设置进行配置,这样便实现了零部件图片界面按需显示。

3.3 软件界面自适应显示器功能实现

为适应不同分辨率大小显示器的显示需求,图片的大小和位置必须随着显示器宽度和高度作相应的动态调整,否则会造成图片显示不全或图片显示过小的现象。图片控件像素和分辨率的关系,像素宽为0.75倍宽分辨率,像素高为0.72倍高分辨率,利用API(Aplication Programming Interface)函数GetSystemMetrics来判断当前显示器的分辨率。部分程序代码如下。

With Me

STARTUPPOSITION = 0

.Height = GetSystemMetrics(SM_CYSCREEN) * 0.72

.Width = GetSystemMetrics(SM_CXSCREEN) * 0.75

……

End With

为保证零部件图片缩放一致性,进行图片长和宽定义时,长宽比必须和零部件存放系统的图片长宽比一致。同时,为保证图片的清晰度,尽量先满足相对最大的长或者宽,然后再进行图片位置的调整。

4 系统程序维护及应用

结合Excel VBA应用程序和项目的特点,可在预先建立的Excel表中增加项目名称、试验轮次和零部件名称。系统运行初始化时,预先读写存放的数据至系统对应子项下拉界面中,供使用者选择。同时可在程序初始化时调出显示弹出窗体和隐藏后台Excel表格,这样程序在运行后,直接弹出程序运行窗体。

5 结束语

本系统提出了发动机零部件照片的存取管理方法,同时基于VBA语言和PowerPoint程序实现了零部件图片的存取。改善了原有零部件照片的使用方式,使查询更加方便快捷,提升了研发效率,降低了研发成本。系统通过实践检验,稳定可行,缺点主要为照片存储需要占据服务器大量的存储空间。所使用的零部件照片管理方法和图片存取程序构建思路具有一定可移植性,值得推荐应用。

猜你喜欢
单张幻灯片名称
美化保护二合一制作PPT连续背景图
观片
实现幻灯片的缩放功能
全球单张纸印刷机销售量持续下降
沪港通一周成交概况
沪港通一周成交概况
沪港通一周成交概况
沪港通一周成交概况
单张纸胶印机维护保养及性能评估两项行业标准工作会议顺利召开
1960年版红1角钞单张涨了7万倍