基于VBA处理AutoCAD中断面数据的方法
2018-01-15向垂规王俊
向垂规+王俊
摘要: 在南方CASS成图软件中,根据实测断面点的坐标、高程数据整理断面数据时,效率低下且容易漏点,为快速地获取断面数据,本文基于VBA在AutoCAD平台上加载断面数据处理程序,能快速生成断面数据文件,并保存在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.
关键词: 断面数据处理;VBA;CASS成图软件;断面图绘制
Key words: cross section data processing;VBA;CASS mapping software;section drawing
中图分类号:TP274 文献标识码:A 文章编号:1006-4311(2018)01-0197-03
0 引言
水利工程建设中,进行枢纽区大坝、隧洞、溢洪道等水工建筑物设计、输水渠道开挖、库区清淤时,为满足工程设计或施工需要,测绘人员要都要进行纵、横断面的测量。断面的测量成果是得到所测区域的纵、横断面图,断面图一般包括里程及高程两要素,绘图时以里程值为横坐标,高程值为纵坐标按比例绘制,工程技术人员可根據断面图进行工程设计、方量计算及造价估算。
现阶段,通常利用全站仪或RTK技术获取断面点的坐标、高程数据,在南方CASS等成图软件中完成断面图的绘制。在南方CASS成图软件中,提供了四种断面图的绘制方法。一是根据已知坐标生成断面图,二是根据等高线生成断面图,三是根据三角网生成断面图,四是根据里程文件生成断面图[1]。这四种方法除根据里程文件外,其它的三种方法都是由图面按里程内插高程点,而在水利工程断面测量时,一般都要实测断面点的三维数据,且断面成果整理及资料提交是基于实测断面数据[2],即先整理断面里程文件再绘制断面图。在南方CASS成图软件中根据实测断面点的坐标、高程数据整理断面数据效率低下且容易漏点,不好加点。为快速地获取断面数据,本文基于VBA[3,4]在AutoCAD平台上加载断面数据处理程序,能快速生成断面数据文件,并保存在Excel中。
1 程序编写
1.1 程序编写思路
利用RTK或全站仪进行断面测量时,可得到断面线特征点的点位坐标和高程数据。整理断面数据时,由设定的断面线、断面方向及零起点,在南方CASS成图软件中可根据所展高程点进行断面数据处理和检查,可以直观地生成绘制断面图所需的里程、高程文件。对测量数据在南方CASS成图软件中展点后,测量点位可能在设计线的两边或设计线上,获取断面数据时,程序能判别测量点位离设计断面线的偏离距是否满足允许限差要求,如超出限差要求,该断面点的高程值在Excel中显示为红色,如不超出限差要求,则该断面点的高程值在Excel中显示为黑色。如图1所示,a,b为实测高程点,a′,b′为a,b在设计断面线上的垂足点位,设计断面线为直线A,实测点连成的线为折线B,a点的偏离距为S,按照内插原理,偏离距S在允许限差范围内,可以用垂足点a′代替实测点a,其高程不变,即进行断面整理时,a,b两断面点的间距取La′b′,高程取实测点位高程Ha,Hb。
1.2 程序编写步骤
①在AUTOCAD中打开VBA管理器,创建一个新的工程。进入VBA开发环境,在“工程资源管理器”中创建对Excel对象库的引用,调用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,定义断面数据在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
③编写循环语句提取CASS展点图中的坐标、高程值,在Excel中生成断面数据。主要运行步骤为:1)选择断面起点、终点,定义断面方向。2)输入偏距值,在选点时如偏距值大于设定值,则在表中显示为红色,提示超限。3)选取断面高程点或加点时输入高程点,输入断面桩号。在Excel中生成断面数据,并循环进行下一点的操作。4)该条断面完成后,输入“N”进行下一条断面数据的采集或输入“E”结束断面数据的采集,结束断面数据采集时,提示“及时保存数据”。其源代码省略。
1.3 程序的操作
①程序加载。先将程序文件acad.dvb导入CAD中的support文件夹中,再在CASS中找到system文件夹,打开acad.rx,加写“acvba”,这时打开南方CASS成图软件即可加载。
②获取断面数据。先打开南方CASS7.0成图软件,完成断面测量数据的展点及设计断面线的绘制。再在菜单栏激活“获取断面数据”菜单,然后根据状态栏的提示,用鼠标点击处理断面线的断面起点位置及终点方向。用鼠标选擇断面线上的高程点位(点击后的高程点位用圆圈加以标记),获得该点在设计断面线上的断面里程及高程数据,并保存在Excel里,如图2。
在断面数据获取过程中,可增加断面上未测地形特征点(如增加量取的坎脚点),在第一条断面处理完成后,可选择接着处理第二条断面(输入命令“N”)或选择退出程序(输入命令“E”)。在断面数据处理完成后,输入命令“E”结束时,CASS对话框提示“断面数据已形成,请及时保存”。如图3。
2 结束语
利用VBA编写的断面数据处理程序,该程序可以加载在CASS及AutoCAD菜单命令下,利用该程序进行纵断面和横断面数据处理,能快速获取绘制断面图所需的里程、高程数据文件,结合CASS展点图及现场草图能方便的进行断面数据的检查。处理断面数据时,可进行人机交互式数据输入,具有速度快、效率高且不易出错等特点,生成的断面数据形成Excel文档及文本文档,便于测量人员、设计人员使用及归档保存。
参考文献:
[1]CASS7.0标准教程[R].广州:南方测绘仪器有限公司,2007.
[2]SL52-2015.水利水电工程施工测量规范[S].北京:中国水利水电出版社,2015.
[3]罗朝盛.Visual Basic 6.0程序设计教程[M]. 北京:人民邮电出版社,2002.
[4]张强,刘飚,等.Excel2007与VBA编程从入门到精通 [M]. 北京:电子工业出版社,2008.endprint