摘 要:用Visual Basic 6.0和Microsoft Excel2007對AutoCAD2007進行開發(fā),使得CAD的功能得到擴展,介紹了VB中如何調(diào)用Excel和CAD的類型庫和從VB代碼中來操作EXCEL和CAD的方法和技術(shù),從而可以在VB中調(diào)用Excel和CAD,并引用Excel的數(shù)據(jù)來生成CAD中的圖元,進而探討如何由煤礦中涉及到的抽采鉆孔參數(shù)數(shù)據(jù)快速生成鉆孔平面圖,最后用AutoCAD2007中自帶的VBA編輯器開發(fā)AutoCAD2007的菜單,添加新的菜單項,并將開發(fā)出的能生成鉆孔的可執(zhí)行文件與新的菜單項并聯(lián),達到能從CAD的菜單中快速調(diào)用關(guān)于生成抽采鉆孔的CAD二次開發(fā)程序。
關(guān)鍵詞:Visual Basic 6.0;Excel;AutoCAD;evelopment;類型庫;鉆孔;菜單
中圖分類號:TD712.6 文獻標(biāo)識碼:A 文章編號:1004-7344(2018)18-0153-02
在高瓦斯礦井和突出礦井都會采取一些措施來治理瓦斯,常常會采取用頂抽巷、底抽巷打穿層鉆孔,或沿煤層打順層鉆孔來抽瓦斯達到降低或消除突出危險性和瓦斯含量。在作月度或年度驗收評價時會需要期間所打鉆孔的實際分布圖,一般都用CAD來完成制圖工作,如果只用CAD中提供的基本的繪圖命令和編輯工具并依照日常統(tǒng)計的鉆孔參數(shù)數(shù)據(jù)來完成百上千個鉆孔圖形會是一個繁瑣費事的過程,而卻還很容易出錯,因此就需要探索一種快速準(zhǔn)確的并基于鉆孔基本參數(shù)數(shù)據(jù)完成制圖方法,將日常統(tǒng)計的鉆孔參數(shù)數(shù)據(jù)快速準(zhǔn)確的轉(zhuǎn)換為CAD圖形的鉆孔。
1 基本原理
本本所涉及的發(fā)開方法是用Visual Basic 6在CAD2007和office2007基礎(chǔ)上所開發(fā)的,關(guān)鍵在于解決鉆孔的excel數(shù)據(jù)裝換成CAD特定鉆孔圖形。
ActiveX Automation interface[1](ActiveX自動化界面技術(shù))是微軟公司推出的一個技術(shù)標(biāo)準(zhǔn),該技術(shù)是在Windows系統(tǒng)的統(tǒng)一管理下協(xié)調(diào)不同的應(yīng)用程序,允許應(yīng)用程序之間相互控制、相互調(diào)用。AutoCAD作為一種具有高度開放結(jié)構(gòu)的CAD平臺軟件,它提供了強大的二次開發(fā)環(huán)境,并AutoCAD引入了ActiveX技術(shù)。所以許多面向?qū)ο蠡幊痰恼Z言和應(yīng)用程序,可以通過ActiveX與AutoCAD進行通信,并操縱AutoCAD的許多功能。
從圖1中可以看出,能使用ActiveX自動化界面技術(shù)的語言環(huán)境有很多,這是ActiveX技術(shù)的一大優(yōu)點。另外,采用ActiveX技術(shù)還可以是應(yīng)用程序之間很好地共享數(shù)據(jù),如AutoCAD、office excel、office word等。Visual Basic是一種可視化的計算機開發(fā)語言,是一門容易掌握和使用的計算機語言可以輕松的創(chuàng)建ActiveX控件。所以在做此項開發(fā)時,用vb6.0的ActiveX技術(shù)同時調(diào)用excel和AutoCAD的類型庫來并完成數(shù)據(jù)交換處理。
2 如何實現(xiàn)Excel數(shù)據(jù)轉(zhuǎn)為CAD圖
2.1 VB中調(diào)用CAD的方法與技術(shù)
VB中的用CAD可分為以下幾步來完成,其中關(guān)鍵在于如何調(diào)用CAD類型庫[2]。
(1)打開VB建立一個新的工程,添加一個名為Module1標(biāo)準(zhǔn)模塊單。
(2)啟動“工程”菜單下的“引用”命令,打開應(yīng)用對話框,找到“AutoCAD2007 TypeLibrary”并在其復(fù)選框上打鉤,然后單擊確“確定”。
(3)啟動“工程”菜單下的“工程引用”命令,單擊工程屬性對話框中的“啟動對象”欄右端的箭頭,在其組合框中選中“Sub Main”,單擊確定。(把Sub Main設(shè)定為啟動過程[1])
(4)在SubMain過程中添加以下程序代碼:
Public acadapp As Object
Public acaddoc As Object
Public mospace As Object
Sub Main()
On Error Resume Next
‘錯誤處理,如果錯誤執(zhí)行下一句
Set acadapp=GetObject(,\"Autocad.Application\")
If Err <> 0 Then
Err.Clear
‘如果CAD打開把當(dāng)前打開圖檔作為操作圖檔
Set acadapp=CreateObject(\"Autocad.Application\")
If Err<>0Then
Err.Clear
MsgBox\"CAD未打開,_
請打先打開一個CAD圖檔!\",48,\"錯誤:\"
Exit Sub
End If
‘如果CAD沒打開,自動新建新的圖檔文件
End If
Set acaddoc=acadapp.ActiveDocument
Set mospace=acaddoc.ModelSpace
Set paspace=acaddoc.PaperSpace
acadapp.Visible=acTrue
End Sub
2.2 VB調(diào)用Excel的方法與技術(shù)
(1)在D盤目錄中建立名為\"列表.xls\"的Excel文件。
(2)打開VB建立一個新的工程,添加一個名為窗體,在窗體上添加兩個控件將command1標(biāo)簽改為“修改”,command2標(biāo)簽改為“退出”。
(3)用2.1中所述的方法引用Excel的類型庫。
(4)添加如下代碼:
Private Sub Command1_Click()
Dim xlapp As Excel.Application
Dim xlbook As Excel.Workbook
Dim xlsheet As Excel.Worksheet
Set xlapp=CreateObject(\"excel.application\")
Set xlbook=_
xlapp.Workbooks.Open(\"D:\列表.xls\")
xlapp.Visible=1
Set xlsheet=xlbook.Worksheets(\"sheet1\")
xlsheet.Cells(1,1)=\"河南煤化\"
xlbook.Close(True)
xlapp.Quit
Set xlapp=Nothing
End sub
Private Sub Command2_Click()
End
End sub
運行程序后單擊“修改”后,打開“列表.xls”文件,會發(fā)現(xiàn)其A1單元格內(nèi)容變成了“河南煤化”。
3 根據(jù)鉆孔參數(shù)生成CAD圖形技術(shù)
將打成的鉆孔數(shù)據(jù)制成Excel表,假如現(xiàn)有穿層鉆孔參數(shù)列表,如表1所示,先要將根據(jù)此參數(shù)生成CAD圖。
3.1 程序設(shè)計預(yù)期
根據(jù)表1中的參數(shù),在CAD圖檔中生成三條鉆孔,其鉆孔間距為1.2m,都于巷道中線垂直,圖中所畫各段長度均為根據(jù)傾角轉(zhuǎn)換的投影長,在補下28號孔的見煤處,和補下30號孔的50m處標(biāo)記噴孔符號“”,分別把孔號標(biāo)記到各個鉆孔上如圖2所示。
3.2 程序設(shè)計思路
要想生成如圖2中的鉆孔首先要建立一個匿名圖塊[3],并此匿名塊命名為“*Z”,用來在其中添加所插入的所有鉆孔和孔號及噴孔標(biāo)記,在添加鉆孔時每個鉆孔有三條線段構(gòu)成分別是紅色的頂板段、綠色的煤段、紅色的底板段,添加時把巷道視為水平的從左到右依次是補下29、補下28、補下30號鉆孔,此時鉆孔與中線夾角為鉆孔和用戶坐標(biāo)系X正半軸的夾角,每條鉆孔需要4個點的坐標(biāo)來定三條線段,每條鉆孔的起點坐標(biāo)為橫坐標(biāo)依次增大一個間距,縱坐標(biāo)不變,可取為0,因此每條鉆孔的起點坐標(biāo)已知,可根據(jù)其與X正半軸夾角求出其他三點坐標(biāo),當(dāng)坐標(biāo)求出之后,那就可以根據(jù)此這些坐標(biāo)點添加每條線段、孔號和噴孔標(biāo)記,補下30號的“50m噴孔”中的50m指的是從鉆孔起點開始向此鉆孔終點方向的50m處。所有圖元添加完畢之后就要用insertblock方法[1]插入此匿名塊的塊參照,然后sendCommand方法[3]調(diào)用CAD2007中的“_rotate”來任意旋轉(zhuǎn)插入后的塊參照[1],再用explode方法[1]分解此塊參照,最后刪除塊參照便留下分解后的所有圖元。
其中用來添加鉆孔頂板段、煤段、底板段投影線段的四點坐標(biāo)用以下公式求的,坐標(biāo)示意圖如圖3。
Xn1=(n-1)·J(1)
Yn1=0(2)
Xn2=Xn1+i·cos(γ)(3)
Yn2=Yn1+i·sin(γ)(4)
Xn3=Xn1+(i+j)·cos(γ)(5)
Yn3=Yn1+(i+j)·sin(γ)(6)
Xn4=Xn1+(i+j+k)·cos(γ)(7)
Yn4=Yn1+(i+j+k)·sin(γ)(8)
式中:J為鉆孔間距;γ為鉆孔與巷道中線的夾角;α為鉆孔與水平面的夾角;n=1,2,3…按照鉆孔生成先后順序依次增大,表示第n條鉆孔;i為頂板段投影,i=頂板段·cos(α);j為煤段投影,j=煤段·cos(α);k為底板段投影,k=底板段·cos(α)。
4 結(jié) 論
(1)CAD經(jīng)過此項開發(fā)后可以根據(jù)鉆孔參數(shù)快速準(zhǔn)確地生成所設(shè)計好樣式的鉆孔平面圖。
(2)可以利用本方法作更多的開發(fā),使CAD的功能得到擴展,更適合制圖人員所從事的專業(yè)的使用。
參考文獻
[1]王 鈺.用VBA開發(fā)Autocad2000應(yīng)用程序[M].北京:人民郵電出版社,1999.
[2]朱桂華.基于VBA技術(shù)實現(xiàn)Excel數(shù)據(jù)生成CAD對象的方[J].中國西部科技,2007(8):88~89.
[3]張 帆.AutocadVBA二次開發(fā)教程[M].北京:清華大學(xué)出版社,2006.
收稿日期:2018-5-24