楊本生 ,張首正
(1.河北工程大學(xué) 資源學(xué)院,河北 邯鄲 056038;2.河北工程大學(xué) 信息與電氣工程學(xué)院,河北 邯鄲 056038)
煤礦設(shè)備種類繁多,不便于統(tǒng)一管理,設(shè)備的位置信息管理更是缺失[1-2]?;贕IS的地圖系統(tǒng),能夠完成對設(shè)備定位、設(shè)備添加、設(shè)備移動的功能,但它對巷道底圖的可操作性不強(qiáng)[3]。機(jī)電設(shè)備信息管理系統(tǒng)主要針對設(shè)備資產(chǎn)進(jìn)行統(tǒng)一管理,達(dá)到合理利用設(shè)備的目的,從而提高設(shè)備利用效率[4],但設(shè)備信息系統(tǒng)在設(shè)備安裝位置信息的統(tǒng)計和展示方面存在不足,更不能把設(shè)備的資產(chǎn)信息與設(shè)備位置信息結(jié)合起來綜合管理。針對煤礦機(jī)電設(shè)備現(xiàn)場使用后設(shè)備狀態(tài)信息和參數(shù)信息不能集中、有效、可視化地進(jìn)行管理的問題,本文提出了CAD二次開發(fā)解決方案,開發(fā)的設(shè)備布置圖系統(tǒng)能在現(xiàn)有的巷道圖上添加設(shè)備圖形元素,形成對設(shè)備位置信息、設(shè)備狀態(tài)信息的綜合信息管理。
AutoCAD提供了豐富的編程接口[5],CAD二次開發(fā)工具主要有Auto LISP/Visual LISP,基于C/C++的Objective ARX開發(fā)工具,還有基于VB/VBA的ActiveX開發(fā)。Auto LISP具有強(qiáng)大的圖形處理功能[6],語言規(guī)則簡單易學(xué),有很多已經(jīng)開發(fā)出來的功能函數(shù)、函數(shù)庫供開發(fā)者使用。Visual LISP是Auto LISP的替換產(chǎn)品,對Auto LISP完全兼容,它在開發(fā)效率、程序執(zhí)行效率和擴(kuò)展性方面比Auto LISP更好;Object ARX是基于C/C++的開發(fā)環(huán)境,最大的特點(diǎn)是引入了面向?qū)ο蟮木幊虣C(jī)制[7],而且Object ARX能夠?qū)崿F(xiàn)對Auto CAD的深入控制,能夠訪問CAD底層工具,能夠向CAD注冊自己命令,但是Object ARX對開發(fā)人員的要求較高,開發(fā)過程也相對復(fù)雜,Object ARX適用于源碼保密的商業(yè)開發(fā)以及程序復(fù)雜度較高的應(yīng)用,對于一般的畫圖工具制作就不太適合;VBA是微軟開發(fā)出來的應(yīng)用程序共享一種通用的自動化語言,它可以使常用的程序自動化,并可以創(chuàng)建自定義的解決方案[8]。VBA基于Visual Basic開發(fā)語言,其語法簡單,程序容易閱讀,是初學(xué)者學(xué)習(xí)CAD二次開發(fā)不錯的開發(fā)工具,它與VB的主要區(qū)別是VBA和AutoCAD可以在同一進(jìn)程空間中運(yùn)行,另外重要的一點(diǎn)是VBA能夠與windows的程序或者資源進(jìn)行通信[9]。
系統(tǒng)中關(guān)于設(shè)備布置的含義是把具體的機(jī)電設(shè)備圖標(biāo)拖放到對應(yīng)于實(shí)際場地的CAD礦井圖中,從而實(shí)現(xiàn)對復(fù)雜礦井下設(shè)備位置的定位,同時形成了可視化的設(shè)備位置顯示功能,其次,系統(tǒng)提供對具體位置設(shè)備信息的查詢、顯示、統(tǒng)計等功能。
系統(tǒng)的拓?fù)浣Y(jié)構(gòu)圖如圖1所示,這里的客戶端不是瀏覽器,而是安裝了此系統(tǒng)的AutoCAD應(yīng)用程序,程序啟動后將作為一個客戶端訪問遠(yuǎn)程服務(wù)器的結(jié)構(gòu)化數(shù)據(jù),然后返回傳輸過來的數(shù)據(jù)并展示,服務(wù)器可以是數(shù)據(jù)庫服務(wù)器,文件存儲服務(wù)器,系統(tǒng)雖然沒有直接用到web服務(wù)器,但是客戶端CAD程序卻可以通過和其他web應(yīng)用系統(tǒng)對數(shù)據(jù)庫服務(wù)器進(jìn)行共享訪問,共用關(guān)鍵的數(shù)據(jù),這種鏈接的目的是在基于大量數(shù)據(jù)處理的情況下提高系統(tǒng)的便捷性和實(shí)現(xiàn)更好的用戶界面體驗(yàn),同時在web應(yīng)用系統(tǒng)中去方便地統(tǒng)計有用的數(shù)據(jù),展示報表,從而彌補(bǔ)CAD數(shù)據(jù)處理方面的不足。
與基于GIS的地圖系統(tǒng)相比,選擇基于CAD進(jìn)行二次開發(fā),完成類似設(shè)備定位,信息展示的地圖功能主要考慮以下原因。
首先,礦井的巷道布局錯綜復(fù)雜,處于不斷變化之中。GIS系統(tǒng)要做到不斷修改底層圖層[10],而且是在沒有開發(fā)人員支持的情況下由用戶獨(dú)立去繪制、新增巷道結(jié)構(gòu)圖,用戶在使用習(xí)慣上肯定不如直接在CAD中繪制的方式來得直接,而且在實(shí)現(xiàn)上基于GIS的系統(tǒng)修改地圖模板,往地圖中去添加設(shè)備的功能,其實(shí)際的效果并不那么智能和理想,倒不如利用專業(yè)的CAD制圖軟件的功能。
其次,GIS系統(tǒng)需要繪制基本的位置結(jié)構(gòu)圖,把現(xiàn)有的巷道結(jié)構(gòu)都勾勒出來,其他功能都是基于底圖的完整性,問題是礦井的巷道圖并不是由單個CAD文件呈現(xiàn),而是由很多個DWG文件來描述這個龐大的地下結(jié)構(gòu)。GIS需要組合這些圖形元素,使之成為一個完整的礦井巷道全景圖。而在利用CAD來直接處理時,并不需要去重新建立圖形模型,這些巷道結(jié)構(gòu)已經(jīng)保存在DWG文件中,系統(tǒng)在處理多個DWG文件時根據(jù)其命名規(guī)則去方便地了解是那部分礦井圖,省去了很大的工作量。
總之,基于CAD二次開發(fā)的方案在底圖設(shè)計、修改工作上比基于GIS的方案有較少的工作量,在圖形處理上有更好的支持。但是在界面美觀方面,GIS開發(fā)的系統(tǒng)比CAD的界面好很多[11-12]。
2.3.1 系統(tǒng)架構(gòu)分析
用戶直接面對的是在CAD中打開的設(shè)備礦井圖,用戶能夠利用CAD的繪圖功能去修改巷道的結(jié)構(gòu),當(dāng)用戶需要在這些巷道上去拖放設(shè)備時會涉及到先建立標(biāo)準(zhǔn)的完整的設(shè)備圖塊庫,從圖塊庫中選擇對應(yīng)的設(shè)備進(jìn)行拖放;當(dāng)用戶點(diǎn)擊某個已經(jīng)拖放且建立了數(shù)據(jù)庫連接的設(shè)備圖塊時,相應(yīng)的設(shè)備信息能夠顯示出來,這需要與遠(yuǎn)程數(shù)據(jù)庫進(jìn)行交互,巷道中設(shè)備的個數(shù)統(tǒng)計等也需要與數(shù)據(jù)庫交互[13],系統(tǒng)的框架結(jié)構(gòu)圖如圖2所示。
2.3.2 標(biāo)準(zhǔn)設(shè)備圖塊庫
建立設(shè)備圖塊庫需要利用CAD中的圖塊功能,設(shè)備圖庫中的圖形元素每一個都是一個單獨(dú)的圖塊,一個圖塊就是一個設(shè)備,它按照設(shè)備類型進(jìn)行分類,有固定的比例大小。
礦圖符號庫將礦圖要素統(tǒng)一考慮[14],庫中圖塊設(shè)定的大小標(biāo)準(zhǔn)為10 cm×10 cm,塊屬性字體樣式為宋體,高度2.5像素,這里的屬性可以是圖塊的編號。為機(jī)電設(shè)備建立一個綜合的圖塊庫是一個繁瑣而復(fù)雜的工作,需要相關(guān)人員互相配合與協(xié)商。在考慮圖庫的完整性基礎(chǔ)性之上,不能保證圖塊的規(guī)格永遠(yuǎn)不變,圖塊庫能夠支持動態(tài)添加和修改功能。
2.3.3 AutoCAD訪問數(shù)據(jù)庫
系統(tǒng)采用ADO(active data object,活動數(shù)據(jù)對象)訪問數(shù)據(jù)庫的方式,在CAD的VBA集成開發(fā)環(huán)境下,初始化COM庫,引入ADO庫定義文件,在“工具”-“引用”中添加相應(yīng)的庫文件即可使用相應(yīng)的數(shù)據(jù)庫操作對象。
AutoCAD用句柄來識別同一個dwg文件中的不同對象,同一圖形中所有對象的句柄都不相同,但是不同圖形中的對象的句柄有可能擁有相同的句柄。那么利用dwg文件名稱和dwg文件中設(shè)備圖塊的句柄就可以唯一確定該設(shè)備圖塊,在數(shù)據(jù)庫保存dwg文件名稱和圖塊句柄信息,這兩個屬性確定了唯一的圖塊,圖塊其他的位置信息,參數(shù)信息只要建立與圖塊的關(guān)聯(lián)即可。系統(tǒng)在dwg圖中拖放一個設(shè)備圖塊后,需要建立與相應(yīng)設(shè)備信息的關(guān)聯(lián),這是為了能夠顯示該設(shè)備的參數(shù)信息。這些參數(shù)信息是由另外一個b/s系統(tǒng)提供和維護(hù)。獲取當(dāng)前聚焦的圖塊的句柄方法如下所示:
Dim dwg_name As String, bl_handle As String
Dim aFile As Variant
'取得當(dāng)前聚焦的圖塊的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
'保存當(dāng)前對象的句柄
bl_handle = objSelect.Hdlean
'保存當(dāng)前對象的名稱
aFile = Split(ThisDrawing.FullName, "”)
dwg_name = aFile(UBound(aFile)) '數(shù)組的最后一個元素為文件名
2.3.4 UI界面
UI界面在CAD中主要體現(xiàn)為對話框,設(shè)備圖塊庫的設(shè)備選擇面板,異常處理后的錯誤提示界面。下圖為添加設(shè)備圖塊與設(shè)備信息關(guān)聯(lián)的界面。
系統(tǒng)以插件的方式集成于AutoCAD 2007中,所有功能在設(shè)備布置下拉菜單中,在機(jī)電設(shè)備圖庫功能中,機(jī)電設(shè)備圖塊庫以選項板的方式顯示在界面中,默認(rèn)顯示,如果不顯示可以用快捷鍵“ctrl+B”顯示出來,設(shè)備圖塊添加到設(shè)備布置dwg中后,選擇創(chuàng)建連接,此時會提示選擇機(jī)電設(shè)備圖塊,能夠自動判斷選擇元素的類型,如果不是設(shè)備圖塊將提示錯誤,重新選擇,界面設(shè)計需要簡單、易用。
在展示設(shè)備相關(guān)參數(shù)信息的時候,可以選擇性的顯示多個設(shè)備的參數(shù)信息,形成對比,并且在dwg圖的下方位置,統(tǒng)計出當(dāng)前礦井巷道圖中設(shè)備的總數(shù),按設(shè)備類型,負(fù)責(zé)人,設(shè)備運(yùn)行狀態(tài)等顯示相關(guān)設(shè)備的整體信息。
基于VBA的設(shè)備布置圖系統(tǒng),能夠?qū)略O(shè)備進(jìn)行定位,并實(shí)現(xiàn)對設(shè)備信息的集成管理,動態(tài)地顯示相關(guān)設(shè)備的信息,統(tǒng)計相關(guān)設(shè)備的使用狀態(tài),程序的移植性好?;贑AD二次開發(fā)的布置圖系統(tǒng),能夠把復(fù)雜礦井下設(shè)備的位置,運(yùn)行狀況等信息展示給用戶,提供了設(shè)備定位、管理、統(tǒng)計等功能,具有實(shí)際應(yīng)用價值。
參考文獻(xiàn):
[1] 張來新.綜述AutoCAD二次開發(fā)工具[J].科技致富向?qū)В?010(16):168-169.
[2] 蔣維平, 孟憲民.鉆井工程實(shí)時多參數(shù)監(jiān)測控制系統(tǒng)的研究[J].中國煤炭地質(zhì),2008,20(5):68-71.
[3] 來 駿,徐其春,陳登明,等.基于GIS的配電生產(chǎn)管理與決策支持系統(tǒng)[J].繼電器,2006,34(3):63-65.
[4] 張培科,胡乃聯(lián),董書革,等.基于B/S模式的礦山設(shè)備管理系統(tǒng)設(shè)計與實(shí)現(xiàn)[J].有色金屬,2011,63(2):268-271.
[5] 王小娟,楊玲玲.AutoCAD二次開發(fā)工具及技術(shù)應(yīng)用[J].山西煤炭管理干部學(xué)院學(xué)報,2010,23(1):88-89.
[6] 劉喜平.基于Auto LISP的AutoCAD二次開發(fā)技術(shù)[J].機(jī)械制造與自動化,2011(4):128-129.
[7] 張 偉,劉偉濤,許云華.利用Object ARX對AutoCAD 2006進(jìn)行二次開發(fā)及其應(yīng)用[J].機(jī)械研究與應(yīng)用,2007(2):110-111.
[8] 李 琳.基于VBA的AutoCAD二次開發(fā)[J].硅谷, 2011(18):191.
[9] 王建東,李國昌.用VB對AutoCAD進(jìn)行二次開發(fā)技術(shù)的研究[J].河北科技大學(xué)學(xué)報,2006,27(2):169-172.
[10] 郝天平,張 洋,王志龍.基于GIS的土地節(jié)約集約利用評價研究[J].河北工程大學(xué)學(xué)報:自然科學(xué)版,2012, 29(1): 66-69.
[11] 李志銳,李法虎.基于VBA技術(shù)的AutoCAD二次開發(fā)在地形圖繪制中的應(yīng)用[J].農(nóng)業(yè)工程學(xué)報,2007,23(10):25-30.
[12] 周復(fù)旦,趙長勝.AutoCAD平臺下的礦圖符號庫設(shè)計與開發(fā)[J].測繪通報,2011(6):29-31.
[13] 王勝娟.AUTOCAD在地質(zhì)圖件制作中的應(yīng)用技巧[J]. 中國煤炭地質(zhì),2008,20[S1]:35-37.
[14] 劉海新,時翠梅.基于GIS的銀行綜合管理輔助系統(tǒng)研究[J].河北工程大學(xué)學(xué)報:自然科學(xué)版,2013,30(3):88-91.