首页 > 范文大全 > 正文

VBA在工程测量中的应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇VBA在工程测量中的应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:介绍vba工程测量中的应用及优点。

关键词:VBA Excel 工程测量

中图分类号:P258

文献标识码:A

文章编号:1007-3973(2011)010-065-02

1、引言

VBA是Basic编程语言中比较流行的一种语言,它继承了Basle的很多特性以及优点,使工程测量中大量的数据处理变得简单快捷。

2、实例

已知测站点、后视点、放样点三点坐标,利用坐标反算计算出测站点后视点与放样点的夹角、测站点与放样点的距离。

已知A、B两点的坐标值分别为(XA、yD(xB、yB),反算它们的方位角和距离其数学模型为:

已知A、B、C三点的坐标值(XAyA)(xB,yB)(xC、yC),计算它的夹角其数学模型为:

通过分析我们发现要计算ZA的值,首先计算a^B和aA。的值,而方位角aAB、aAC属于象限角,计算复杂,容易出错,而利用电子表格结合VBA程序计算就很简单。下面根据具体问题,笔者对VBA是如何结合EXCEL在工程测量中应用进行分析。

2.1自定义坐标转换的计算函数

启动Excel打开点坐标所在的工作簿,执行"工具宏Visual Basic编辑器”命令,打开“Visual Basic编辑”窗口。执行“插入模块”命令,展开“模块1(代码)”窗口,输入下面的代码:

Option Explicit

ConstPI=3.14159265358979

2.1.1方位角计算函数

Public Function XYToFAng(CX As Double。CY As Doub-le,x As Double,Y As Double)As Double

Dim DeltX.Deity As Double

DimAug,FangAsDouble

DeltX=X・CX

Deity=Y-CY

IfDeltX>0 And DeitY>O Then 第一象限角

Ang=Am(DeltY,DeltX)

Fang=Aug

ElselfDeltXO Then 第二象限角

Aug=Am(DeltY/DeltX)

Fang=PI+Ang’aug

ElseIfDeltX

Ang=Am(DeltY/DeltX)

Fang=PI+Ang

ElselfDeltX>0 And DeitY

Ang=Am(Dclty/Deltx)

Fang=2*PI+Ang

EndIf

XYToFAng=Fang*180/PI

End Funcion

2.1.2角度计算函数

Public Function XYToAng(ByVal CZX As Double.ByValCZY As Double,ByVal HsX As Doubl~ByVal HsY As Double,ByValPtXAsDouble,ByValPtYAsDouble)

DimPAngAsDouble

Dim CzHsAng,CzPtAngAsDouble

CzHsAng=XYToFAng(CZX,CZY.HsX.HsY)

CzPtAng。XYToFAng(Cz)(,CZY.PtX.PrY)

If CzHsAng>CzPtAng And CzHsAng=CzPtAng Then

PAng=2*PI+(CzPtAng-CzHsAng)

Else

PAng=(CzPtAng―CzHsAng)

End Tf

IfPang>0。rhen

Pang=Pang

Else

Pang=360-Pang

End If

XYToAng=JdToDFM(PAng)

End Function

2.1.3角度转换度分秒计算函数

Public Function JdToDFM(Jd As Double)As String

DimD,F.MAsInteger

Dim XiaoJd As Double

D=Fix(Jd)

XiaoJd=Jd-D

F=Fix(60*XiaoJd)

M=Int((60*XiaoJd-F)*60)

JdToDFM=D&”0”&F&””’&M

End Function

2.1.4测站与放样点距离计算

Public Function XyToDis(X1 As Double,Y1 As Double,X2 As Double,Y2 As Double)As Double

Dim Dis As Double

Dis=Sqr((X1.X2)Λ2+(Y1-Y2)“2)

XyToDis=Format(Dis,“#.###”)

End Function

输入上述代码完成后,关闭窗口返回。

(VBA代码在Execl中经实践检验,计算结果准确无误)

提示:自定义函数的VBA结构为“Function………EndFunction”。

代码中“XYToFAng”“XYToAng”“JdToDFM…”XyToDis”代表自定义函数名称,这些名称可以自行修改;函数名称后的括号里的内容为函数参数。

2.2计算测站点与放样点的距离和夹角

切换到点坐标所在的工作表,如图l所示。

A列为点名,B列、c列为点的x、Y坐标,这些为已知数据,D列和E列分别为需要求解的距离和夹角;第1行为测站点数据,第2行为后视点数据,第3行至第8行为放样点数据。选中D4单元格(保存“距离”的单元格),输入公式“=xtodis()”,它计算测站点(CZ)与放样点1(FYl)的距离;函数名称“xytodis”后的括号中“$2$B,$2$C,4B,4C”分别为计算距离所需的四个参数;“$2$B~$2$c”中的“$”为绝对引用标识符,它的的作用是在使用“填充柄”将公式复制到D5至D8的单元格(将鼠标移至D4单元格左下角成细十字线时,按住鼠标左键向下拖动至D8即完成复制)时,其前两个参数“2B,2C”不随单元格的变化而变化;选中E4单元格(保存“夹角”的单元格),输入公式“=xytoang($2$B,$2$c,$3$B,$3$C,4B,4C)”。它计算测站点(CZ)、后视点(HS)与放样点I(FYI)的夹角;函数名称"xytoAng”后的括号中“$2$B,$2$C,$3$B,$3$C,4B,4C”分别为计算距离所需的测站点、后视点、放样点的x、Y坐标六个参数。

2.3把自定义函数迁移到其它工作簿中使用

通常情况下,自定义函数只作用于所在的工作簿,要想在其它工作簿中使用它,可以通过加载宏来实现。

在上述工作簿中单击“文件一另存为”,打开另存为对话框,点击“保存类型”右侧的下拉按钮,在下拉列表中选择“Microsoft Office Excel加载宏(*.xla)”项,命名为“坐标转换.xla”,单击“保存”按钮。执行“工具一加载宏”命令,打开“加载宏”对话框(如图2),勾选“坐标转换”,按“确定”返回即可。

3、在工程测量中应用VBA的优点

(1)VBA是绑定在Excel上的共享语言,因此可以使用VBA完成Excel中的各个功能。

(2)使用一些简单的VBA测量程序就能够实现大量的特别是重复性的操作,并且可以通过使用快捷键、菜单命令以及工具栏按钮等方式来快速地执行VBA测量程序,从而实现大量的复杂操作的自动化。

(3)VBA可以提供大量丰富的对象,在一个工作表中就可以很方便地控制其他工作表、数据表和文档,从而实现不同工作表之间的数据交流。这样可以实现各种测量数据的快速处理,节约了很多时间。

参考文献:

[1]邵自修.工程测量[M].冶金工业出版社,1992.

[2]玄伟剑.中文版Excel2002快学教程[M].航空工业出版社,

2002.

[3]刘宇.Excel高效办公[M].人民邮电出版社,2006.