论文部分内容阅读
摘要:论述了VB的特点,并结合实例阐述了VB在工程测量中的应用
关键词:Visual Basic :前方交会:导线
中图分类号:[TU198+.2]文献标识码: A 文章编号:
概述
Visual Basic(简称VB)是美国微软公司推出的在Windows环境下使用的应用软件开发系统,是近年来得到迅速推广和应用的一种计算机高级语言,它适合于面向对象程序设计。使用VB可以即快又简单的开发Windows环境下的应用软件。
Visual Basic一方面继承了其前辈BASIC程序设计语言所具有的简单易用的特点,另一方面在其编程系统中采用了面向对象、件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。
随着现代科学技术的发展,测绘技术日新月异。传统的测量数据计算大部分由PC1500计算器完成,这类计算器须按顺序输入参数和数据,需要输入的数据多,输入速度慢,一旦出错,必须重复操作。而VB可以实现可视化编程,清晰方便,简单适用,避免数据输入重复。
2.VB在前方交会测量中的应用
程序运行环境简介:程序是在VB6.0的环境下编写的,程序打包后能在windows系统下运行。
2.1前方交會程序设计
(1)前方交会的运行界面图:
(2)前方交会的程序代码
x11 = ((Val(XA)) * (1 / Tan(DmsToHd(Val(B1)))) + (Val(XB)) * (1 / Tan(DmsToHd(Val(A1)))) - Val(YA) + Val(YB)) / _
((1 / Tan(DmsToHd(Val(A1)))) + (1 / Tan(DmsToHd(Val(B1)))))
y11 = ((Val(YA)) * (1 / Tan(DmsToHd(Val(B1)))) + (Val(YB)) * (1 / Tan(DmsToHd(Val(A1)))) + Val(XA) - Val(XB)) / _
((1 / Tan(DmsToHd(Val(A1)))) + (1 / Tan(DmsToHd(Val(B1)))))
x12 = ((Val(XB)) * (1 / Tan(DmsToHd(Val(B2)))) + (Val(XC)) * (1 / Tan(DmsToHd(Val(A2)))) - Val(YB) + Val(YC)) / _
((1 / Tan(DmsToHd(Val(A2)))) + (1 / Tan(DmsToHd(Val(B2)))))
y12 = ((Val(YB)) * (1 / Tan(DmsToHd(Val(B2)))) + (Val(YC)) * (1 / Tan(DmsToHd(Val(A2)))) + Val(XB) - Val(XC)) / _
((1 / Tan(DmsToHd(Val(A2)))) + (1 / Tan(DmsToHd(Val(B2)))))
x1 = (x11 + x12) / 2
y1 = (y11 + y12) / 2
c1 = ((XA - XB) ^ 2 + (YA - YB) ^ 2) ^ 0.5
c2 = ((XC - XB) ^ 2 + (YC - YB) ^ 2) ^ 0.5
mp1 = (c1 * Val(M)) / (rou * Sin((3.1415926 - DmsToHd(Val(A1)) - DmsToHd(Val(B1))) ^ 2))
mp2 = (c2 * Val(M)) / (rou * Sin((3.1415926 - DmsToHd(Val(A2)) - DmsToHd(Val(B2))) ^ 2))
MP = spr(((mp1) ^ 2 + (mp2) ^ 2) / 2)
If Len(XC) = 0 Then
PX = "X=" & Format(Str(x11), "#.#####")
PY = "Y=" & Format(Str(y11), "#.#####")
M1 = "M=" & Format(Str(mp1), "0.#####")
Else
PX = "X=" & Format(Str(x1), "#.#####")
PY = "Y=" & Format(Str(y1), "#.#####")
M1 = "M=" & Format(Str(MP), "0.#####")
End If
3.VB在支导线测量中的程序设计
(1)支导线计算的运行界面图
(2)支导线的程序代码
n = Val(InputBox("请输入左角个数:", "前方交会"))
x0 = Val(InputBox("请输入起始点坐标(x):", "前方交会"))
y0 = Val(InputBox("请输入起始点坐标(y):", "前方交会"))
a0 = Val(InputBox("请输入起始坐标方位角:", "前方交会"))
For i = 1 To n
b(i) = Val(InputBox("请输入第" & i & "个左角的值:", "前方交会"))
D(i) = Val(InputBox("请输入第" & i & "条边的边长”", "前方交会"))
Next
a(1) = a0 + b(1)
If a(1) > 180 Then
a(1) = a(1) - 180
ElseIf a(1) < 180 Then
a(1) = a(1) + 180
End If
x(1) = x0 + D(1) * Cos(DmsToHd(a(1)))
y(1) = y0 + D(1) * Sin(DmsToHd(a(1)))
For i = 2 To n
a(i) = a(i - 1) + b(i)
Select Case a(i)
Case Is > 180
a(i) = a(i) - 180
Case Is < 180
a(i) = a(i) + 180
End Select
x(i) = x(i - 1) + (D(i) * Cos(DmsToHd(a(i))))
y(i) = y(i - 1) + (D(i) * Sin(DmsToHd(a(i))))
Next
With Dlg1
.DialogTitle = "保存结果"
.Filter = "文本文件(*.txt)|*.txt"
.FileName = "支导线计算结果.txt"
.Action = 2
End With
Open Dlg1.FileName For Output As #1
Print #1, "起始点坐标(x)= " & x0
Print #1, "起始点坐标(x)= " & y0
Print #1, "起始坐标方位角a0= " & a0
For i = 1 To n
Print #1, x(i), y(i)
Next
Close #1
q = MsgBox("计算结束!结果保存在 " & Dlg1.FileName & ", 是否显示结果?", vbYesNo, "前方交会")
If q = 6 Then
Shell "Notepad.exe " & Dlg1.FileName, vbNormalFocus
ElseIf q = 7 Then
End If
以上各程序的数据直接从界面输入, 数据输入的格式:坐标的输入均以m为单位,角度输入格式为度、分、秒。如角度为101°06′51″输入时输:101.0651。数据结果直接显示在界面上。其中支导线的数据以记事本形式输出
4.结束语
本文通过前方交会和支导线的计算编程及运算介绍了VB在工程测量中的应用。VB以其可视化界面、直观、方便的特点,给工程测量计算带来了极大的便利,在工程测量中的应用也将越来越广泛。
参考文献
【1】国家技术监督局,中华人民共和国建设部.《工程测量规范》(GB50026--93).北京:中国计划出版社,2001年.
【2】孙家启等.《Visual Basic程序设计教程》.安徽:安徽大学出版社 ,2002.9
【3】李兰友.《Visual Basic程序设计及实训教程》.北京:清华大学出版社,2003.
关键词:Visual Basic :前方交会:导线
中图分类号:[TU198+.2]文献标识码: A 文章编号:
概述
Visual Basic(简称VB)是美国微软公司推出的在Windows环境下使用的应用软件开发系统,是近年来得到迅速推广和应用的一种计算机高级语言,它适合于面向对象程序设计。使用VB可以即快又简单的开发Windows环境下的应用软件。
Visual Basic一方面继承了其前辈BASIC程序设计语言所具有的简单易用的特点,另一方面在其编程系统中采用了面向对象、件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视化程序设计方法。
随着现代科学技术的发展,测绘技术日新月异。传统的测量数据计算大部分由PC1500计算器完成,这类计算器须按顺序输入参数和数据,需要输入的数据多,输入速度慢,一旦出错,必须重复操作。而VB可以实现可视化编程,清晰方便,简单适用,避免数据输入重复。
2.VB在前方交会测量中的应用
程序运行环境简介:程序是在VB6.0的环境下编写的,程序打包后能在windows系统下运行。
2.1前方交會程序设计
(1)前方交会的运行界面图:
(2)前方交会的程序代码
x11 = ((Val(XA)) * (1 / Tan(DmsToHd(Val(B1)))) + (Val(XB)) * (1 / Tan(DmsToHd(Val(A1)))) - Val(YA) + Val(YB)) / _
((1 / Tan(DmsToHd(Val(A1)))) + (1 / Tan(DmsToHd(Val(B1)))))
y11 = ((Val(YA)) * (1 / Tan(DmsToHd(Val(B1)))) + (Val(YB)) * (1 / Tan(DmsToHd(Val(A1)))) + Val(XA) - Val(XB)) / _
((1 / Tan(DmsToHd(Val(A1)))) + (1 / Tan(DmsToHd(Val(B1)))))
x12 = ((Val(XB)) * (1 / Tan(DmsToHd(Val(B2)))) + (Val(XC)) * (1 / Tan(DmsToHd(Val(A2)))) - Val(YB) + Val(YC)) / _
((1 / Tan(DmsToHd(Val(A2)))) + (1 / Tan(DmsToHd(Val(B2)))))
y12 = ((Val(YB)) * (1 / Tan(DmsToHd(Val(B2)))) + (Val(YC)) * (1 / Tan(DmsToHd(Val(A2)))) + Val(XB) - Val(XC)) / _
((1 / Tan(DmsToHd(Val(A2)))) + (1 / Tan(DmsToHd(Val(B2)))))
x1 = (x11 + x12) / 2
y1 = (y11 + y12) / 2
c1 = ((XA - XB) ^ 2 + (YA - YB) ^ 2) ^ 0.5
c2 = ((XC - XB) ^ 2 + (YC - YB) ^ 2) ^ 0.5
mp1 = (c1 * Val(M)) / (rou * Sin((3.1415926 - DmsToHd(Val(A1)) - DmsToHd(Val(B1))) ^ 2))
mp2 = (c2 * Val(M)) / (rou * Sin((3.1415926 - DmsToHd(Val(A2)) - DmsToHd(Val(B2))) ^ 2))
MP = spr(((mp1) ^ 2 + (mp2) ^ 2) / 2)
If Len(XC) = 0 Then
PX = "X=" & Format(Str(x11), "#.#####")
PY = "Y=" & Format(Str(y11), "#.#####")
M1 = "M=" & Format(Str(mp1), "0.#####")
Else
PX = "X=" & Format(Str(x1), "#.#####")
PY = "Y=" & Format(Str(y1), "#.#####")
M1 = "M=" & Format(Str(MP), "0.#####")
End If
3.VB在支导线测量中的程序设计
(1)支导线计算的运行界面图
(2)支导线的程序代码
n = Val(InputBox("请输入左角个数:", "前方交会"))
x0 = Val(InputBox("请输入起始点坐标(x):", "前方交会"))
y0 = Val(InputBox("请输入起始点坐标(y):", "前方交会"))
a0 = Val(InputBox("请输入起始坐标方位角:", "前方交会"))
For i = 1 To n
b(i) = Val(InputBox("请输入第" & i & "个左角的值:", "前方交会"))
D(i) = Val(InputBox("请输入第" & i & "条边的边长”", "前方交会"))
Next
a(1) = a0 + b(1)
If a(1) > 180 Then
a(1) = a(1) - 180
ElseIf a(1) < 180 Then
a(1) = a(1) + 180
End If
x(1) = x0 + D(1) * Cos(DmsToHd(a(1)))
y(1) = y0 + D(1) * Sin(DmsToHd(a(1)))
For i = 2 To n
a(i) = a(i - 1) + b(i)
Select Case a(i)
Case Is > 180
a(i) = a(i) - 180
Case Is < 180
a(i) = a(i) + 180
End Select
x(i) = x(i - 1) + (D(i) * Cos(DmsToHd(a(i))))
y(i) = y(i - 1) + (D(i) * Sin(DmsToHd(a(i))))
Next
With Dlg1
.DialogTitle = "保存结果"
.Filter = "文本文件(*.txt)|*.txt"
.FileName = "支导线计算结果.txt"
.Action = 2
End With
Open Dlg1.FileName For Output As #1
Print #1, "起始点坐标(x)= " & x0
Print #1, "起始点坐标(x)= " & y0
Print #1, "起始坐标方位角a0= " & a0
For i = 1 To n
Print #1, x(i), y(i)
Next
Close #1
q = MsgBox("计算结束!结果保存在 " & Dlg1.FileName & ", 是否显示结果?", vbYesNo, "前方交会")
If q = 6 Then
Shell "Notepad.exe " & Dlg1.FileName, vbNormalFocus
ElseIf q = 7 Then
End If
以上各程序的数据直接从界面输入, 数据输入的格式:坐标的输入均以m为单位,角度输入格式为度、分、秒。如角度为101°06′51″输入时输:101.0651。数据结果直接显示在界面上。其中支导线的数据以记事本形式输出
4.结束语
本文通过前方交会和支导线的计算编程及运算介绍了VB在工程测量中的应用。VB以其可视化界面、直观、方便的特点,给工程测量计算带来了极大的便利,在工程测量中的应用也将越来越广泛。
参考文献
【1】国家技术监督局,中华人民共和国建设部.《工程测量规范》(GB50026--93).北京:中国计划出版社,2001年.
【2】孙家启等.《Visual Basic程序设计教程》.安徽:安徽大学出版社 ,2002.9
【3】李兰友.《Visual Basic程序设计及实训教程》.北京:清华大学出版社,2003.