基于VBA的矿山设备布置图系统开发与应用
2014-05-10杨本生张首正
杨本生 ,张首正
(1.河北工程大学 资源学院,河北 邯郸 056038;2.河北工程大学 信息与电气工程学院,河北 邯郸 056038)
煤矿设备种类繁多,不便于统一管理,设备的位置信息管理更是缺失[1-2]。基于GIS的地图系统,能够完成对设备定位、设备添加、设备移动的功能,但它对巷道底图的可操作性不强[3]。机电设备信息管理系统主要针对设备资产进行统一管理,达到合理利用设备的目的,从而提高设备利用效率[4],但设备信息系统在设备安装位置信息的统计和展示方面存在不足,更不能把设备的资产信息与设备位置信息结合起来综合管理。针对煤矿机电设备现场使用后设备状态信息和参数信息不能集中、有效、可视化地进行管理的问题,本文提出了CAD二次开发解决方案,开发的设备布置图系统能在现有的巷道图上添加设备图形元素,形成对设备位置信息、设备状态信息的综合信息管理。
1系统开发工具分析与对比
AutoCAD提供了丰富的编程接口[5],CAD二次开发工具主要有Auto LISP/Visual LISP,基于C/C++的Objective ARX开发工具,还有基于VB/VBA的ActiveX开发。Auto LISP具有强大的图形处理功能[6],语言规则简单易学,有很多已经开发出来的功能函数、函数库供开发者使用。Visual LISP是Auto LISP的替换产品,对Auto LISP完全兼容,它在开发效率、程序执行效率和扩展性方面比Auto LISP更好;Object ARX是基于C/C++的开发环境,最大的特点是引入了面向对象的编程机制[7],而且Object ARX能够实现对Auto CAD的深入控制,能够访问CAD底层工具,能够向CAD注册自己命令,但是Object ARX对开发人员的要求较高,开发过程也相对复杂,Object ARX适用于源码保密的商业开发以及程序复杂度较高的应用,对于一般的画图工具制作就不太适合;VBA是微软开发出来的应用程序共享一种通用的自动化语言,它可以使常用的程序自动化,并可以创建自定义的解决方案[8]。VBA基于Visual Basic开发语言,其语法简单,程序容易阅读,是初学者学习CAD二次开发不错的开发工具,它与VB的主要区别是VBA和AutoCAD可以在同一进程空间中运行,另外重要的一点是VBA能够与windows的程序或者资源进行通信[9]。
2设备布置图系统概述
系统中关于设备布置的含义是把具体的机电设备图标拖放到对应于实际场地的CAD矿井图中,从而实现对复杂矿井下设备位置的定位,同时形成了可视化的设备位置显示功能,其次,系统提供对具体位置设备信息的查询、显示、统计等功能。
2.1系统拓扑结构图
系统的拓扑结构图如图1所示,这里的客户端不是浏览器,而是安装了此系统的AutoCAD应用程序,程序启动后将作为一个客户端访问远程服务器的结构化数据,然后返回传输过来的数据并展示,服务器可以是数据库服务器,文件存储服务器,系统虽然没有直接用到web服务器,但是客户端CAD程序却可以通过和其他web应用系统对数据库服务器进行共享访问,共用关键的数据,这种链接的目的是在基于大量数据处理的情况下提高系统的便捷性和实现更好的用户界面体验,同时在web应用系统中去方便地统计有用的数据,展示报表,从而弥补CAD数据处理方面的不足。
2.2系统方案比较
与基于GIS的地图系统相比,选择基于CAD进行二次开发,完成类似设备定位,信息展示的地图功能主要考虑以下原因。
首先,矿井的巷道布局错综复杂,处于不断变化之中。GIS系统要做到不断修改底层图层[10],而且是在没有开发人员支持的情况下由用户独立去绘制、新增巷道结构图,用户在使用习惯上肯定不如直接在CAD中绘制的方式来得直接,而且在实现上基于GIS的系统修改地图模板,往地图中去添加设备的功能,其实际的效果并不那么智能和理想,倒不如利用专业的CAD制图软件的功能。
其次,GIS系统需要绘制基本的位置结构图,把现有的巷道结构都勾勒出来,其他功能都是基于底图的完整性,问题是矿井的巷道图并不是由单个CAD文件呈现,而是由很多个DWG文件来描述这个庞大的地下结构。GIS需要组合这些图形元素,使之成为一个完整的矿井巷道全景图。而在利用CAD来直接处理时,并不需要去重新建立图形模型,这些巷道结构已经保存在DWG文件中,系统在处理多个DWG文件时根据其命名规则去方便地了解是那部分矿井图,省去了很大的工作量。
总之,基于CAD二次开发的方案在底图设计、修改工作上比基于GIS的方案有较少的工作量,在图形处理上有更好的支持。但是在界面美观方面,GIS开发的系统比CAD的界面好很多[11-12]。
2.3系统实现
2.3.1 系统架构分析
用户直接面对的是在CAD中打开的设备矿井图,用户能够利用CAD的绘图功能去修改巷道的结构,当用户需要在这些巷道上去拖放设备时会涉及到先建立标准的完整的设备图块库,从图块库中选择对应的设备进行拖放;当用户点击某个已经拖放且建立了数据库连接的设备图块时,相应的设备信息能够显示出来,这需要与远程数据库进行交互,巷道中设备的个数统计等也需要与数据库交互[13],系统的框架结构图如图2所示。
2.3.2 标准设备图块库
建立设备图块库需要利用CAD中的图块功能,设备图库中的图形元素每一个都是一个单独的图块,一个图块就是一个设备,它按照设备类型进行分类,有固定的比例大小。
矿图符号库将矿图要素统一考虑[14],库中图块设定的大小标准为10 cm×10 cm,块属性字体样式为宋体,高度2.5像素,这里的属性可以是图块的编号。为机电设备建立一个综合的图块库是一个繁琐而复杂的工作,需要相关人员互相配合与协商。在考虑图库的完整性基础性之上,不能保证图块的规格永远不变,图块库能够支持动态添加和修改功能。
2.3.3 AutoCAD访问数据库
系统采用ADO(active data object,活动数据对象)访问数据库的方式,在CAD的VBA集成开发环境下,初始化COM库,引入ADO库定义文件,在“工具”-“引用”中添加相应的库文件即可使用相应的数据库操作对象。
AutoCAD用句柄来识别同一个dwg文件中的不同对象,同一图形中所有对象的句柄都不相同,但是不同图形中的对象的句柄有可能拥有相同的句柄。那么利用dwg文件名称和dwg文件中设备图块的句柄就可以唯一确定该设备图块,在数据库保存dwg文件名称和图块句柄信息,这两个属性确定了唯一的图块,图块其他的位置信息,参数信息只要建立与图块的关联即可。系统在dwg图中拖放一个设备图块后,需要建立与相应设备信息的关联,这是为了能够显示该设备的参数信息。这些参数信息是由另外一个b/s系统提供和维护。获取当前聚焦的图块的句柄方法如下所示:
Dim dwg_name As String, bl_handle As String
Dim aFile As Variant
'取得当前聚焦的图块的blockname,blockhandle.
Dim objSelect As AcadEntity, objsel As AcadObject
Dim pkpoint As Variant
ThisDrawing.Utility.GetEntity objSelect, pkpoint, “选择图块!”
If Not TypeOf objSelect Is AcadBlockReference Then
MsgBox “你选择的不是图块”
Exit Sub
End If
'保存当前对象的句柄
bl_handle = objSelect.Hdlean
'保存当前对象的名称
aFile = Split(ThisDrawing.FullName, "”)
dwg_name = aFile(UBound(aFile)) '数组的最后一个元素为文件名
2.3.4 UI界面
UI界面在CAD中主要体现为对话框,设备图块库的设备选择面板,异常处理后的错误提示界面。下图为添加设备图块与设备信息关联的界面。
系统以插件的方式集成于AutoCAD 2007中,所有功能在设备布置下拉菜单中,在机电设备图库功能中,机电设备图块库以选项板的方式显示在界面中,默认显示,如果不显示可以用快捷键“ctrl+B”显示出来,设备图块添加到设备布置dwg中后,选择创建连接,此时会提示选择机电设备图块,能够自动判断选择元素的类型,如果不是设备图块将提示错误,重新选择,界面设计需要简单、易用。
在展示设备相关参数信息的时候,可以选择性的显示多个设备的参数信息,形成对比,并且在dwg图的下方位置,统计出当前矿井巷道图中设备的总数,按设备类型,负责人,设备运行状态等显示相关设备的整体信息。
3结 语
基于VBA的设备布置图系统,能够对井下设备进行定位,并实现对设备信息的集成管理,动态地显示相关设备的信息,统计相关设备的使用状态,程序的移植性好。基于CAD二次开发的布置图系统,能够把复杂矿井下设备的位置,运行状况等信息展示给用户,提供了设备定位、管理、统计等功能,具有实际应用价值。
参考文献:
[1] 张来新.综述AutoCAD二次开发工具[J].科技致富向导,2010(16):168-169.
[2] 蒋维平, 孟宪民.钻井工程实时多参数监测控制系统的研究[J].中国煤炭地质,2008,20(5):68-71.
[3] 来 骏,徐其春,陈登明,等.基于GIS的配电生产管理与决策支持系统[J].继电器,2006,34(3):63-65.
[4] 张培科,胡乃联,董书革,等.基于B/S模式的矿山设备管理系统设计与实现[J].有色金属,2011,63(2):268-271.
[5] 王小娟,杨玲玲.AutoCAD二次开发工具及技术应用[J].山西煤炭管理干部学院学报,2010,23(1):88-89.
[6] 刘喜平.基于Auto LISP的AutoCAD二次开发技术[J].机械制造与自动化,2011(4):128-129.
[7] 张 伟,刘伟涛,许云华.利用Object ARX对AutoCAD 2006进行二次开发及其应用[J].机械研究与应用,2007(2):110-111.
[8] 李 琳.基于VBA的AutoCAD二次开发[J].硅谷, 2011(18):191.
[9] 王建东,李国昌.用VB对AutoCAD进行二次开发技术的研究[J].河北科技大学学报,2006,27(2):169-172.
[10] 郝天平,张 洋,王志龙.基于GIS的土地节约集约利用评价研究[J].河北工程大学学报:自然科学版,2012, 29(1): 66-69.
[11] 李志锐,李法虎.基于VBA技术的AutoCAD二次开发在地形图绘制中的应用[J].农业工程学报,2007,23(10):25-30.
[12] 周复旦,赵长胜.AutoCAD平台下的矿图符号库设计与开发[J].测绘通报,2011(6):29-31.
[13] 王胜娟.AUTOCAD在地质图件制作中的应用技巧[J]. 中国煤炭地质,2008,20[S1]:35-37.
[14] 刘海新,时翠梅.基于GIS的银行综合管理辅助系统研究[J].河北工程大学学报:自然科学版,2013,30(3):88-91.