石磊



摘 ?要:Capital電氣線束設計軟件在汽車、鐵路、航空航天等領域應用廣泛,由于不同設計和制造團隊所采用產品數據管理流程的差異性,需要通過API接口進行二次開發,以提高設計質量和數據兼容性。為了節約研發成本、縮短開發周期,該文介紹了一種基于VBA和XML進行數據解析和自動校核的方法,可以提高設計效率,易于實現飛機線束設計、制造方對Capital設計數據的快速讀取和分析。
關鍵詞:Capital CHS ?VBA ?XML ?飛機線束 ?二次開發
中圖分類號:TP311 ? 文獻標識碼:A 文章編號: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
飛機的電氣線束設計的工具經歷了從基于圖形符號的設計到基于數據庫的設計,唯一數據源的實現提高了設計質量,目前已經有多款基于數據庫的電氣線束設計工具應用于汽車和航空航天領域,圖形符號和報表不再是表達電氣線束設計成果的唯一方式,XML成為存儲設計信息的重要載體。如果設計方和線束制造方的設計工具不兼容,就需要利用軟件提供的API進行二次開發,對于線束設計人員來說,編程要求高,且無法適應多變的業務需求。該文提出一種利用Excel VBA進行Capital設計數據解析的方法,可以較為方便地實現設計圖樣數據的分析和讀取。
1 ?軟件和工具介紹
1.1 電氣線束設計軟件
飛機的電氣互聯系統設計手段從最初的手工制圖演變到后來的計算機輔助制圖,隨著計算機性能的提高,計算機輔助制圖的功能和性能也越來越強大,從單純的圖形設計,演進到了基于數據庫的關聯設計,三維設計引入也使得對線纜長度的取樣更加精確和方便。Mentor Graphics公司的Capital(前身為Capital CHS)作為在飛機[1-2]和汽車[3-4]研制等領域應用廣泛的軟件,提供原理圖設計、拓撲圖設計、線路圖設計等模塊,以及元器件庫、用戶管理、風格管理等功能。使用Capital可以設計完成原理圖、線路圖、線束圖、拓撲圖等幾種類型的圖紙。這些圖紙的對象信息都存儲在數據庫中,軟件支持將圖紙保存成PDF或者XML等格式。Capital提供了二次開發接口,可以利用Java/JavaScript進行內置插件或者Web Service應用開發[5]。
1.2 Excel VBA和Microsoft XML 6.0庫
VBA(Visual Basic for Applications)是Visual Basic的一種宏語言,是微軟開發出來的在其桌面應用程序中執行通用的自動化任務的編程語言[6],尤其是對于微軟的Office辦公軟件,可以通過VBA擁有自動化的功能。在Excel中啟用VBA以后,就可以通過Excel的VBA開發界面的菜單欄的“Visual Basic”選項直接進入內置的宏代碼開發窗口,可以在不同的文檔對象中添加程序代碼,調試通過后,點擊啟動按鈕執行宏代碼,實現預期的功能。
XML(Extensible Markup Language,可擴展標記語言)作為一個數據存儲工具包,是一種用于標記電子文件使其具有結構性的標記語言,用戶可以自己定義標簽,通過滿足規范的格式,引入不同的層次,可以實現數據的保存與傳輸[7]。在Capital繪制的原理圖、線路圖、線束圖均可以實用軟件自帶的功能導出為XML格式的文件,圖紙中包含的型號、數量、長度、接線關系等內容均包含在了XML文件中。只要通過規范的解析方式,就可以從XML文件中提取出所需的所有信息,這也是實現該文自動校核過程的基礎。
2 ?Capital數模XML文件結構及解析
2.1 文件解析的采用的工具和函數
該文的目標是能夠解析出XML格式數模中的信息,因此能夠讀懂XML是該文的基本要求。XML文件由標記和內容組成,以標記包圍內容的方式將大部分內容包括在元素中。
Capital 生成的圖樣數模的XML文件以下列3行代碼開頭,具體見圖3。
以上3行代碼分別是XML聲明、文檔驗證規則的引用(該路徑對應于本地的Capital 安裝路徑)以及版本信息。
然后是根元素project,代表了圖紙設計所屬的項目(見圖4)。
根元素描述了圖樣所屬型號的信息,上面語句中第一行project后面的內容就屬于一個元素的屬性信息。其他的元素則可以通過嵌套添加到根元素中,如
每一張圖紙中的所有信息,就是通過一定的樹結構進行存儲的,要想獲取某一張圖紙中的信息,必須了解該類圖紙的樹結構的特點,找到不同對象所在的節點,然后讀取該元素的屬性。
2.2 不同類型圖紙XML文件結構解析
由于不同類型圖紙的XML文件的樹結構不同,在開始VBA編程之前,需要認真研究線路圖、線束圖和拓撲圖的文件結構,確定不同對象的存放節點,不同圖紙對象屬性對應的XML文件中的元素屬性,進而通過編程實現文件的自動解析。以線束圖為例,其XML元素的結構如下。
文件的根節點為Project,根節點下包括的設計數據主要存放在harnessdesign節點下,該節點的子節點分析結果如圖5所示,可以看出,與線束物料相關的信息都存放在connectivity節點下。可以使用Notepad++等工具深入分析各種圖紙的文檔結構。
2.3 進行XML文件解析的函數模塊
在該文提供的方法中,為了方便對XML文件的解析,對XML對象的方法進行了封裝,制定了3個常用的函數,具體如下。
(1)ParselXML(節點名,對象名)函數,獲取XML文件中的某一個根節點。該方法的返回值為一個IXMLDOMNode類型的對象,在成功通過Load方法載入XML文件后,就可以使用此函數,獲取XML文件中存放設計數據的節點。
(2)GetNodeCount(節點對象,子節點名)函數,獲取節點下固定名稱的子節點的數量。
(3)ParselNodeAttributes(屬性名,節點名),獲取節點的屬性內容,某些對象如連接器的型號的信息都是存儲在連接器節點的屬性信息中的。
3 ?Capital圖樣自動解析功能的實現
可以使用上述方法對圖紙XML文件進行解析。如果要實現圖樣的自動校核功能,實現對數百張圖紙的批量校核,還需要增加文件循環,實現批量XML文件的自動解析,在解析的過程中,將每一張圖紙XML文件中不同類型的信息保存到Excel文件的不同子表中,最終根據文件校驗的規則對解析出來的數據進行核對,由于在文件解析過程中,自動在每一行信息的后部增加了所屬圖紙和設計者的信息,可以很方便地對問題進行定位。有些情況下,還有對Capital自動生成的交互結果和報表等數據進行定位,就需要結合批量解析出的Excel文件,實現對象的精確定位。具體到每一個過程的實現流程如下。
3.1 批量文件自動解析過程的實現流程
由于Capital自帶的報表導出功能無法自定義,在整個項目數據導出時不能將物料信息與具體的設計圖紙進行匹配,在
首先,在Excel文件中建立一個子表,命名為“圖樣清單”,該子表中至少包括如下信息。
(1)序號,用于檢索和排序。
(2)圖號,按照產品圖樣編號規定命名的圖樣編號。
(3)圖名,圖紙的名字。
(4)設計,該圖紙的設計人。
(5)所屬專業組,設計者所在的專業組。
表1給出了一個示例。
將全機所有的圖紙信息錄入到符合表1所列格式的子表中,接下來的程序循環,每一次將會讀取該表中的“序號”“圖號”“圖名”“設計”和“專業組”列。假設循環變量為i,則對于每一個i,讀取圖樣清單表格的第i行,獲取該行的第2列,得到圖名,通過給圖名添加路徑前綴,和“.xml”后綴,可以得到圖號在本機電腦保存的完整文件名FileName,然后調用DOMDocument對象的Load方法,判斷是否正確讀取文件,如果讀取異常,則通過On error Resume Next語句自動跳轉到下一個循環;如果讀取正常,則開始對DOMDocument對象進行解析。根據對不同類型圖紙的XML文件的樹結構,獲取所關注的各類對象及信息。然后通過下一節描述的方法,將信息保存到Excel文件對應的子表中。完成讀取和保存后,判讀循環變量是否達到圖樣清單表格的最后一行,如果未達到,則繼續下一輪循環;如果達到,則程序結束。程序流程示意如圖6所示。
3.2 利用VBA實現解析結果的自動保存
為了將圖紙中解析出來的各種物料信息自動保存,需要對Excel文件進行修改,增加若干的子表,每一個子表的按照擬保存信息的種類進行命名,如“連接器”“導線”等,每一個子表的表頭根據每一種類型信息的屬性進行初始化。以連接器舉例,在線束圖中,每一個連接器節點,包含信息以下。
序號、ID、連接器代號、連接器類型、連接器型號、連接器供應商、型號描述、連接器用途、所屬線束、數量、重量、供應商型號、壓接方式、配套方式、Include on BOM等,這些信息在XML文件中的字段定義如圖7所示。
Excel文件中“連接器”子表的表頭字段建立應參考以上節點,并與XML解析出來的節點的屬性信息進行映射,每當讀取一個節點的各種屬性信息時,將不同的屬性信息順次保存到“連接器”子表的某一行數據的對應列中即可。其他對象的存儲方式類似。
3.3 利用VBA實現解析結果的自動保存
在保存XML解析數據的同時,可以同步對解析出的數據進行校驗。校驗的規則根據圖紙設計的審簽要求制定,如字段信息缺失、對象屬性不匹配、不滿足工藝要求等。根據審簽規則制定數據判別算法,將檢查結果保存在單獨的字表中即可。可以用于圖樣的自動校核。
解析出的數據,還可以直接用于生成后續線束制造所需的物料表、工藝指令。事先制定好表單模板,利用VBA自動解析并填充數據,可以實現物料表的快速提取。
由于每一種類型的對象,在保存數據的時候,將該對象所屬的圖紙、圖紙的設計者均一并保存,因此在篩選出問題清單后,在清單的最后3列,包含了圖號、設計、專業組等信息,通過這些信息,可以將問題快速地落實到責任人。將問題清單通過郵件、公告欄等渠道通知相關的責任人,即完成了設計校驗報表的發布。需要注意的是,在設計報表發布后,有必要進一步與相關責任人進行確認,并跟蹤更改落實情況。
4 ?結語
使用該文介紹的方法,可以批量實現多張XML格式圖紙的自動解析,并實現信息的自動保存。相較于使用Capital API接口開發的插件,這種方式對設計人員的編程技能要求不高,開發成本低,可以提升Capital電氣線束從設計過程的效率,實現下游制造部門在無Capital工具的條件下對線束設計數模的讀取和解析。
(1)不需要深入研究Capital自帶的API,利用Excel自帶的VBA功能就可以實現XML數據讀取,開發難度降低。
(2)在充分研究Capital圖樣XML格式的基礎上,可以根據需要定制導出的內容和格式,能夠滿足開發過程中新增的需求。
參考文獻
[1] 郝冬晶.基于CHS軟件的飛機線束設計應用[J].科技資訊,2013(16):25-26.
[2] 張馳.一種基于CHS軟件的飛機線束設計方法[J].航空科學技術,2014(5):36-39.
[3] 王春芝,丁磊.CHS軟件在汽車線束設計中的應用[C]//2014中國汽車工程學會年會論文集.2014.
[4] 楊雪,黎云軒,郗琦.數字一體化在電氣線路設計及測試中的應用[J].電子測試,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.