APP下载

基于VBA处理AutoCAD中断面数据的方法

2018-01-15向垂规王俊

价值工程 2018年1期

向垂规+王俊

摘要: 在南方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