测量数据处理与VB应用论文_尹亚

恩施市国土资源局 湖北恩施 445031

摘要:利用编写的VB程序对测量数据进行处理,可以使测量数据处理简单化,随着一些编程软件在移动设备中的应用,使测量变的很便捷,所以学习一些关于编程方面的知识,可以在以后的工作中更得心应手。

关键词:VB语言;测量数据;数据处理

VB(Visual Basic的简称,可视化的编程语言)是微软公司的一种通用程序设计语言,包含在Microsoft Excel、Microsoft Acces、AutoCAD等众多Windows应用软件中的VBA都是使用VB语言,以供用户二次开发,本文主要讲述Microsoft Excel VBA在测量数据处理方面的应用;首先通过一个简单的实例来了解一下VB的应用和代码编写规则。

下面以创建一个 Hello VB的程序为例进行介绍。程序执行流程为:运行程序,单击“确定”按钮,在窗体的标签中显示Hello VB;单击“退出”按钮,退出程序。

打开Visual Basic 6.0,选择“文件”/“新建工程”命令,弹出“新建工程”对话框。选择“标准 EXE”,单击“确定”按钮,如图1-1所示,即可创建一个标准的EXE工程。

图1-1

在创建工程后,系统会自动建立一个新窗体,并将其命名为Forml。在该窗体上添加一个Label控件、两个CommandButton控件,如图1-2所示。

双击“确定”和“退出”按钮进入代码编辑区,分别编写如下代码:

Private Sub Command1_Click()

Label1.Caption = "Hello VB"

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Form_Load()

Me.Caption = "第一个VB应用程序"

Label1.Font = "宋体"

Label1.FontSize = 32

Label1.FontBold = True

Command1.Caption = "确定"

Command2.Caption = "退出" '

End Sub

完成程序编写后,需要对程序进行调试和运行;当程序没有错误时,就可以成功运行了。单击“确定”按钮,在标签中即可显示出Hello VB的字样,运行效果如下图所示,单击“退出”按钮可以退出程序。

单击“编辑”按钮,打开代码编写器,编写如以下代码:

Sub hdm()

Dim e(0 To 999),i,f(1 To 999),g,a,b,c,d,m

a = Sheets("sheet1").Cells(2,1).Value

b = Sheets("sheet1").Cells(2,2).Value

c = Sheets("sheet1").Cells(2,3).Value

i = 0

g = 1

e(0)= Int(Sheets("sheet2").Cells(1,3).Value + 0.5)

f(1)= 1

For i = 1 To 999

e(i)= Int(Sheets("sheet2").Cells(i,3).Value + 0.5)

If Abs(e(i)- e(i - 1))>= 1 Or(e(i)= 0 And e(i - 1)<> 0)Then

f(g + 1)= i

g = g + 1

End If

Next i

m = g - 1

For g = 1 To m

Rows(f(g)+(g - 1)* 2).Resize(2).Insert

d = Int(Sheets("sheet2").Cells(f(g)+(g - 1)* 2 + 2,3).Value + 0.5)

Sheets("sheet2").Cells(f(g)+(g - 1)* 2,1)= "begin"

Sheets("sheet2").Cells(f(g)+(g - 1)* 2,2)= d

Sheets("sheet2").Cells(f(g)+(g - 1)* 2 + 1,1)= 0

Sheets("sheet2").Cells(f(g)+(g - 1)* 2 + 1,2)=(d - a)* c + b

Next g

Sheets("sheet2").Columns(3)= ""

Sheets("sheet2").Columns(2).NumberFormatLocal = "0.000_ "

End Sub

程序说明:

所测断面桩号和应测桩号之差大于50cm将出现错误,在sheet1表格中输入起坡点高程、起坡桩号和坡比,如图2-3所示:

图3-2

在代码编写区中输入以下代码:

Private Sub CommandButton1_Click()

a = Cells(3,1).Value

b = Cells(3,2).Value

c = Cells(3,3).Value

d = Cells(3,4).Value

e = Cells(3,5).Value

f = Cells(3,6).Value

h = Cells(3,7).Value

For i = 5 To 999

If Cells(i,1).Value <> "" Then

g = b +(Cells(i,1).Value - a)* c

If Cells(i,3).Value > g + h Then

Cells(i,4).Value = Sqr((Cells(i,3).Value -(g + e - f))^ 2 +(Cells(i,2).Value)^ 2)- f

Else

Cells(i,4).Value = Abs(Cells(i,2))- d

End If

Else

Cells(i,4).Value = ""

End If

Next i

End Sub

Private Sub CommandButton2_Click()

For i = 5 To 999

Cells(i,4).Value = ""

Next i

End Sub

程序说明:

按要求输入起始桩号、高程、坡比和洞型数据,然后直接把数据粘贴到相应表格中点击“计算”按钮,就可以得到超欠挖结果。

在导流洞和边坡开挖过程中经常会遇到一些在圆弧段上的数据,需要计算桩号、偏距,通过坡比和高程来计算超欠挖情况;用计算器只能逐一进行计算,对大量的数据进行处理很不方便,所以用Microsoft Excel VBA编写一个可以在圆弧段上批量转换坐标的应用程序,其方法如上;添加和布置如图4-1所以的按钮和数据:

图4-1

在代码编写区中输入以下代码:

Private Sub CommandButton1_Click()

Const Pi As Single = 3.1415926536

If OptionButton1.Value = True Then

GoTo lb1

Else

GoTo lb2

End If

lb1:

a = Cells(3,1).Value:b = Cells(3,2).Value:c = Cells(3,3).Value:d = Cells(3,4).Value:e = Cells(3,5).Value:k = Cells(3,7).Value

h = Int(e)+ Int((e - Int(e))* 100)/ 60 +(e * 100 - Int(e * 100))/ 36

For i = 5 To 999

If Cells(i,1).Value <> "" And Cells(i,2).Value <> "" Then

x = Cells(i,1).Value - b:y = Cells(i,2).Value - c

If y <> 0 Then

f =(Pi *(1 - Sgn(y)/ 2)- Atn(x / y))* 180 / Pi

Else

f = 180

End If

If k *(f - h)< 0 Then

g = k *(f - h)+ 360

Else

g = k *(f - h)

End If

Cells(i,6).Value = a + 3.1415926536 * g * Cells(3,8).Value / 180

If Cells(i,6).Value > d Then

MsgBox "第" & i & "行超出计算范围",vbOKOnly,"提示"

Cells(i,1).Interior.Color = vbRed:Cells(i,2).Interior.Color = vbRed:Cells(i,7).Value = ""

Else

Cells(i,7).Value = k *(Cells(3,8).Value - Sqr(x ^ 2 + y ^ 2))

End If

Else

Cells(i,6).Value = "":Cells(i,7).Value = ""

End If

Next i

End

lb2:

a = Cells(3,1).Value:b = Cells(3,2).Value:c = Cells(3,3).Value:d = Cells(3,4).Value:e = Cells(3,5).Value:k = Cells(3,7).Value

h = Int(e)+ Int((e - Int(e))* 100)/ 60 +(e * 100 - Int(e * 100))/ 36

For j = 5 To 999

If Cells(j,6).Value <> "" And Cells(j,7).Value <> "" Then

If h + k *((Cells(j,6).Value - a)* 180 /(Cells(3,8).Value * 3.1415926536))< 0 Then

s = h + k *((Cells(j,6).Value - a)* 180 /(Cells(3,8).Value * 3.1415926536))+ 360

Else

s = h + k *((Cells(j,6).Value - a)* 180 /(Cells(3,8).Value * 3.1415926536))

End If

z = Cells(3,8).Value - k * Cells(j,7).Value

Cells(j,1).Value = b + z * Cos(s * Pi / 180):Cells(j,2).Value = c + z * Sin(s * Pi / 180)

Else

If Cells(j,6)> d Then

Cells(j,1).Value = "":Cells(j,2).Value = "":Cells(j,6).Interior.Color = vbRed:Cells(j,7).Interior.Color = vbRed

MsgBox "第" & j & "行超出计算范围",vbOKOnly,"提示"

End If

End If

Next j

End

End Sub

Private Sub CommandButton2_Click()

For i = 1 To 999

For j = 1 To 8

If Cells(i,j).Interior.ColorIndex = 3 Then

Cells(i,j).Interior.ColorIndex = 0

End If

Next j

Next i

End Sub

程序说明:

按提示在单元格输入相应的数据(注意转角向左转为-1,转角向右转为1),本程序可以在圆弧段上正桩号、偏距,也可以反算X、Y;当计算桩号超出YZ点的桩号程序将终止,并提示“超出计算范围”,该坐标处单元格底色自动变红。

利用编写的VB程序对测量数据进行处理,可以使测量数据处理简单化,随着一些编程软件在手机等一些移动设备中的应用,使测量变的很便捷,所以学习一些关于编程方面的知识,可以在以后的工作中更得心应手。

参考文献

[1]《Visual Basic 从入门到精通》第3版

论文作者:尹亚

论文发表刊物:《建筑学研究前沿》2017年第23期

论文发表时间:2018/1/11

标签:;  ;  ;  ;  ;  ;  ;  ;  

测量数据处理与VB应用论文_尹亚
下载Doc文档

猜你喜欢