浅谈BASIC编程语言在工程测量中的应用
2020-03-18魏蒙
魏 蒙
(中铁二十局集团第四工程有限公司,山东 青岛 266100)
BASIC(Beginners All-Purpose Symbolic Instruction Code)语言是一种直译式的、设计给初学者的编程语言,由于BASIC语言简单、易学的基本特性,且具备通过微电脑作为载体撰写程式的优势,使其在科学计算和数据处理等方面普遍流行。
BASIC语言在工程测量领域同样有所涉及:如内业数据批量处理时,测量人员常常会使用Microsoft Office办公系统中的Excel软件,在Excel软件中包含的宏语言VBA(Visual Basic for Application)就是windows环境下的一种BASIC语言;另如路基、隧道等结构物放样时,施工断面很难通过内业方法提前计算,需要根据实际施工里程进行中边桩坐标计算,测量人员常常会使用CASIO fx-5800P计算器进行现场计算,而CASIO fx-5800P计算器采用就是类结构化BASIC语言。测量人员将需解决的问题的思路、方法和手段通过BASIC语言告诉计算机(器),使得计算机(器)能够根据人的指令一步一步去工作,完成复杂、繁重的计算任务。
本文结合马鞍山郑蒲港铁路项目跨X024县道公跨铁立交桥的线路平面设计资料,采用Excel软件中Visual Basic编辑器与CASIO fx-5800P计算器分别撰写BASIC语言程式,实现线路中边桩坐标的快速计算。
1 线路平面设计资料
设计单位提供的《曲线要素表》如表1所示。
表1 曲线要素表
2 线元表
依照设计单位提供的《曲线要素表》整理出《线元表》,如表2所示。
表2 线元表
采用Excel软件中VBA方法进行数据批量处理。
(1)在新建的Excel表中输入需要计算的“桩号”、“偏距”、“偏角”等数据,排版后添加“命令按钮”控件,如图1所示。
图1 在Excel表中添加“命令按钮”控件
(2)双击“命令按钮”控件,撰写在敲击“命令按钮”的行为下执行的BASIC语言程式,包括声明部分、自定义变量类型、建立判断和循环等语句、设置超限、建立基础数据库、执行计算公式、计算结果输出等部分的内容,程序清单如下
Private Sub CommandButton1_Click() '声明部分
Dim A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,Z1,Z2,Z3,Pi As Double '自定义变量类型
Pi=3.1415926 '变量赋值
A=4 '变量赋值
Do While Worksheets("X024县道改移工程").Cells(A,1).Value<>"" '建立循环语句
B=Worksheets("X024县道改移工程").Cells(A,1).Value
If B<0 Or B>369.308 Then
MsgBox CStr(B)& "超出计算范围→计算中断" '设置超限
GoTo 1
End If
If B>=0 And B<=105.666 Then '建立基础数据库
Z=105.912 852 8 C=Z*Pi/180 D=0 E=3 494 949.135 F=500 226.072 5
GoTo 2
End If
………
2:G=E+(B-D)*Cos(C) '直线计算公式
H=F+(B-D)*Sin(C)
I=Worksheets("X024县道改移工程").Cells(A,6).Value
J=C+I*Pi/180
K=Worksheets("X024县道改移工程").Cells(A,5).Value
N=Worksheets("X024县道改移工程").Cells(A,10).Value
O=C+N*Pi/180
P=Worksheets("X024县道改移工程").Cells(A,9).Value
L=G+K*Cos(J) m= h+K*Sin(J)Q=G+P*Cos(O)R= h+P*Sin(O)
Worksheets("X024县道改移工程").Cells(A,2).Value=Z '成果输出
Worksheets("X024县道改移工程").Cells(A,3).Value=G
Worksheets("X024县道改移工程").Cells(A,4).Value= h
Worksheets("X024县道改移工程").Cells(A,7).Value=L
Worksheets("X024县道改移工程").Cells(A,8).Value= m
Worksheets("X024县道改移工程").Cells(A,11).Value=Q
Worksheets("X024县道改移工程").Cells(A,12).Value=R
GoTo 6
………
6:A=A+1
Loop
1:
End Sub
说明:程序清单中省略的内容为基础数据库、计算公式和成果输出的其余部分,其输入格式与列举格式相同,因篇幅原因,不再一一展开。
(3)撰写程式完毕后保存并退出VBA界面,返回Excel表中,先退出设计模式,后单击“命令按钮”控件,批量数据处理,生成计算结果,如图2所示。
图2 在Excel表中批量生成计算结果
(4)将设计坐标与VBA生成坐标进行较差,差值均小于1 mm,如表3所示。
表3 设计坐标与VBA生成坐标较差表
3 使用CASIO fx-5800P计算器进行编程计算
(1)打开CASIO fx-5800P计算器,点击“MODE”,选择“5:PROG”,再选择“1:NEW”,输入主程序名称“X024”,子程序的新建方法与主程序方法一致。
(2)点击回车,进入“File mode”界面,选择“1:COMP”,进入撰写BASIC语言程式,程式清单如下:
①主程序(X024) ’主结构程序
Lbl 0:″LCZH=″:? →S:
If S>=0 AND S<105.666:Then Prog “YS1”:IfEnd:
If S>=105.666 And S<130.666:Then Prog“YS2”:IfEnd:
If S>=130.666 And S<171.234:Then Prog“YS3”:IfEnd:
If S>=171.234 And S<196.234:Then Prog“YS4”:IfEnd:
If S>=196.234 And S<196.805:Then Prog“YS5”:IfEnd:
If S>=196.805 And S<221.805:Then Prog“YS6”:IfEnd:
If S>=221.805 And S<262.481:Then Prog“YS7”:IfEnd:
If S>=262.481 And S<287.481:Then Prog“YS8”:IfEnd:
If S>=287.481 And S<369.308:Then Prog“YS9”:IfEnd:
1÷P→C:(P-R)÷(2HPR)→D:180÷π→E:”BJ(Z-,Y+)=”? →Z:”ZJ(+)=”? →N:Abs(S-O)→W:Prog”JSGS”:”X=”:X◢”Y=”:Y◢”α=”:F■DMS◢Goto 0:
②子程序(JSGS) ’计算公式
0.1739274226→A:0.3260725774→B:0.0694318442→K:0.3300094782→L:1-L→F:1-K→M:
U+W(Acos(G+QEKW(C+KWD))+Bcos(G+QELW(C+LWD))+Bcos(G+QEFW(C+FWD))+Acos(G+QEMW(C+MWD)))→X:
V+W(Asin(G+QEKW(C+KWD))+Bsin(G+QELW(C+LWD))+Bsin(G+QEFW(C+FWD))+Asin(G+QEMW(C+MWD)))→Y:
G+QEW(C+WD)→F:X+Zcos(F+N)→X:Y+Zsin(F+N)→Y:
③子程序(YS1) ’第1段线元的数据库
3494949.1350→U:500226.0725→V:0→O:105°54′46.27″→G:105.666→H:10^45→P:10^45→R:0→Q:
说明:第2至9段线元的输入格式与第1段线元相同,因篇幅原因,不再一一展开。
(3)将设计提供坐标与CASIO fx-5800P计算坐标进行较差,最大差值为1 mm,如表4所示。
表4 设计提供坐标与CASIO fx-5800P计算坐标较差表
4 结 论
(1)通过计算实例与设计资料进行对照,计算结果满足规范精度要求。采用BASIC语言程序进行数据处理,尤其是批量数据处理,与人工处理数据相比较,工作效率将得到大幅度提高。
(2)计算实例仅是过程演示,测量人员在熟练掌握各种计算原理与计算公式的基础上,触类旁通、举一反三,合理运用BASIC语言撰写程式,将使其在工程测量领域得到更广泛的应用。