石磊
摘 ?要:Capital電氣線束設(shè)計(jì)軟件在汽車、鐵路、航空航天等領(lǐng)域應(yīng)用廣泛,由于不同設(shè)計(jì)和制造團(tuán)隊(duì)所采用產(chǎn)品數(shù)據(jù)管理流程的差異性,需要通過API接口進(jìn)行二次開發(fā),以提高設(shè)計(jì)質(zhì)量和數(shù)據(jù)兼容性。為了節(jié)約研發(fā)成本、縮短開發(fā)周期,該文介紹了一種基于VBA和XML進(jìn)行數(shù)據(jù)解析和自動(dòng)校核的方法,可以提高設(shè)計(jì)效率,易于實(shí)現(xiàn)飛機(jī)線束設(shè)計(jì)、制造方對(duì)Capital設(shè)計(jì)數(shù)據(jù)的快速讀取和分析。
關(guān)鍵詞:Capital CHS ?VBA ?XML ?飛機(jī)線束 ?二次開發(fā)
中圖分類號(hào):TP311 ? 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2020)06(c)-0062-04
Abstract: Capital electrical harness design software was widely used in automobile, railway, aerospace electric design and development. Due to the workflow differences of product data management among various teams, plugin development with API interface was required. In order to reduce the cost and effort of plugin development, a method of design data parsing and automatic verification based on VBA and XML is introduced, which can improve the design efficiency and reduce the aircraft harness manufactureseffort to analyze the Capital design data.
Key Words: Capital CHS; VBA; XML; Aircraft Harness; Plug-in
飛機(jī)的電氣線束設(shè)計(jì)的工具經(jīng)歷了從基于圖形符號(hào)的設(shè)計(jì)到基于數(shù)據(jù)庫的設(shè)計(jì),唯一數(shù)據(jù)源的實(shí)現(xiàn)提高了設(shè)計(jì)質(zhì)量,目前已經(jīng)有多款基于數(shù)據(jù)庫的電氣線束設(shè)計(jì)工具應(yīng)用于汽車和航空航天領(lǐng)域,圖形符號(hào)和報(bào)表不再是表達(dá)電氣線束設(shè)計(jì)成果的唯一方式,XML成為存儲(chǔ)設(shè)計(jì)信息的重要載體。如果設(shè)計(jì)方和線束制造方的設(shè)計(jì)工具不兼容,就需要利用軟件提供的API進(jìn)行二次開發(fā),對(duì)于線束設(shè)計(jì)人員來說,編程要求高,且無法適應(yīng)多變的業(yè)務(wù)需求。該文提出一種利用Excel VBA進(jìn)行Capital設(shè)計(jì)數(shù)據(jù)解析的方法,可以較為方便地實(shí)現(xiàn)設(shè)計(jì)圖樣數(shù)據(jù)的分析和讀取。
1 ?軟件和工具介紹
1.1 電氣線束設(shè)計(jì)軟件
飛機(jī)的電氣互聯(lián)系統(tǒng)設(shè)計(jì)手段從最初的手工制圖演變到后來的計(jì)算機(jī)輔助制圖,隨著計(jì)算機(jī)性能的提高,計(jì)算機(jī)輔助制圖的功能和性能也越來越強(qiáng)大,從單純的圖形設(shè)計(jì),演進(jìn)到了基于數(shù)據(jù)庫的關(guān)聯(lián)設(shè)計(jì),三維設(shè)計(jì)引入也使得對(duì)線纜長(zhǎng)度的取樣更加精確和方便。Mentor Graphics公司的Capital(前身為Capital CHS)作為在飛機(jī)[1-2]和汽車[3-4]研制等領(lǐng)域應(yīng)用廣泛的軟件,提供原理圖設(shè)計(jì)、拓?fù)鋱D設(shè)計(jì)、線路圖設(shè)計(jì)等模塊,以及元器件庫、用戶管理、風(fēng)格管理等功能。使用Capital可以設(shè)計(jì)完成原理圖、線路圖、線束圖、拓?fù)鋱D等幾種類型的圖紙。這些圖紙的對(duì)象信息都存儲(chǔ)在數(shù)據(jù)庫中,軟件支持將圖紙保存成PDF或者XML等格式。Capital提供了二次開發(fā)接口,可以利用Java/JavaScript進(jìn)行內(nèi)置插件或者Web Service應(yīng)用開發(fā)[5]。
1.2 Excel VBA和Microsoft XML 6.0庫
VBA(Visual Basic for Applications)是Visual Basic的一種宏語言,是微軟開發(fā)出來的在其桌面應(yīng)用程序中執(zhí)行通用的自動(dòng)化任務(wù)的編程語言[6],尤其是對(duì)于微軟的Office辦公軟件,可以通過VBA擁有自動(dòng)化的功能。在Excel中啟用VBA以后,就可以通過Excel的VBA開發(fā)界面的菜單欄的“Visual Basic”選項(xiàng)直接進(jìn)入內(nèi)置的宏代碼開發(fā)窗口,可以在不同的文檔對(duì)象中添加程序代碼,調(diào)試通過后,點(diǎn)擊啟動(dòng)按鈕執(zhí)行宏代碼,實(shí)現(xiàn)預(yù)期的功能。
XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)作為一個(gè)數(shù)據(jù)存儲(chǔ)工具包,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言,用戶可以自己定義標(biāo)簽,通過滿足規(guī)范的格式,引入不同的層次,可以實(shí)現(xiàn)數(shù)據(jù)的保存與傳輸[7]。在Capital繪制的原理圖、線路圖、線束圖均可以實(shí)用軟件自帶的功能導(dǎo)出為XML格式的文件,圖紙中包含的型號(hào)、數(shù)量、長(zhǎng)度、接線關(guān)系等內(nèi)容均包含在了XML文件中。只要通過規(guī)范的解析方式,就可以從XML文件中提取出所需的所有信息,這也是實(shí)現(xiàn)該文自動(dòng)校核過程的基礎(chǔ)。
2 ?Capital數(shù)模XML文件結(jié)構(gòu)及解析
2.1 文件解析的采用的工具和函數(shù)
該文的目標(biāo)是能夠解析出XML格式數(shù)模中的信息,因此能夠讀懂XML是該文的基本要求。XML文件由標(biāo)記和內(nèi)容組成,以標(biāo)記包圍內(nèi)容的方式將大部分內(nèi)容包括在元素中。
Capital 生成的圖樣數(shù)模的XML文件以下列3行代碼開頭,具體見圖3。
以上3行代碼分別是XML聲明、文檔驗(yàn)證規(guī)則的引用(該路徑對(duì)應(yīng)于本地的Capital 安裝路徑)以及版本信息。
然后是根元素project,代表了圖紙?jiān)O(shè)計(jì)所屬的項(xiàng)目(見圖4)。
根元素描述了圖樣所屬型號(hào)的信息,上面語句中第一行project后面的內(nèi)容就屬于一個(gè)元素的屬性信息。其他的元素則可以通過嵌套添加到根元素中,如
每一張圖紙中的所有信息,就是通過一定的樹結(jié)構(gòu)進(jìn)行存儲(chǔ)的,要想獲取某一張圖紙中的信息,必須了解該類圖紙的樹結(jié)構(gòu)的特點(diǎn),找到不同對(duì)象所在的節(jié)點(diǎn),然后讀取該元素的屬性。
2.2 不同類型圖紙XML文件結(jié)構(gòu)解析
由于不同類型圖紙的XML文件的樹結(jié)構(gòu)不同,在開始VBA編程之前,需要認(rèn)真研究線路圖、線束圖和拓?fù)鋱D的文件結(jié)構(gòu),確定不同對(duì)象的存放節(jié)點(diǎn),不同圖紙對(duì)象屬性對(duì)應(yīng)的XML文件中的元素屬性,進(jìn)而通過編程實(shí)現(xiàn)文件的自動(dòng)解析。以線束圖為例,其XML元素的結(jié)構(gòu)如下。
文件的根節(jié)點(diǎn)為Project,根節(jié)點(diǎn)下包括的設(shè)計(jì)數(shù)據(jù)主要存放在harnessdesign節(jié)點(diǎn)下,該節(jié)點(diǎn)的子節(jié)點(diǎn)分析結(jié)果如圖5所示,可以看出,與線束物料相關(guān)的信息都存放在connectivity節(jié)點(diǎn)下??梢允褂肗otepad++等工具深入分析各種圖紙的文檔結(jié)構(gòu)。
2.3 進(jìn)行XML文件解析的函數(shù)模塊
在該文提供的方法中,為了方便對(duì)XML文件的解析,對(duì)XML對(duì)象的方法進(jìn)行了封裝,制定了3個(gè)常用的函數(shù),具體如下。
(1)ParselXML(節(jié)點(diǎn)名,對(duì)象名)函數(shù),獲取XML文件中的某一個(gè)根節(jié)點(diǎn)。該方法的返回值為一個(gè)IXMLDOMNode類型的對(duì)象,在成功通過Load方法載入XML文件后,就可以使用此函數(shù),獲取XML文件中存放設(shè)計(jì)數(shù)據(jù)的節(jié)點(diǎn)。
(2)GetNodeCount(節(jié)點(diǎn)對(duì)象,子節(jié)點(diǎn)名)函數(shù),獲取節(jié)點(diǎn)下固定名稱的子節(jié)點(diǎn)的數(shù)量。
(3)ParselNodeAttributes(屬性名,節(jié)點(diǎn)名),獲取節(jié)點(diǎn)的屬性內(nèi)容,某些對(duì)象如連接器的型號(hào)的信息都是存儲(chǔ)在連接器節(jié)點(diǎn)的屬性信息中的。
3 ?Capital圖樣自動(dòng)解析功能的實(shí)現(xiàn)
可以使用上述方法對(duì)圖紙XML文件進(jìn)行解析。如果要實(shí)現(xiàn)圖樣的自動(dòng)校核功能,實(shí)現(xiàn)對(duì)數(shù)百?gòu)垐D紙的批量校核,還需要增加文件循環(huán),實(shí)現(xiàn)批量XML文件的自動(dòng)解析,在解析的過程中,將每一張圖紙XML文件中不同類型的信息保存到Excel文件的不同子表中,最終根據(jù)文件校驗(yàn)的規(guī)則對(duì)解析出來的數(shù)據(jù)進(jìn)行核對(duì),由于在文件解析過程中,自動(dòng)在每一行信息的后部增加了所屬圖紙和設(shè)計(jì)者的信息,可以很方便地對(duì)問題進(jìn)行定位。有些情況下,還有對(duì)Capital自動(dòng)生成的交互結(jié)果和報(bào)表等數(shù)據(jù)進(jìn)行定位,就需要結(jié)合批量解析出的Excel文件,實(shí)現(xiàn)對(duì)象的精確定位。具體到每一個(gè)過程的實(shí)現(xiàn)流程如下。
3.1 批量文件自動(dòng)解析過程的實(shí)現(xiàn)流程
由于Capital自帶的報(bào)表導(dǎo)出功能無法自定義,在整個(gè)項(xiàng)目數(shù)據(jù)導(dǎo)出時(shí)不能將物料信息與具體的設(shè)計(jì)圖紙進(jìn)行匹配,在
首先,在Excel文件中建立一個(gè)子表,命名為“圖樣清單”,該子表中至少包括如下信息。
(1)序號(hào),用于檢索和排序。
(2)圖號(hào),按照產(chǎn)品圖樣編號(hào)規(guī)定命名的圖樣編號(hào)。
(3)圖名,圖紙的名字。
(4)設(shè)計(jì),該圖紙的設(shè)計(jì)人。
(5)所屬專業(yè)組,設(shè)計(jì)者所在的專業(yè)組。
表1給出了一個(gè)示例。
將全機(jī)所有的圖紙信息錄入到符合表1所列格式的子表中,接下來的程序循環(huán),每一次將會(huì)讀取該表中的“序號(hào)”“圖號(hào)”“圖名”“設(shè)計(jì)”和“專業(yè)組”列。假設(shè)循環(huán)變量為i,則對(duì)于每一個(gè)i,讀取圖樣清單表格的第i行,獲取該行的第2列,得到圖名,通過給圖名添加路徑前綴,和“.xml”后綴,可以得到圖號(hào)在本機(jī)電腦保存的完整文件名FileName,然后調(diào)用DOMDocument對(duì)象的Load方法,判斷是否正確讀取文件,如果讀取異常,則通過On error Resume Next語句自動(dòng)跳轉(zhuǎn)到下一個(gè)循環(huán);如果讀取正常,則開始對(duì)DOMDocument對(duì)象進(jìn)行解析。根據(jù)對(duì)不同類型圖紙的XML文件的樹結(jié)構(gòu),獲取所關(guān)注的各類對(duì)象及信息。然后通過下一節(jié)描述的方法,將信息保存到Excel文件對(duì)應(yīng)的子表中。完成讀取和保存后,判讀循環(huán)變量是否達(dá)到圖樣清單表格的最后一行,如果未達(dá)到,則繼續(xù)下一輪循環(huán);如果達(dá)到,則程序結(jié)束。程序流程示意如圖6所示。
3.2 利用VBA實(shí)現(xiàn)解析結(jié)果的自動(dòng)保存
為了將圖紙中解析出來的各種物料信息自動(dòng)保存,需要對(duì)Excel文件進(jìn)行修改,增加若干的子表,每一個(gè)子表的按照擬保存信息的種類進(jìn)行命名,如“連接器”“導(dǎo)線”等,每一個(gè)子表的表頭根據(jù)每一種類型信息的屬性進(jìn)行初始化。以連接器舉例,在線束圖中,每一個(gè)連接器節(jié)點(diǎn),包含信息以下。
序號(hào)、ID、連接器代號(hào)、連接器類型、連接器型號(hào)、連接器供應(yīng)商、型號(hào)描述、連接器用途、所屬線束、數(shù)量、重量、供應(yīng)商型號(hào)、壓接方式、配套方式、Include on BOM等,這些信息在XML文件中的字段定義如圖7所示。
Excel文件中“連接器”子表的表頭字段建立應(yīng)參考以上節(jié)點(diǎn),并與XML解析出來的節(jié)點(diǎn)的屬性信息進(jìn)行映射,每當(dāng)讀取一個(gè)節(jié)點(diǎn)的各種屬性信息時(shí),將不同的屬性信息順次保存到“連接器”子表的某一行數(shù)據(jù)的對(duì)應(yīng)列中即可。其他對(duì)象的存儲(chǔ)方式類似。
3.3 利用VBA實(shí)現(xiàn)解析結(jié)果的自動(dòng)保存
在保存XML解析數(shù)據(jù)的同時(shí),可以同步對(duì)解析出的數(shù)據(jù)進(jìn)行校驗(yàn)。校驗(yàn)的規(guī)則根據(jù)圖紙?jiān)O(shè)計(jì)的審簽要求制定,如字段信息缺失、對(duì)象屬性不匹配、不滿足工藝要求等。根據(jù)審簽規(guī)則制定數(shù)據(jù)判別算法,將檢查結(jié)果保存在單獨(dú)的字表中即可??梢杂糜趫D樣的自動(dòng)校核。
解析出的數(shù)據(jù),還可以直接用于生成后續(xù)線束制造所需的物料表、工藝指令。事先制定好表單模板,利用VBA自動(dòng)解析并填充數(shù)據(jù),可以實(shí)現(xiàn)物料表的快速提取。
由于每一種類型的對(duì)象,在保存數(shù)據(jù)的時(shí)候,將該對(duì)象所屬的圖紙、圖紙的設(shè)計(jì)者均一并保存,因此在篩選出問題清單后,在清單的最后3列,包含了圖號(hào)、設(shè)計(jì)、專業(yè)組等信息,通過這些信息,可以將問題快速地落實(shí)到責(zé)任人。將問題清單通過郵件、公告欄等渠道通知相關(guān)的責(zé)任人,即完成了設(shè)計(jì)校驗(yàn)報(bào)表的發(fā)布。需要注意的是,在設(shè)計(jì)報(bào)表發(fā)布后,有必要進(jìn)一步與相關(guān)責(zé)任人進(jìn)行確認(rèn),并跟蹤更改落實(shí)情況。
4 ?結(jié)語
使用該文介紹的方法,可以批量實(shí)現(xiàn)多張XML格式圖紙的自動(dòng)解析,并實(shí)現(xiàn)信息的自動(dòng)保存。相較于使用Capital API接口開發(fā)的插件,這種方式對(duì)設(shè)計(jì)人員的編程技能要求不高,開發(fā)成本低,可以提升Capital電氣線束從設(shè)計(jì)過程的效率,實(shí)現(xiàn)下游制造部門在無Capital工具的條件下對(duì)線束設(shè)計(jì)數(shù)模的讀取和解析。
(1)不需要深入研究Capital自帶的API,利用Excel自帶的VBA功能就可以實(shí)現(xiàn)XML數(shù)據(jù)讀取,開發(fā)難度降低。
(2)在充分研究Capital圖樣XML格式的基礎(chǔ)上,可以根據(jù)需要定制導(dǎo)出的內(nèi)容和格式,能夠滿足開發(fā)過程中新增的需求。
參考文獻(xiàn)
[1] 郝冬晶.基于CHS軟件的飛機(jī)線束設(shè)計(jì)應(yīng)用[J].科技資訊,2013(16):25-26.
[2] 張馳.一種基于CHS軟件的飛機(jī)線束設(shè)計(jì)方法[J].航空科學(xué)技術(shù),2014(5):36-39.
[3] 王春芝,丁磊.CHS軟件在汽車線束設(shè)計(jì)中的應(yīng)用[C]//2014中國(guó)汽車工程學(xué)會(huì)年會(huì)論文集.2014.
[4] 楊雪,黎云軒,郗琦.數(shù)字一體化在電氣線路設(shè)計(jì)及測(cè)試中的應(yīng)用[J].電子測(cè)試,2018,388(7):33-34.
[5] Mentor Graphics.Capital Plugin Development-Software Version[Z].2012.
[6] Julitta K,Information M L &.Microsoft Excel 2010 Programming by Example with VBA, XML, and ASP[M]// Microsoft Excel 2010 Programming By Example:with VBA, XML, and ASP. Mercury Learning & Information,2011.
[7] Ray E T. Learning XML[M].O'Reilly,2003.