APP下载

AutoCAD二次开发技术在包装标印系统中的应用

2022-04-14白富强

包装工程 2022年7期
关键词:字段二次开发弹药

白富强

AutoCAD二次开发技术在包装标印系统中的应用

白富强

(晋中职业技术学院,山西 晋中 030600)

为了改造弹药包装标印生产线,提高生产效率,实现弹药包装标印向自动化生产逐步迭代。基于Python对AutoCAD进行二次开发,并编写弹药标印信息录入的自动化程序,从而将弹药产品信息直接生成标印信息的二维图纸。该系统能够实现弹药包装信息、标志的输入和自动化生成标印信息的二维图纸,且能够根据实际需要对相关信息进行快速修改,满足自动化生产需求。该系统优化了弹药包装标印的设计流程,节约了人力和时间成本,提高了生产效率,满足了工业自动化生产的需求,具有一定实际应用和参考价值。

弹药;标印系统;Python;AutoCAD;二次开发

在弹药产品的生产过程中,包装和标印是生产的最后阶段,标印内容包括了与弹药产品相关的大量信息,除包装体积、规格、重量、弹药代号、弹重符号、总装批号、总装年份、总装厂家等信息以外,还会标注一同装箱的其他弹药零部件如引信、弹体装填物、底火、发射药等的诸多信息[1-5]。目前弹药包装信息的标印都是通过人工制作字符标志和手工操作来完成,标印信息的每次变化和调整都需要人工在标印机终端上进行手工录入,录入的信息量大,操作过程较冗长繁杂且重复性操作多,效率低且出错率高,出错概率增加的同时也给信息校对带来了困难[6-7]。

在科学技术迅速发展的今天,各种新材料、新技术、新工艺不断出现,弹药包装信息的标印也应顺应时代发展的需要,不断加大自动化、可视化技术的应用,不断提升弹药包装过程的信息化、智能化、自动化水平,更好地满足工业自动化需求[8-9]。综合考虑以上情况,在对现有标印设备基本不做改动的基础上,充分利用计算机辅助技术,提升弹药标印信息的自动化水平是十分必要的[10-11]。文中基于Python编程语言对AutoCAD进行二次开发,开发弹药标印信息录入的自动化程序[12],以大幅提升弹药包装信息标印的自动水平。

1 CAD二次开发概述

AutoCAD是美国Autodesk公司开发的计算机辅助设计和绘图软件,在机械、电子、建筑、土木等领域应用十分广泛[13]。特别是在国内二维制图领域,长期以来AutoCAD都占有着重要的地位。AutoCAD初版发布于1982年,经历了将近40年的不断迭代更新,软件在功能完善程度和易用性上和同类产品相比已经做得十分优秀了,但是,毕竟这是一款主打通用性而设计开发的绘图软件,使用软件的各个领域不同企业的绘图规则和标准都不尽相同,因此在面对各种场合使用时AutoCAD也不一定能够满足实际生产应用的需要。

考虑到各种应用的需要,AutoCAD预留了可用于二次开发的API接口。二次开发接口的存在,使用户可以在现有软件的基础之上开发更适合用户需求的功能和组件。这有助于提高和完善软件功能,提高设计质量和效率,而且这种基于现有软件基础上进行开发的模式还能显著降低学习和开发成本、缩短开发周期[14]。

CAD二次开发手段很多,目前主流有这几种方式:Object ARX、ActiveX、Auto LISP/Visual LISP、Dot NET等。其中基于ActiveX技术的开发方式是遵循COM规范和OLE规范,利用ActiveX控件把应用程序中有关的数据和操作都以动态链接库的形式封装起来,以对象的形式提供给用户使用[15]。AutoCAD的ActiveX开发关系见图1。用户不需要了解程序内部的具体实现过程,仅需要通过调用动态链接库中的对象即可直接操作、扩展应用程序。这种开发方式有着工作效率高、入门时间短、易于学习掌握等优点[16-17]。

文中对AutoCAD二次开发也是基于ActiveX技术这种方法。开发环境使用Windows 10 64bit操作系统,开发语言是Python语言[18],Python版本为3.7,用到的pip包主要为pyautocad 0.2.0和PySimpleGUI 4.45.0,IDE采用了PyCharm Community Edition 2020.1[19]。

图1 AutoCAD的ActiveX开发关系

2 程序设计

该程序的主要功能是通过在程序GUI界面输入或者导入弹药产品的标印信息,程序自动在AutoCAD中排版并绘制出标印文字,并保存为DXF格式的二维图纸。在生成DXF格式图纸之后,便可以在控制标印机的上行计算机中,直接导入DXF格式文件,标印机读取后就能够直接进行标印作业,实现弹药产品标印信息的自动录入及输出。程序流程见图2。

图2 程序流程

在程序运行后,通过pyautocad调用comtypes. client( )来连接正在运行的AutoCAD文件。如果没有正在运行的文件则报错后结束程序,如果连接成功,会在AutoCAD控制台输出连接成功的文字信息。

成功连接AutoCAD之后,程序会调用PySimpleGUI编写的图形用户界面代码段,图形用户界面会弹出。由于程序的核心功能本身得比较单一,所以图形用户界面也设计得尽可能简洁明了。

图形用户界面的窗口分为了上下2个区域。上方为弹药标印信息的各个字段的输入区域,区域中各个字段的排序参照了实际标印排版的位置和格式,每个字段区域左侧是字段的名称,右侧是字段数据的输入框或者下拉选择框。

程程序中各个字段定义变量为:引信代号(fuzeCode)、引信批-年-厂(fuzeCodeData)、弹重符号(weighMark)、体积(volSize)、弹药代号(ammoCode)、总装批-年-厂(assembData)、弹体装填物代号(fillCode)、内装数量(inNum)、发射装药分类简称代号(ppeTypes)、发射药代号(ppeCode)、药型尺寸型号(ppeSize)、发射药批-年-厂(ppeData)、底火型号(primerCode)、底火批-年-厂(primerData)、总重量(totalWeigh)、药筒材料代号(cartMtl)。

下方区域是软件的功能按钮区,分别排布“确定”、“清空”、“生成文件”、“退出”、“帮助” 5个程序功能按键。

在完成对弹药标印信息各字段的输入之后点击确定,程序首先会校验各字段的数据类型和数据格式是否合法,若非法,则会报错提示重新输入;若合法,则程序开始在AutoCAD进行图像绘制。

首先初始化字体样式,通过调用pyacad.Active Document.ActiveTextStyle.SetFont( )函数,设置默认绘制字符元素的字体样式为“宋体”。随后定义2组一维数组textrowAxis[ ]和textcolAxis[ ],分别存放生成的各个字段的行、列坐标值。

在生成各字段坐标值完成后,就可以开始绘制文字元素。根据AutoCAD的开发手册定义,单行文字元素的导入的数据类型必须是字符串。就需要把读入的数据先转换为字符串类型,使用pyacad.model.

AddText(textStr, APoint(textrowAxis[], textcolAxis[]), textHeight)函数就可以实现将指定的字段字符串textStr绘制在相应的坐标点(textrowAxis[], textcolAxis[])上。其中,textStr指的是上文定义的字段转换的字符串变量;、分别指字段在排版中的行列数值。

由此,遍历所有字段即可在AutoCAD中绘制出所需弹药产品标印信息的二维图纸。遍历完毕之后执行pyacad.ActiveDocument.Application.ZoomAll( )使画面返回到全视图。

最后使用程序中导出文件的功能,通过调用函数pyacad.ActiveDocument.Application.Documents ("FileName.dxf").SaveAS(dir, 25)将药产品标印信息的二维图纸保存为DXF格式的文件,这样就完成了整个产品标印信息的二维图纸的生成过程[20]。

3 程序运行实现

该节主要结合前文所述的程序设计,基于Python语言和AutoCAD软件对程序的功能进行具体实现,程序主界面见图3。

程序主界面在实现过程中,从所需标印的信息实际出发,程序主界面中间部分为需要录入的弹药信息,可以根据实际标印需求录入相应的信息。程序主界面的左下方是操作功能区,该区设有“确定”、“清空”、“生成文件”、“退出”及“帮助”等功能选项,方便操作者进行相关操作。

用户在输入完相关信息后,点击“确定”选项,程序会自动校验输入的数据格式是否合法,若非法,则会报错并提示重新输入;若合法,则程序开始在AutoCAD自动进行图像绘制。用户点击“生成文件”选项,程序会自动弹出所要标印的弹药信息框,并输出相对应的弹药标印信息,见图4。

图3 程序运行界面

图4 程序运行结果

4 结语

该程序通过AutoCAD二次开发技术,实现了自动化生成导出弹药产品标印信息功能,提升了弹药包装过程的工业自动化水平。技术人员借助本程序,只需要学习标印设备导入外部图纸操作的方法即可快速上手标印系统,降低了人员的培训成本和技术的学习门槛。整个程序的应用方面也不需要对现有的标印生产设备进行过多的改动,改造成本相当低廉。同时该软件能够在一定程度解决人工操作标印系统终端手动录入弹药产品标印信息时,步骤烦琐、重复性多、出错概率高、信息校对困难等问题。在生产方面也可以节约时间成本、提高生产效率,大幅提升了弹药包装信息标印过程的自动化水平,满足了行业需求。总体来说该程序是具有一定实际应用价值和参考借鉴意义。

[1] 陈慆, 申楠公, 吴会博. 弹药外包装箱标志的探讨[J]. 包装工程, 2016, 37(1): 43-46.

CHEN Tao, SHEN Nan-gong, WU Hui-bo. Marks of the External Ammunition Packing Container[J]. Packaging Engineering, 2016, 37(1): 43-46.

[2] GJB 160—1986, 舰炮弹药包装标志[S].

GJB 160—1986, Mark for Package of Naval Gun Ammunition[S].

[3] GJB 471A—1995, 通用军械标志[S].

GJB 471A—1995, Mark for General Ordnance Equipment[S].

[4] GJB 3911—1999, 通用弹药标志细则[S].

GJB 3911—1999, Minute Regulation of General Ammunition Mark[S].

[5] GJB 1765A—2008, 军用物资包装标志[S].

GJB 1765A—2008, Mark for Package of Military Material[S].

[6] 许有法, 王卫民, 赵晓利. 弹药包装条码标志研究[J]. 中国包装, 2002, 22(2): 84-87.

XU You-fa, WANG Wei-min, ZHAO Xiao-li. Study on Barcode Marking of Ammunition Packaging[J]. China Packaging, 2002, 22(2): 84-87.

[7] 姚恺, 李天鹏, 刘淑真, 等. 我国弹药包装设计热点问题分析及发展研究[J]. 包装工程, 2020, 41(9): 238-242.

YAO Kai, LI Tian-peng, LIU Shu-zhen, et al. Hot Issues Analysis and Development Study of Ammunition Package Design in China[J]. Packaging Engineering, 2020, 41(9): 238-242.

[8] 杨家铮. 电子信息装备保障现状及其发展趋势[J]. 航天电子对抗, 2019, 35(3): 53-58.

YANG Jia-zheng. The Present Situation and Development Trend of Electronic Equipment Support[J]. Aerospace Electronic Warfare, 2019, 35(3): 53-58.

[9] 吴涛. 现行弹药包装对弹药保障的影响分析[J]. 山东工业技术, 2014(18): 208.

WU Tao. Analysis of the Influence of Current Ammunition Packaging on Ammunition Support[J]. Shandong Industrial Technology, 2014(18): 208.

[10] 刘志扬, 王来芬, 伊芳, 等. 弹药包装技术发展探讨[J]. 包装工程, 2002, 23(2): 34-35.

LIU Zhi-yang, WANG Lai-fen, YI Fang, et al. Discuss on the Development of Technology of Packaging of Ammunition[J]. Packaging Engineering, 2002, 23(2): 34-35.

[11] 宣兆龙, 傅孝忠, 戴祥军. 弹药包装的物流支持功能研究[J]. 物流技术, 2009, 28(4): 148-150.

XUAN Zhao-long, FU Xiao-zhong, DAI Xiang-jun. Study on how the Ammunition Package to Support Materials Flow[J]. Logistics Technology, 2009, 28(4): 148-150.

[12] 刘秋生. 管理信息系统研发及其应用[M]. 南京: 东南大学出版社, 2018: 4-156.

LIU Qiu-sheng. Guanli Xinxi Xitong Yanfa Jiqi Yingyong[M]. Nanjing: Southeast University Press, 2018: 4-156.

[13] 蒋先刚, 罗文俊, 谢平. AutoCAD 2010工程绘图与二次开发[M]. 成都: 西南交通大学出版社, 2012: 5-200.

JIANG Xian-gang, LUO Wen-jun, XIE Ping. AutoCAD 2010 Engineering Drawing and Secondary Development[M]. Chengdu: Southwest Jiaotong University Press, 2012: 5-200.

[14] 周乐来, 马婧. AutoCAD 2008 Visual LISP二次开发入门到精通[M]. 北京: 机械工业出版社, 2008: 4-258.

ZHOU Le-lai, MA Jing. AutoCAD 2008: Introduction to Secondary Development of Visual LISP[M]. Beijing: China Machine Press, 2008: 4-258.

[15] 曾洪飞, 卢择临, 张帆. AutoCAD VBA&VB.NET开发基础与实例教程[M]. 北京: 中国电力出版社, 2013: 1-289.

ZENG Hong-fei, LU Ze-lin, ZHANG Fan. AutoCAD VBA & vb.Net Development Foundation and Example Course[M]. Beijing: China Electric Power Press, 2013: 1-289.

[16] 约翰·策勒. Python程序设计[M].北京: 人民邮电出版社, 2018: 16-309.

ZELLE J. Python Programming: an Introduction to Computer Science[M]. Beijing: Posts & Telecom Press, 2018: 16-309.

[17] 付腊梅, 曹伟, 李永刚, 等. 基于C#二次开发AutoCAD在汽车制造装备行业中的应用[J]. 锻压装备与制造技术, 2021, 56(6): 130-134.

FU La-mei, CAO Wei, LI Yong-gang, et al. Application of Auto CAD in Automobile Manufacturing Equipment Industry Based on C# Secondary Development[J]. China Metalforming Equipment & Manufacturing Technology, 2021, 56(6): 130-134.

[18] 陈家新, 何乔. 基于VB对AutoCAD二次开发的电机模型自动绘制系统[J]. 机电工程技术, 2021, 50(11): 17-20.

CHEN Jia-xin, HE Qiao. Automatic Drawing System of Motor Model Based on Secondary Development of AutoCAD with VB[J]. Mechanical & Electrical Engineering Technology, 2021, 50(11): 17-20.

[19] 冯波. AutoCAD二次开发成图技术的应用[J]. 山东煤炭科技, 2021, 39(8): 211-213.

FENG Bo. Application of AutoCAD Secondary Development Mapping Technology Full Text Replacement[J]. Shandong Coal Science and Technology, 2021, 39(8): 211-213.

[20] 任柱. 基于.NET的AutoCAD二次开发技术在石化工程设计中的应用[J]. 广州化工, 2021, 49(18): 94-95.

REN Zhu. Application of AutoCAD Secondary Development Technology Based on.NET in Petrochemical Engineering Design[J]. Guangzhou Chemical Industry, 2021, 49(18): 94-95.

The Application of Packaging and Marking System with Re-develop Technology of AutoCAD

BAI Fu-qiang

(Jin Zhong Vocational & Technical College, Shanxi Jinzhong 030600, China)

This paper aims to transform the ammunition packaging and marking production line, improve production efficiency, and realize the gradual iteration of the ammunition packaging and marking production line to automated production. The re-develop of AutoCAD was based on Python, and the automated program for the input of ammunition marking information was compiled, so that the ammunition product information could be directly generated into the two-dimensional drawings of the marking information. The system could realize the input of ammunition packaging information, marks, and automatically generate two-dimensional drawings of marking information, and quickly modify relevant information according to the actual needs to meet the needs of automatic production. The system optimizes the design process of ammunition packaging and marking, saves manpower and time costs, improves production efficiency, meets the needs of industrial automation production, and has certain practical application and reference value.

ammunition; marking system; Python; AutoCAD; re-develop technology

TB482;TJ410.89

A

1001-3563(2022)07-0290-05

10.19554/j.cnki.1001-3563.2022.07.038

2021-11-07

国家国防科工局资助项目(Z092014B001)

白富强(1984—),男,硕士,晋中职业技术学院讲师,主要研究方向为计算机应用技术。

责任编辑:曾钰婵

猜你喜欢

字段二次开发弹药
AutoCAD 与PDMS 二次开发在三维复杂形体设计建模上的应用
大口径舰炮弹药储供系统可靠性研究
美国狼弹药公司A16.5mm卡宾枪
带钩或不带钩选择方框批量自动换
口径的选择 What Is the Proper Caliber?
例谈对高中数学教材中习题的二次开发
浅谈CAD软件二次开发的方法及工具
例谈课本习题的“二次开发”
探讨CNMARC格式中200字段题名的规范著录
无正题名文献著录方法评述