向垂規(guī)+王俊
摘要: 在南方CASS成圖軟件中,根據(jù)實測斷面點的坐標、高程數(shù)據(jù)整理斷面數(shù)據(jù)時,效率低下且容易漏點,為快速地獲取斷面數(shù)據(jù),本文基于VBA在AutoCAD平臺上加載斷面數(shù)據(jù)處理程序,能快速生成斷面數(shù)據(jù)文件,并保存在Excel中。
Abstract: In Southern CASS mapping software, when the data of the cross-section are sorted according to the measured point coordinates and elevation data, it is inefficient and easy to miss points. In order to get the cross-section data quickly, this article loads data processing program in AutoCAD platform based on VBA, and can quickly generate cross-section data files, and save in Excel.
關鍵詞: 斷面數(shù)據(jù)處理;VBA;CASS成圖軟件;斷面圖繪制
Key words: cross section data processing;VBA;CASS mapping software;section drawing
中圖分類號:TP274 文獻標識碼:A 文章編號:1006-4311(2018)01-0197-03
0 引言
水利工程建設中,進行樞紐區(qū)大壩、隧洞、溢洪道等水工建筑物設計、輸水渠道開挖、庫區(qū)清淤時,為滿足工程設計或施工需要,測繪人員要都要進行縱、橫斷面的測量。斷面的測量成果是得到所測區(qū)域的縱、橫斷面圖,斷面圖一般包括里程及高程兩要素,繪圖時以里程值為橫坐標,高程值為縱坐標按比例繪制,工程技術人員可根據(jù)斷面圖進行工程設計、方量計算及造價估算。
現(xiàn)階段,通常利用全站儀或RTK技術獲取斷面點的坐標、高程數(shù)據(jù),在南方CASS等成圖軟件中完成斷面圖的繪制。在南方CASS成圖軟件中,提供了四種斷面圖的繪制方法。一是根據(jù)已知坐標生成斷面圖,二是根據(jù)等高線生成斷面圖,三是根據(jù)三角網(wǎng)生成斷面圖,四是根據(jù)里程文件生成斷面圖[1]。這四種方法除根據(jù)里程文件外,其它的三種方法都是由圖面按里程內(nèi)插高程點,而在水利工程斷面測量時,一般都要實測斷面點的三維數(shù)據(jù),且斷面成果整理及資料提交是基于實測斷面數(shù)據(jù)[2],即先整理斷面里程文件再繪制斷面圖。在南方CASS成圖軟件中根據(jù)實測斷面點的坐標、高程數(shù)據(jù)整理斷面數(shù)據(jù)效率低下且容易漏點,不好加點。為快速地獲取斷面數(shù)據(jù),本文基于VBA[3,4]在AutoCAD平臺上加載斷面數(shù)據(jù)處理程序,能快速生成斷面數(shù)據(jù)文件,并保存在Excel中。
1 程序編寫
1.1 程序編寫思路
利用RTK或全站儀進行斷面測量時,可得到斷面線特征點的點位坐標和高程數(shù)據(jù)。整理斷面數(shù)據(jù)時,由設定的斷面線、斷面方向及零起點,在南方CASS成圖軟件中可根據(jù)所展高程點進行斷面數(shù)據(jù)處理和檢查,可以直觀地生成繪制斷面圖所需的里程、高程文件。對測量數(shù)據(jù)在南方CASS成圖軟件中展點后,測量點位可能在設計線的兩邊或設計線上,獲取斷面數(shù)據(jù)時,程序能判別測量點位離設計斷面線的偏離距是否滿足允許限差要求,如超出限差要求,該斷面點的高程值在Excel中顯示為紅色,如不超出限差要求,則該斷面點的高程值在Excel中顯示為黑色。如圖1所示,a,b為實測高程點,a′,b′為a,b在設計斷面線上的垂足點位,設計斷面線為直線A,實測點連成的線為折線B,a點的偏離距為S,按照內(nèi)插原理,偏離距S在允許限差范圍內(nèi),可以用垂足點a′代替實測點a,其高程不變,即進行斷面整理時,a,b兩斷面點的間距取La′b′,高程取實測點位高程Ha,Hb。
1.2 程序編寫步驟
①在AUTOCAD中打開VBA管理器,創(chuàng)建一個新的工程。進入VBA開發(fā)環(huán)境,在“工程資源管理器”中創(chuàng)建對Excel對象庫的引用,調(diào)用Excel中的對象,源代碼如下:
Public excel_App As Excel.Application
Public excel_Book As Excel.Workbook
Public excel_sheet As Excel.Worksheet
Public Sub linkexcel() '引用EXCEL
On Error Resume Next
Set excel_App = GetObject(, "excel.application")
If Err Then
Err.Clear
Set excel_App = CreateObject("excel.application")
If Err Then
Err.Clear
MsgBox "檢查EXCEL"
Exit Sub
End If
End If
Set excel_Book = excel_App.Workbooks.Add
Set excel_sheet = excel_Book.Worksheets("sheet1")
excel_App.WindowState = xlMinimized
End Sub
②聲明變量。在編輯器中定義各種本地變量Dim,定義斷面數(shù)據(jù)在Excel中輸出時各列的值,定義不同成圖比例尺下的斷面點相對斷面線的允許偏離值,源代碼如下:endprint
Public Sub hdm()
Dim qd As Variant '定義起始點坐標變量
Dim zd As Variant '定義終點坐標變量
Dim pp As Variant '定義獲取點坐標變量
Dim h As Variant '定義獲取點高程變量
Dim s As Single '定義累距變量
Dim l As Single '定義偏離距變量
Dim str As String '定義輸入高程變量
Dim str1 As Variant '定義輸入累距和高程變量
Dim str3 As String '定義成圖比例尺變量
Dim maxplj As String '定義允許最大偏離距變量
Dim i, j As Integer '定義excel單元格的行列號變量
Dim Lay As AcadLayer '定義圖層變量
i = 2: j = 2
Call linkexcel
excel_App.DisplayAlerts = True
excel_sheet.Cells(1, 1) = "樁號"
excel_sheet.Cells(1, 2) = "累距"
excel_sheet.Cells(1, 3) = "高程"
On Error Resume Next
Set Lay = ThisDrawing.Layers.Add("斷面標記") '新建標記圖層
Lay.LayerOn = True
Lay.color = 2
ThisDrawing.ActiveLayer = Lay
str3 = ThisDrawing.Utility.GetString(False, "斷面成圖比例尺為為1:") '輸入成圖比例尺
If str3 >= 200 And str3 <= 1000 Then '計算允許偏離距
maxplj = (5 * str3) / 1000
ElseIf str3 >= 2000 And str3 <= 5000 Then
maxplj = (3 * str3) / 1000
End If
③編寫循環(huán)語句提取CASS展點圖中的坐標、高程值,在Excel中生成斷面數(shù)據(jù)。主要運行步驟為:1)選擇斷面起點、終點,定義斷面方向。2)輸入偏距值,在選點時如偏距值大于設定值,則在表中顯示為紅色,提示超限。3)選取斷面高程點或加點時輸入高程點,輸入斷面樁號。在Excel中生成斷面數(shù)據(jù),并循環(huán)進行下一點的操作。4)該條斷面完成后,輸入“N”進行下一條斷面數(shù)據(jù)的采集或輸入“E”結(jié)束斷面數(shù)據(jù)的采集,結(jié)束斷面數(shù)據(jù)采集時,提示“及時保存數(shù)據(jù)”。其源代碼省略。
1.3 程序的操作
①程序加載。先將程序文件acad.dvb導入CAD中的support文件夾中,再在CASS中找到system文件夾,打開acad.rx,加寫“acvba”,這時打開南方CASS成圖軟件即可加載。
②獲取斷面數(shù)據(jù)。先打開南方CASS7.0成圖軟件,完成斷面測量數(shù)據(jù)的展點及設計斷面線的繪制。再在菜單欄激活“獲取斷面數(shù)據(jù)”菜單,然后根據(jù)狀態(tài)欄的提示,用鼠標點擊處理斷面線的斷面起點位置及終點方向。用鼠標選擇斷面線上的高程點位(點擊后的高程點位用圓圈加以標記),獲得該點在設計斷面線上的斷面里程及高程數(shù)據(jù),并保存在Excel里,如圖2。
在斷面數(shù)據(jù)獲取過程中,可增加斷面上未測地形特征點(如增加量取的坎腳點),在第一條斷面處理完成后,可選擇接著處理第二條斷面(輸入命令“N”)或選擇退出程序(輸入命令“E”)。在斷面數(shù)據(jù)處理完成后,輸入命令“E”結(jié)束時,CASS對話框提示“斷面數(shù)據(jù)已形成,請及時保存”。如圖3。
2 結(jié)束語
利用VBA編寫的斷面數(shù)據(jù)處理程序,該程序可以加載在CASS及AutoCAD菜單命令下,利用該程序進行縱斷面和橫斷面數(shù)據(jù)處理,能快速獲取繪制斷面圖所需的里程、高程數(shù)據(jù)文件,結(jié)合CASS展點圖及現(xiàn)場草圖能方便的進行斷面數(shù)據(jù)的檢查。處理斷面數(shù)據(jù)時,可進行人機交互式數(shù)據(jù)輸入,具有速度快、效率高且不易出錯等特點,生成的斷面數(shù)據(jù)形成Excel文檔及文本文檔,便于測量人員、設計人員使用及歸檔保存。
參考文獻:
[1]CASS7.0標準教程[R].廣州:南方測繪儀器有限公司,2007.
[2]SL52-2015.水利水電工程施工測量規(guī)范[S].北京:中國水利水電出版社,2015.
[3]羅朝盛.Visual Basic 6.0程序設計教程[M]. 北京:人民郵電出版社,2002.
[4]張強,劉飚,等.Excel2007與VBA編程從入門到精通 [M]. 北京:電子工業(yè)出版社,2008.endprint