【摘 要】本文討論了VBA編程技術(shù)在高速公路設(shè)計中應(yīng)用。以繪制公路縱斷面圖為例,將VBA融合在Auto CAD和Excel兩個軟件中,實現(xiàn)這兩個軟件之間的數(shù)據(jù)交互,可以有效降低工作量,減少錯誤。
【關(guān)鍵詞】高速公路設(shè)計 VBA語言 Auto CAD與Excel通信
一、引言
在高速公路設(shè)計過程中,公路縱斷面圖的繪制是一件繁瑣的任務(wù),由于其中大量的工作都是重復性的,若沒有專業(yè)的工具進行輔助,則工作量是不可想象的。尤其是公路外業(yè)勘測時期,中樁高程的數(shù)據(jù)是實地量取的,在測完并記錄下實測數(shù)據(jù)后,需要較快地將這些數(shù)據(jù)繪制為縱斷面圖的地面線。之后基于繪制出來的地面線才能設(shè)計路線縱坡。而通常情況下在公路設(shè)計中先做好工程量的清單,這是在Excel軟件中完成的,之后將這些清單從Excel中導出至CAD中,在這個導出導入的過程中就會存在格式轉(zhuǎn)換的問題,因為Excel格式的文件在CAD中是不能直接打開的。此外,如果直接用CAD繪制工程圖是比較繁瑣的。為了解決這些問題,可以使用VBA設(shè)計相應(yīng)的幫助程序來減少重復性勞動,提高工作效率。
Visual Basic For Application(VBA)是Visual Basic的一個分支,但是與VB不同的是,VBA必須依附于主應(yīng)用程序,或者說VBA并沒有屬于自身的獨立的工作環(huán)境。這意味著VBA與主程序共用同一段內(nèi)存空間,兩者之間的通信簡潔而又高效。而對于支持VBA編程能力的其他軟件之間也可以借助于VBA進行交互,由于Auto CAD和Excel兩個軟件均支持VBA,因此Auto CAD可以借助于VBA來實現(xiàn)對Excel的控制。此外VBA易學易用,可以創(chuàng)建對話框、工具欄,還可以編制模塊宏指令和建立類模塊,對于外部數(shù)據(jù)庫也可以借助于數(shù)據(jù)訪問對象DAO進行訪問和管理;由于VBA是基于Windows平臺的,可以使用Windows API函數(shù)來進行編程,實現(xiàn)更強大的功能。本文以VBA在繪制公路縱斷面中的應(yīng)用為例,介紹VBA在高速公路設(shè)計過程中的使用方法。
二、VBA語言在繪制公路縱斷面的應(yīng)用
縱斷面設(shè)計圖是高速公路設(shè)計文件中比較重要的一項,是道路縱斷面設(shè)計成果的集中體現(xiàn)。一般來講,地面線和設(shè)計線是縱斷面圖紙中的兩條主要線。地面線的作用是表示中線上各樁點的高程沿中線地面的起伏變化而變化的,所以這條線是起伏不定的折線,同時也是一條依據(jù)多個離散點繪制的點線;設(shè)計線與地面線的形狀有所不同,設(shè)計線比較規(guī)則,這是由于它是綜合考慮技術(shù)、經(jīng)濟和藝術(shù)美感等多種因素而人為制定的幾何線。正如引言中提到的,如果沒有專業(yè)軟件的輔助,手工繪制縱斷面設(shè)計圖的難度很大,這是由于不僅工作量比較大,而且細節(jié)眾多,極易出錯;同樣地如果只借助于CAD軟件和Excel,兩個軟件之間的數(shù)據(jù)交換比較麻煩,因為兩者間的數(shù)據(jù)格式不兼容,容易造成數(shù)據(jù)丟失。為了解決兩個軟件之間的數(shù)據(jù)交換問題,可以將VBA融入到這兩個軟件中。
實現(xiàn)過程可以總的概括如下:首先在Excel和Auto CAD中分別利用VBA語言進行程序的編制,通過Excel中的VBA程序功能將Excel表格中的相關(guān)信息提取出來,這些信息主要包括樁號和相應(yīng)的地面高程,然后利用Auto CAD軟件中已經(jīng)編寫好的VBA程序?qū)腅xcel提取出來的信息讀入進來,然后根據(jù)樁號和地面高程等信息進行中樁地面線的繪制。
假如對于一個Microsoft Excel表來說,其中存儲著縱面設(shè)計所需要的中樁樁號和地面高程的數(shù)據(jù)信息,其中樁號在第一列,而對應(yīng)的地面高程在同一行的第二列。對于Auto CAD軟件來說,其不包含與表格對應(yīng)的對象,這就需要將Excel表格中的數(shù)據(jù)進行一下轉(zhuǎn)換,可以將水平距離根據(jù)Excel中的樁號來確定,而地面高程用來確定豎直方向上的高度。通過這種方法,再利用VBA進行數(shù)據(jù)通信時可以邊讀取Excel的一行數(shù)據(jù),邊在Auto CAD中繪制出相應(yīng)的線條,最終完成兩個軟件之間的數(shù)據(jù)交換。具體的步驟如下:首先在CAD中創(chuàng)建VBA代碼,點擊菜單欄的“工具\\引用”選項,在彈出的列表框中選擇“Microsoft Excel 10.0 Object Library”,然后編寫代碼即可,代碼如下:
Dim Excel As Excel.Application
On Error Resume Next
Set Excel=GetObject(,”Excel.Application”)
If Err<>0 Then
Set Excel=CreateObject(“Excel.Application”)
End If
通過以上代碼就可以在Auto CAD中創(chuàng)建Excel對象。在Excel中填入相關(guān)的中樁樁號和地面高程信息,然后利用VBA語言進行編程讀入Excel對象中的信息。這里需要注意的是,Excel中的信息有可能包含比例信息,讀入CAD中時需要進行比例的轉(zhuǎn)換。這里假設(shè)地面高程的比例系數(shù)為10,在CAD中標識樁號的地面點坐標,可以通過以下方法實現(xiàn):以(0,0,0)為原點,x軸用來表示樁號里程信息,y軸表示地面高程信息,這里的數(shù)值將等于Excel表格里面的地面高程乘以10,z軸坐標對應(yīng)某一樁號的地面點坐標。將讀取的所有信息在CAD中以點的形式標示出來后,將各點的地面點坐標用線段相連,得到的折線就是地面線。為了更加直觀地表示出樁號和地面高程的一一對應(yīng)關(guān)系,可以在CAD中繪制輔助網(wǎng)格線,同時網(wǎng)格線對于縱坡的設(shè)計有幫助。
三、總結(jié)
在高速公路的設(shè)計中,將VBA應(yīng)用到CAD和Excel的數(shù)據(jù)交換中可以避免大量的重復性勞動,降低工作量和出錯幾率,實現(xiàn)設(shè)計的快速行和準確性的完美結(jié)合。
參考文獻:
[1]王華杰. AutoCAD VBA開發(fā)精彩實例教程. 清華大學出版,2003.
[2]葉濤,郭暉.用PB和VBA實現(xiàn)AutoCAD的圖庫管理. 慶工學院學報(自然科學版),2003.
[3]王斌,連永. AutoCAD二次開發(fā)技術(shù)VBA在CAD系統(tǒng)中的應(yīng)用. . 中國制造業(yè)信息化,2005年,第12期.