版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、利用VBA程序語言繪制公路縱斷面圖摘要:VBA作為一個集成的開發(fā)環(huán)境,能夠使AutoCAD數(shù)據(jù)與其它的VBA應(yīng)用程序,如Microsoft Excel軟件,直接共享,實現(xiàn)無縫連接,交換數(shù)據(jù)。本文介紹如何利用VBA編程建立AutoCAD2000與Excel2000的通信,實現(xiàn)數(shù)據(jù)交換,快速繪制公路縱斷面地面線。 關(guān)鍵詞:公路縱斷面設(shè)計 地面線 VBA AutoCAD與Excel的通信 1 前言縱斷面設(shè)計圖是道路縱斷面設(shè)計的主要成果,也是道路設(shè)計的重要技術(shù)文件之一。在縱斷面設(shè)計圖上有兩條主要的線:一條是地面線,它是根據(jù)中線上各樁點的高程而點繪的一條不規(guī)則的折線,反映了沿著中線地面的起伏變化;另一條
2、是設(shè)計線,它是經(jīng)過技術(shù)上、經(jīng)濟上以及美學(xué)上等多方面比較后定出的一條規(guī)則形狀的幾何線。公路設(shè)計中,在沒有專業(yè)設(shè)計軟件輔助的情況下,繪制公路縱斷面圖是很繁瑣的事,需要進行大量的、重復(fù)的操作,既勞神,又容易出錯。特別在公路外業(yè)勘測階段,需要在短時間內(nèi)將所測量的中樁高程轉(zhuǎn)化成縱斷面圖上的地面線,才可以進行路線縱坡設(shè)計,分析測量成果(選線)是否合理。如何快速繪制公路縱斷面地面線呢?答案是:利用Microsoft Excel、AutoCAD都提供的VBA功能,編制程序進行繪制,即把Microsoft Excel表格中的樁號、地面高程等信息讀取出來,在AutoCAD文件里以文字、線條的方式寫出來,就可繪出中
3、樁地面線。2 VBA簡介Visual Basic for Application(VBA)是Microsoft面向最終用戶的應(yīng)用軟件編程語言。它最早出現(xiàn)于Microsoft的Excel和Project中,如今VBA已成為VB和所有Office產(chǎn)品的組件。常用的繪圖軟件AutoCAD也已支持VBA作為二次開發(fā)工具。VBA最大特點和最大優(yōu)點是利用面向?qū)ο螅∣OP)的ActiveX Automation技術(shù),使語言的引擎在技術(shù)上與開發(fā)環(huán)境分離。它的功能在很大程度上依賴于它的客戶顯露的Automation接口。同時,由于VBA是基于ActiveX Automation技術(shù),它可以使用任何Automat
4、ion技術(shù)的應(yīng)用程序共同工作?;贏utoCAD的VBA應(yīng)用程序就是高級程序語言的計算功能與AutoCAD的繪圖功能結(jié)合,使用VBA程序語句來控制對AutoCAD圖形的操作。VBA作為一個集成的開發(fā)環(huán)境,它提供了高質(zhì)量的用戶化編程能力,能夠使AutoCAD數(shù)據(jù)與其它的VBA應(yīng)用程序,如Microsoft Excel軟件,直接共享,實現(xiàn)無縫連接,交換數(shù)據(jù)非常方便。3 工作機理分析在Microsoft Excel中,與表對應(yīng)的對象是工作表(Sheet或Worksheet),與每一個表格方格對應(yīng)的對象是單元格區(qū)域(range),它可以僅包括一個單元格(cell),也可以由多個單元格合并而成。工作表對
5、象中的cells屬性,在單元格的選擇方面可以達到與range相同的效果,它是以行(row)和列(gol)作為參數(shù)的,對于行和列的選擇可以采用變量的形式。在本例中,可設(shè)定工作表(Worksheet)的每一行第一列(cells(i,1)為中樁樁號,每一行第二列(cells(i,2)為對應(yīng)的地面高程。在AutoCAD中,沒有與表對應(yīng)的對象,但可以根據(jù)表中前后樁號定義水平距離,根據(jù)地面高程定義垂直距離,將表中數(shù)據(jù)理解為線條與文字對象的集合。這樣,通過讀取Microsoft Excel文件中的最小對象單元格區(qū)域(cells(i,j)的主要信息,利用VBA建立AutoCAD與Excel的通信,然后在Aut
6、oCAD文件里指定的圖層、位置畫線條,書寫文字。通過循環(huán),遍歷所有單元格區(qū)域(cells(i,j),邊讀邊寫,最終完成縱斷面地面線的繪制及樁號、地面高程的書寫。4 具體實現(xiàn)方法4.1 在AutoCAD中創(chuàng)建Excel應(yīng)用程序要編寫存取Excel的應(yīng)用程序,必須通過VBA將Excel中的對象能夠讓用戶使用,這就需要參考Excel對象的數(shù)據(jù)庫。其步驟如下: 打開AutoCAD的VBA編輯器(命令:VBAIDE); 選擇“工具”/“引用”項,在彈出的“引用”對話框的“可使用的引用”列表框內(nèi),選擇“Microsoft Excel 8.0 Object Library”項; 單擊“確定”按鈕; 接下來使
7、用下列代碼可創(chuàng)建完整的應(yīng)用程序?qū)ο髮嵗篋im Excel As Excel.Application激活要與之通信的Excel應(yīng)用程序On Error Resume Next Set Excel = GetObject(, Excel.Application) If Err 0 Then Set Excel = CreateObject(Excel.Application) End If4.2 讀入坐標(biāo)點畫地面線Dim i As Integer Dim lineobj As AcadLine Dim sPnt(0 To 2) As Double Dim ePnt(0 To 2) As Doub
8、le讀入坐標(biāo)畫地面線Worksheets(sheet1).Activate i = 3 由第三行起 Do Until cells(i, 1).Value = If cells(i + 1, 1) = 0 Then Exit Do End If sPnt(0) = cells(i, 1).Value sPnt(1) = 10 * cells(i, 2).Value sPnt(2) = 0 ePnt(0) = cells(i + 1, 1).Value ePnt(1) = 10 * cells(i + 1, 2).Value ePnt(2) = 0 i = i + 1 Loop4.3 樁號及高程的
9、寫入4.4 輔助網(wǎng)格線的繪制5 實例5.1 運行AutoCAD2000程序;5.2 打開AutoCAD的VBA編輯器(命令:VBAIDE);5.3 創(chuàng)建成下面的過程及代碼,并運行之:Sub ZDM() Dim Excel As Excel.Application Dim ExcelSheet As Object Dim ExcelWorkbook As Object Dim i As Integer Dim lineobj As AcadLine Dim klineobj As AcadLine Dim sPnt(0 To 2) As Double Dim ePnt(0 To 2) As Do
10、uble Dim kPnt(0 To 2) As Double Dim hPnt(0 To 2) As Double Dim ksPnt(0 To 2) As Double Dim kePnt(0 To 2) As Double Dim dmPnt(0 To 2) As Double Dim textObj As AcadText Dim txtStr As String Dim insPnt As Variant Dim txtHeight As Double Dim layObj As AcadLayer Dim newLayer As AcadLayer Dim atTxtobj As
11、AcadTextStyle Set atTxtobj = ThisDrawing.ActiveTextStyle atTxtobj.fontFile = c:/windows/fonts/simfang.ttf 創(chuàng)建Excel應(yīng)用程序 On Error Resume Next Set Excel = GetObject(, Excel.Application) If Err 0 Then Set Excel = CreateObject(Excel.Application) End If 打開Excel表 ExcelName = InputBox(路徑:) 表格不可見 Excel.Visibl
12、e = False 讀入坐標(biāo)點畫地面線 Worksheets(sheet1).Activate i = 3 Do Until cells(i, 1).Value = If cells(i + 1, 1) = 0 Then Exit Do End If sPnt(0) = cells(i, 1).Value sPnt(1) = 10 * cells(i, 2).Value sPnt(2) = 0 ePnt(0) = cells(i + 1, 1).Value ePnt(1) = 10 * cells(i + 1, 2).Value ePnt(2) = 0 Set newLayer = ThisD
13、rawing.Layers(地面線) ThisDrawing.ActiveLayer = newLayer newLayer.Color = acWhite If cells(i, 2) = Then lineobj.Delete i = i + 1 Loop 畫輔助網(wǎng)格線及插入數(shù)據(jù) i = 3 Do Until cells(i, 1).Value = 畫輔助網(wǎng)格線 ksPnt(0) = cells(i, 1).Value: ksPnt(1) = 0: ksPnt(2) = 0 kePnt(0) = cells(i, 1).Value: kePnt(1) = 10 * cells(i, 2).
14、Value: kePnt(2) = 0 dmPnt(0) = cells(i, 1).Value: dmPnt(1) = 48: dmPnt(2) = 0 Set newLayer = ThisDrawing.Layers(網(wǎng)格線) ThisDrawing.ActiveLayer = newLayer newLayer.Color = acGreen 插入樁號 Set newLayer = ThisDrawing.Layers(標(biāo)注) ThisDrawing.ActiveLayer = newLayer newLayer.Color = acCyan a = cells(i, 1).Value
15、 b = Int(a / 1000) c = Format(a - b * 1000), 000.000) d = a - Int(a) E = + + Format(c, 000.000) If c = 0 Then E = K + LTrim(Str(b) txtStr = E txtHeight = 4 textObj.Rotation = 3.14159 / 2 insPnt = ksPnt If cells(i, 2) = Then textObj.Delete 插入地面高程 txtStr = Format(cells(i, 2).Value, #0.#0) txtHeight = 4 textObj.Rotation = 3.14159 / 2 insPnt = dmPnt i = i + 1 Loop ZoomAll 該語句用來等待查看顯示結(jié)果 MsgBox 按確定鍵將關(guān)閉Excel的運行! 保存?zhèn)鬟^來的數(shù)據(jù) ExcelWorkbook.Close ExcelWorkbook.Save 關(guān)閉Excel應(yīng)用程序 刪除Excel應(yīng)用程序?qū)嵗?Set Excel = NothingEnd Sub5.4 運行上述代碼后,將會彈出窗口,提示輸入Excel文件的路徑;輸入后回車,就可以生成縱斷面地面線,可以進行路線縱坡
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45137-2024畜禽基因組編輯育種技術(shù)規(guī)程
- 2025年度緊急避難場所標(biāo)示牌設(shè)計與施工合同3篇
- 2024物業(yè)服務(wù)合同補充:社區(qū)物業(yè)智能化改造協(xié)議3篇
- 2024水廠給排水設(shè)備采購與維護服務(wù)合同
- 腦梗死健康宣教
- 2024年水利樞紐建設(shè)勞務(wù)承包合同
- 專業(yè)個人道路運輸協(xié)議樣式2024
- 2024年財產(chǎn)質(zhì)押擔(dān)保合同模板6篇
- 福建省南平市萬安中學(xué)2022年高一生物下學(xué)期期末試題含解析
- 色彩之旅模板
- 制作課件wps教學(xué)課件
- MCN機構(gòu)簽約合同范本
- 解讀智能問答系統(tǒng)研究
- 2024年露天煤礦地質(zhì)勘查服務(wù)協(xié)議版
- 部編版四年級上冊道德與法治期末測試卷
- DB11T 1805-2020 實驗動物 病理學(xué)診斷規(guī)范
- 人教版小學(xué)六年級下冊音樂教案全冊
- 2024年資格考試-WSET二級認證考試近5年真題附答案
- 個體工商營業(yè)執(zhí)照變更委托書
- 2024版【人教精通版】小學(xué)英語六年級下冊全冊教案
- 人教版歷史2024年第二學(xué)期期末考試七年級歷史試卷(含答案)
評論
0/150
提交評論