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