白富強
AutoCAD二次開發技術在包裝標印系統中的應用
白富強
(晉中職業技術學院,山西 晉中 030600)
為了改造彈藥包裝標印生產線,提高生產效率,實現彈藥包裝標印向自動化生產逐步迭代。基于Python對AutoCAD進行二次開發,并編寫彈藥標印信息錄入的自動化程序,從而將彈藥產品信息直接生成標印信息的二維圖紙。該系統能夠實現彈藥包裝信息、標志的輸入和自動化生成標印信息的二維圖紙,且能夠根據實際需要對相關信息進行快速修改,滿足自動化生產需求。該系統優化了彈藥包裝標印的設計流程,節約了人力和時間成本,提高了生產效率,滿足了工業自動化生產的需求,具有一定實際應用和參考價值。
彈藥;標印系統;Python;AutoCAD;二次開發
在彈藥產品的生產過程中,包裝和標印是生產的最后階段,標印內容包括了與彈藥產品相關的大量信息,除包裝體積、規格、重量、彈藥代號、彈重符號、總裝批號、總裝年份、總裝廠家等信息以外,還會標注一同裝箱的其他彈藥零部件如引信、彈體裝填物、底火、發射藥等的諸多信息[1-5]。目前彈藥包裝信息的標印都是通過人工制作字符標志和手工操作來完成,標印信息的每次變化和調整都需要人工在標印機終端上進行手工錄入,錄入的信息量大,操作過程較冗長繁雜且重復性操作多,效率低且出錯率高,出錯概率增加的同時也給信息校對帶來了困難[6-7]。
在科學技術迅速發展的今天,各種新材料、新技術、新工藝不斷出現,彈藥包裝信息的標印也應順應時代發展的需要,不斷加大自動化、可視化技術的應用,不斷提升彈藥包裝過程的信息化、智能化、自動化水平,更好地滿足工業自動化需求[8-9]。綜合考慮以上情況,在對現有標印設備基本不做改動的基礎上,充分利用計算機輔助技術,提升彈藥標印信息的自動化水平是十分必要的[10-11]。文中基于Python編程語言對AutoCAD進行二次開發,開發彈藥標印信息錄入的自動化程序[12],以大幅提升彈藥包裝信息標印的自動水平。
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開發關系
該程序的主要功能是通過在程序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]。
該節主要結合前文所述的程序設計,基于Python語言和AutoCAD軟件對程序的功能進行具體實現,程序主界面見圖3。
程序主界面在實現過程中,從所需標印的信息實際出發,程序主界面中間部分為需要錄入的彈藥信息,可以根據實際標印需求錄入相應的信息。程序主界面的左下方是操作功能區,該區設有“確定”、“清空”、“生成文件”、“退出”及“幫助”等功能選項,方便操作者進行相關操作。
用戶在輸入完相關信息后,點擊“確定”選項,程序會自動校驗輸入的數據格式是否合法,若非法,則會報錯并提示重新輸入;若合法,則程序開始在AutoCAD自動進行圖像繪制。用戶點擊“生成文件”選項,程序會自動彈出所要標印的彈藥信息框,并輸出相對應的彈藥標印信息,見圖4。

圖3 程序運行界面

圖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—),男,碩士,晉中職業技術學院講師,主要研究方向為計算機應用技術。
責任編輯:曾鈺嬋