摘要:該文探討如何利用VBA程序?qū)崿F(xiàn)AutoCAD 2010從EXCEL 2007中讀取坐標(biāo)數(shù)據(jù),然后將與坐標(biāo)值對(duì)應(yīng)的元件顯示到計(jì)算機(jī)顯示器上。
關(guān)鍵詞:VBA AutoCAD EXCEL 電路板
中圖分類號(hào):TP317 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-098X(2013)01(b)-00-01
隨著電子元器件的小型化,電子產(chǎn)品的集成度越來(lái)越高,一塊電路板上的電子元件數(shù)量也越來(lái)越多。在這些數(shù)量巨大的元件中立刻找到我們想要找到的元件就變得越來(lái)越困難。
1 利用坐標(biāo)文件尋找元件安裝位置
電路板設(shè)計(jì)過(guò)程中產(chǎn)生的坐標(biāo)文件中記錄著所有元件在電路板上安裝位置的坐標(biāo)值。根據(jù)坐標(biāo)值,我們可以使用尺子測(cè)量電路板,從而找到該元件。但這種方法在實(shí)際使用中缺乏實(shí)用性,因?yàn)樽鴺?biāo)原點(diǎn)不易尋找,并且測(cè)量時(shí)會(huì)產(chǎn)生較大誤差。
為了更好地使用坐標(biāo)文件,我認(rèn)為可以從電路板板圖入手。從GERBER文件中導(dǎo)出的電路板板圖與實(shí)際的電路板使用相同的坐標(biāo),使用坐標(biāo)文件中的坐標(biāo)我們可以在實(shí)際的電路板上找到元件,也可以在電路板板圖上找到該元件的安裝位置。
從GERBER文件中導(dǎo)出的電路板圖紙可以使用AutoCAD進(jìn)行操作。利用VBA程序?qū)utoCAD進(jìn)行二次開(kāi)發(fā),將需要查找元件的坐標(biāo)從EXCEL文件中導(dǎo)入到AutoCAD中,利用坐標(biāo)值尋找到元件的準(zhǔn)確位置,把它顯示到計(jì)算機(jī)屏幕上。這樣做的優(yōu)點(diǎn)如下:(1)使用AutoCAD軟件可以很容易變換坐標(biāo)系,方便更改坐標(biāo)原點(diǎn)[2]、不需要測(cè)量實(shí)際的電路板,避免了手工測(cè)量導(dǎo)致的誤差,元件安裝位置尋找更準(zhǔn)確。
2 使用VBA完成AutoCAD與EXCEL之間的訪問(wèn)
在AutoCAD中通過(guò)VBA使用EXCEL中的數(shù)據(jù),需要使用到VBA在不同軟件間的訪問(wèn)功能。在不同軟件間進(jìn)行訪問(wèn),一般可以通過(guò)三種方式:自動(dòng)方式、動(dòng)態(tài)數(shù)據(jù)交換(DDE)和SendKeys方式。AutoCAD 2010與EXCEL 2007都支持“自動(dòng)方式”。下面就以這兩個(gè)軟件為例,重點(diǎn)介紹如何使用“自動(dòng)方式”實(shí)現(xiàn)不同軟件間的數(shù)據(jù)傳遞。
使用“自動(dòng)方式”實(shí)現(xiàn)不同軟件間的數(shù)據(jù)傳遞分為2種方式:前期綁定和后期綁定。前期綁定與后期綁定相比有以下優(yōu)點(diǎn)。(1)一旦向軟件的對(duì)象庫(kù)添加了相應(yīng)的引用,就能通過(guò)Visual Basic編輯器訪問(wèn)該軟件的對(duì)象、屬性和方法。這樣做更容易找到所需的對(duì)象、屬性和方法,而且可以避免一些錯(cuò)誤,如打字錯(cuò)誤和丟失參數(shù)等。(2)由于在聲明變量時(shí)就已經(jīng)指定了對(duì)象類型,所以就降低了獲取不當(dāng)對(duì)象的幾率。(3)因?yàn)樵谑褂们捌诮壎〞r(shí)VBA所獲取的關(guān)于對(duì)象的信息更加全面,所以引用對(duì)象的方法和屬性將會(huì)更快捷。基于以上原因,我選擇使用前期綁定方式完成不同軟件之間的數(shù)據(jù)傳遞。
打開(kāi)AutoCAD 2010,選擇“管理” “Visual Basic編輯器”。打開(kāi)“Visual Basic編輯器”后選擇“工具”“引用”,在彈出的對(duì)話框中選擇“MicroSoft Excel 11.0 Object Library”,最后單擊“確定”。完成以上的添加“引用”的過(guò)程后,我們就可以在VBA程序中定義EXCEL對(duì)象,從而達(dá)到訪問(wèn)EXCEL內(nèi)數(shù)據(jù)的目的。
Public elapp As Excel.Application ‘EXCEL對(duì)象
Public elbook As Excel.Workbook ‘EXCEL工作簿對(duì)象
Public elsheet As Excel.Worksheet ‘EXCEL工作表對(duì)象
Public strdir As String ‘EXCEL文件存儲(chǔ)地址
strdir = ThisDrawing.Path “\\板圖制作工具R1.1.xls”
Set elapp = CreateObject(\"Excel.Application\")‘創(chuàng)建1個(gè)EXCEL對(duì)象實(shí)體
Set elbook = elapp.Workbooks.Open(strdir)‘打開(kāi)1個(gè)EXCEL工作簿
Set elsheet = elbook.Worksheets(2) ‘打開(kāi)EXCEL工作簿中的工作表2
elsheet.Activate‘激活工作表2
通過(guò)上面的代碼,我們就可以利用VBA程序在AutoCAD中訪問(wèn)EXCEL中的數(shù)據(jù)了。
3 將尋找到的元件安裝位置顯示到顯示器上
將EXCEL中的坐標(biāo)值導(dǎo)入到AutoCAD中后,需要使用ZoomCenter(Center,Magnify)語(yǔ)句將需要尋找的元件顯示到屏幕的中央。ZoomCenter語(yǔ)句的作用是通過(guò)指定縮放中心點(diǎn)和縮放比例縮放當(dāng)前視圖。參數(shù)Center用于指定縮放中心的坐標(biāo)值,參數(shù)Magnify用于指定參數(shù)的放大倍數(shù)。下面就是顯示元件的程序代碼。
x_coordicate_str = elsheet.Cells(component_indicator,7).Value
‘從EXCEL單元格中獲得元件的X
坐標(biāo)
y_coordicate_str = elsheet.Cells(component_indicator,8).Value
‘從EXCEL單元格中獲得元件的Y
坐標(biāo)
coordicate(0)= Val(x_coordicate_str)* all_unit_rate + offset_x
‘X坐標(biāo)的單位變換并進(jìn)行坐標(biāo)變換
coordicate(1)= Val(y_coordicate_str)* all_unit_rate + offset_y
‘Y坐標(biāo)的單位變換并進(jìn)行坐標(biāo)變換
coordicate(2)= 0
‘Z坐標(biāo)為0
zoom_zoom = Val(TextBox1.Text)‘獲得縮放倍數(shù)
ZoomCenter coordicate,zoom_zoom
‘以coordicate為中心,以zoom_zoom為倍數(shù)進(jìn)行縮放
將坐標(biāo)值從EXCEL中取出后,應(yīng)使用Quit語(yǔ)句將EXCEL文件關(guān)閉,否則會(huì)在再次打開(kāi)EXCEL文件從其中讀取數(shù)據(jù)時(shí)產(chǎn)生錯(cuò)誤。關(guān)閉EXCEL文件的程序代碼如下。
Private Sub UserForm_Terminate()‘關(guān)閉窗體時(shí)觸發(fā)該事件
elapp.Quit‘將EXCEL文件關(guān)閉
End Sub
4 結(jié)語(yǔ)
通過(guò)以上程序,就可以在AutoCAD中導(dǎo)入EXCEL文件中的坐標(biāo)數(shù)據(jù),然后將與這個(gè)坐標(biāo)對(duì)應(yīng)的元件按照輸入的縮放倍數(shù),顯示到顯示器的中央位置。
這樣就可以通過(guò)坐標(biāo)快速準(zhǔn)確的找到我們需要尋找的元件,從而大幅度提高工作效率。
參考文獻(xiàn)
[1]羅剛君,章蘭新,黃朝陽(yáng).Excel 2010 VBA編程與實(shí)踐[M].北京:電子工業(yè)出版社,2010.
[2]張帆,鄭立楷,王華杰.VBA開(kāi)發(fā)精彩實(shí)例教程[M].北京:清華大學(xué)出版社,2004.
[3]羅剛君.Excel VBA程序開(kāi)發(fā)自學(xué)寶典[M].北京:電子工業(yè)出版社,2009.