石磊
摘 要: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.