5800公路线路计算万能程序.docx
《5800公路线路计算万能程序.docx》由会员分享,可在线阅读,更多相关《5800公路线路计算万能程序.docx(14页珍藏版)》请在冰豆网上搜索。
5800公路线路计算万能程序
5800公路线路计算万能程序
时间:
2010-05-2620:
05:
13 来源:
本站 作者:
好好继续2 我要投稿 我要收藏 投稿指南
本程序以高斯四节点法为计算内核,多条线路正反算,中桩,边桩高程计算,超高计算,超高缓和计算,加宽计算,加宽缓和计算,边坡开口线计算,挡土墙坡脚线计算,考虑了中间绿化带的影响,适用与国家高速公路至乡村四级公路计算和放样,路基路面工程可以直接得出中边桩的设计三维坐标,去掉加宽和超高影响的计算困难,边坡和坡脚线计算可直接在边坡上提取坐标带入程序,经过所有设计因素的综合,得出更改边距并显示修改偏差后的坐标.反算速度明显提高,只需要3秒.程序无错,可放心输入,另本程序可以增加隧道超欠挖计算子程序,非常方便,因为每个隧道的断面数据不一样,所以在此没有明确写出.
计算器主程序:
ZHU-CHENG-XU
Lbi0:
“1,ZS=FS,2ZS,3FS,4XY=>SG,5。
。
。
。
。
。
。
”?
U:
U=1=>Prog”ZS-FS”:
进入公路三维程序
U=2=>Porg”ZS”:
进入坐标正算程序
U=3=>Porg”FS”:
进入坐标反算程序
U=4=>Porg”XY=>SG”:
进入大地坐标转施工坐标程序
…………Goto0:
说明:
计算器总的主程序,进入选择各种分支计算程序。
1为公路三维计算,2为普通正算,3为普通反算,4为大地坐标转施工坐标。
。
。
。
。
。
。
。
选择错误重新选择。
此程序可以不用输入,只为给大家一个思路,可以把计算器所有程序集中到一个主程序内管理.
公路三维部分
正反算选择程序:
ZS-FS
Deg:
//设置角度模式
20→DimZ:
//扩展变量
“1LZ=>XY,2XY=>LZ,3BIANPO-FY”?
U:
//正反算选择,正算选1,反算选2,坡口坡脚选3
IfU=1:
ThenProg”ZS-XH”:
IfEnd:
//进入正算循环主程序
IfU=2:
ThenProg”FS-XH”:
IfEnd:
//进入反算循环主程序
IfU=3:
ThenProg”BIANPO-XH”:
IfEnd:
//进入边坡开挖主程序
正算循环主体程序ZS-XH
“1PT-2SJ”?
W:
//普通计算和设计边距计算选择
“XL-XZ“?
U:
//选择线路1~N
IfW=1:
Then//运行普通计算模式边踞自由输入
Lbi0:
”L=”?
L:
”Z=”?
Z:
//输入桩号和边距
Porg”ZS-XH-1“:
Goto0:
IfEnd:
运行正算循环子程序
IfW=2:
Then//运行设计计算模式边距按设计输入
Lbi1:
”L=”?
L:
//输入桩号
Porg”0。
5LUKUAN”:
//录入公路加宽后,左右侧设计边距
Porg”ZS-XH-1“:
Goto1:
IfEnd:
//运行正算循环子程序
正算循环子程序ZS-XH-1
Prog”PM-XL-XZ”:
//进入平面线路选择程序对线路线元进行选择
Prog”CHAOXIAN-CL”:
//里程超限处理
Prog”GL-ZS”:
//进入坐标正算程序
Prog”GL-BZ-ZS”:
//进入公路边桩正算程序
Prog”GC-XL-XZ”:
//进入高程线路选择程序对线路线元进行选择
Prog”GC”:
//进入高程部分提取中桩高程
Prog"CG-XL-XZ":
//进入超高数据库提取超高数据
IfW=1:
ThenProg”B-H”:
//普通计算时进入边桩高程部分提取边桩高程
ElseZ[3]→Z:
Porg“B-H”:
//按设计计算时候代入减去半边绿化带后的路基边距,提取边桩高程
Ifend:
Prog”ZS-XS”:
//进入正算显示程序,提取正算三维结果
反算循环主体程序FS-XH
0→Z:
“XL-XZ”?
U:
//选择线路1~N
Lbi0:
“L”?
L:
“X=”?
T:
“Y=”?
S:
//输入起算假定桩号,实测XY
Prog”GL-FS”:
/进入公路反算程序
Prog”FS-XS”:
//进入反算显示程序
Goto0:
坐标正算程序GL-ZS
.1739274226→I:
.3260725774→J:
.0694318442→K:
.3300094782→E:
//四节点法计算系数录入
1-E→F:
1-K→M:
Q+KrO(C+KD)→K:
//数据库要用X、Y、Q作为起点坐标方位角
Q+ErO(C+ED)→E:
//r是弧度,输入方法FUNCTION选5
Q+FrO(C+FD)→F:
Q+MrO(C+MD)→M:
X+O(ICos(K)+JCos(E)+JCos(F)+ICos(M))→X:
//计算出X坐标
Y+O(ISin(K)+JSin(E)+JSin(F)+ISin(M))→Y:
//计算出Y坐标
Q+Or(C+D)→Q:
//计算出算点方位角,O是字母,r是弧度:
边桩坐标计算程序GL-BZ-ZS:
X+Zcos(Q+90)→G:
//计算出边桩X坐标
Y+ZSin(Q+90)→M:
//计算出边桩Y坐标
公路反算程序GL-FS
20→V:
//V值设置为20,为第一次反算控制
Do:
Porg”PM-XL-XZ”:
//进入平面线路选择程序
Porg”CHAOXIAN-CL”:
//里程超限处理程序
IfV>10:
//V越小反算速度可能越慢,但是半径过小有可能算不出来,10为建议值
ThenPorg”GL-JY-ZS”:
//进入公路简易正算二节点程序
ElsePorg”GL-ZS”:
//进入公路正算4节点程序
IfEnd:
T-X→I:
S-Y→J:
//试算点与测点X,Y距离差
Pol(I,J):
J-Q→J:
//方位角转换为接近试算点到测点的值:
Rec(I,J):
//计算出X差和Y差(X里程,J边)
I/(1-CJ-2DJ)→V:
//计算出里程大致差距(此公式为加速反算)
L+V→L:
//修改后的里程
Abs(V)→V:
//修改值的绝对值
LpWhileV>0.001:
//小于一毫米通过,大于一毫米循环计算
中桩高程计算程序GC
IfI-A<0:
Then1→H:
IfEnd:
//开口向上部分赋值
IfI-A=0:
ThenGoto1:
IfEnd:
//无竖曲线部分赋值
IfI-A>0:
Then-1→H:
IfEnd:
//开口向下时赋值
(L-C)I+K+(L-C)^2/(2E)H→I:
//计算得出竖曲线部分中桩高程
Goto2:
Lbi1:
K+(L-C)I→I:
//计算得出无竖曲线部分中桩高程
Lbi2:
边桩高程计算程序B-H
(L-C)/(D-C)→P:
//计算点占本线元长比例
3P^(2^(S))-2P^(3^(S))→P:
//计算得线性和高次抛物线系数
F+P(T-F)→E:
//初步计算计算点横坡
IfV=1:
ThenIfN=-1:
Then//直线和直缓,缓直,曲线左偏时
IfZ<0:
ThenIfE>Z[4]:
ThenZ[4]→E:
IfEnd:
//计算左侧时,横坡大于一般横坡取一般横坡
I+Abs(Z)E→O:
IfEnd:
//左侧高程
IfZ>0:
ThenI+ZF→O:
IfEnd:
Ifend:
//右侧高程得数
IfN=1:
ThenIfZ<0:
ThenI+Abs(Z)E→O:
IfEnd:
//曲线右偏时,左侧高程得得
IfZ>0:
ThenIfE>Z[4]:
ThenZ[4]→E:
IfEnd//右侧高程横坡大于一般横坡,取一般横坡
I+ZE→O:
IfEnd:
IfEnd:
IfEnd:
//右侧高程得数
IfV=2:
ThenIfZ>0:
ThenI+ZE→O:
IfEnd:
//圆曲线全超高和S曲线超高渐变部分右侧高程得数
IfZ<0:
ThenI-Abs(Z)E→O:
IfEnd:
IfEnd:
//圆曲线全超高和S曲线超高渐变部分左侧高程得数
备注:
如果有更多的坡级,大家可以使用增加变量.完全满足大家边坡放样需求
设计标准路面宽度子程序CHANGSHU
12→Z[1]:
//录入12米为路面半宽度,根据设计修改
1.5→Z[2]:
//录入1.5米为绿化带半宽,根据设计修改,无绿化带输入0
-0.02→Z[4]:
//录入-0。
02为公路一般横坡,根据设计修改
注:
在以中轴线旋转的超高不考虑绿化带影响的,在常数程序中,绿化带修改为0
路面宽度子程序0。
5LUKUAN
”Z-1,Y+1”?
V:
//左右边桩选择
Porg”CHANG-SHU”:
//设置标准路面半宽
IfV=1:
ThenPorg”GL-JK”//右侧时,进入加宽子程序
Z[1]+Z→Z:
//计算右册正确公路半宽,
Z-Z[2]→Z[3]:
IfEnd:
//计算右侧减去半边绿化带时计算边桩高程时用的边距
IfV=-1:
:
ThenPorg”GL-JK”//左侧时,进入加宽子程序
-Z[1]-Z→Z:
//计算左册正确公路半宽
Z+[2]→Z[3]:
IfEnd:
//计算左侧减去半边绿化带时计算边桩高程时用的边距
公路加宽子程序GL-JK
前点加宽里程A,加宽止点里程B,“加宽缓和段全长C,止点加宽宽度D
本加宽程序欠缺S缓和曲线加宽程序,因为没有遇到过,所以暂时空缺
Porg“JK-XL-XZ”:
//进入加宽数据库线路选择程序
IfD=1:
Then(4((L-A)/(B-A))^3-3*((L-A)/(B-A))^4)*C→Z:
IfEnd:
//从小大到加宽
IfD=2:
Then(4(((B-A)-(L-A))/(B-A))^3-3*(((B-A)-(L-A))/(B-A))^4)*C→Z:
IfEnd:
//从大到小加宽,以上两式为参考公式,可根据图纸更改公式
IfD=3:
ThenZ=Z:
IfEnd:
//圆曲线加宽直一样时
IfZ≠0:
then”JK=”:
Z◢:
IfEnd:
//存在加宽值时显示加宽值
正算显示ZS-XS
“FWJ”:
Q◢//显示计算里程方位角
“ZHONG-X”:
X◢//显示中线X坐标
“ZHONG-Y”:
Y◢//显示中线Y坐标
“ZHONG-GC”:
I◢//显示中桩高程
“B-X”:
G◢//显示边桩X坐标
“B-Y”:
M◢//显示边桩Y坐标
“B-GC”:
O◢//显示边桩高程
反算显示FS-XS
“L”:
L◢//显示计算里程
“Z”:
J◢//显示计算边距
里程超限CHAOXIAN-CL
IfL<A:
Then“L-<<<”;Stop:
IfEnd:
//小于本路线最小里程提示,退出程序
IfL>B:
Then”L+>>>”:
Stop:
IfEnd:
//大于本路线最大里程提示,退出程序
公路简易正算程序GL-JY-ZS
0.7886751346→E:
1-E→F:
Q+ErO(C+ED)→E:
Q+ErO(C+FD)→F:
X+O(Cos(E)+Cos(F))/2→X:
Y+O(Sin(E)+Sin(F))/2→Y:
Q+Or(C+D)→Q:
//Or,O为字母,r为弧度符号
边坡放样程序BP-FY
“XL-XZ“?
U:
//线路选择
”S-L”?
L:
”X=”?
T:
”Y=”?
S:
//输入试算桩号和测点X,Y.
T→Z[10]:
S→Z[11]:
Porg”PM-XL-XZ”:
//对平面线路进行选择
Porg”GL-FS“:
//进入反算程序,反算测点里程偏距。
IfJ>0:
Then”-----YOU----“◢//显示计算边坡为公路右侧
Else”-----ZUO----“◢Ifend:
//显示计算边坡为公路左侧
Porg”0.5lukuan”:
//进入设计边距程序
Porg”GC-XL-XZ”:
//高程线路选择
Porg”GC”:
//对中桩高程进行计算
Porg"CG-XL-XZ"//进入超高数据库提取超高数据
Z[3]→Z:
//录入减去半个隔离带加上加宽值后的边距
Porg”B-H”:
//计算该里程边桩高程
Abs(Z)+Z[2]→Z:
//录入设计绿化带
Z[10]→X:
Z[11]→Y:
//坐标变量转换,抛弃中线点XY坐标,以第一测点XY为后步起算数据
Porg”BP-XL-XZ”:
//进入边坡数据库,提取要素.
“1,2,3,4-BP”T//选择所计算的边坡坡段
Porg”BP-FY-1”:
//进入边坡计算子程序1程序
边坡计算子程序1BP–FY-1
O+CB+EF→A:
//计算出边坡底线高程
Abs(Z)+B+D+E→W:
//计算中线点距离边坡底线距离
Abs(J)-W→D:
//试测点到起坡点平距
VH→C:
//马道高差
0→B:
//设置边坡底线平距为0
IfT=1:
//计算第一段边坡
ThenPorg”BP-FY-2”:
IfEnd:
//进入计算子程序2
A+G+C→A:
//第二段边坡底线高程
H+GK→B:
//第二段边坡底距离第一段起线平距
IfT=2:
Then//进入计算第二段边坡
M→G:
N→K:
//第二段边坡数据变成子程序计算的第一边坡数据
Porg”BP-FY-2“:
IfEnd:
//进入计算子程序2
A+M+C→A:
//第三段边坡底线高程
B+H+MN→B//第三段边坡底距离第一段起线平距
IfT=3:
Then//进入计算第三段边坡
I→G:
P→K:
//第三段边坡数据变成子程序计算的第一边坡数据
Porg”BP-FY-2”:
IfEnd:
//进入计算子程序2
A+I+C→A:
//第四段边坡底线高程
B+H+IP→B:
//第四段边坡底距离第一段起线平距
IfT=4:
Then//进入计算第四段边坡
R→G:
S→K:
//第四段边坡数据变成子程序计算的第一边坡数据
Porg”BP-FY-2”:
IfEnd:
//进入计算子程序2
边坡计算子程序3BP-FY-3
IfG<0:
ThenReturn:
IfEnd:
IfN<A:
//如果测点高程小于该层边坡底线高程
Then“++++,SHANG-TIAO”:
A-N◢//显示坡度错误,不在本坡段,上几米再次测量或计算低层边坡
Porg"BP-FY":
IfEnd:
//返回程序重新找点
IfN>(A+G):
//如果测点高程大于该段边坡定部高程
Then”----,XIATIAO”:
N-A-G◢//显示高程错误,不在本坡段,应在上面坡段,应忘上调整
Porg:
BP-FY”:
IfEnd:
//返回主程序
边坡计算子程序2BP-FY-2
“GC=”?
N:
//输入测点高程
Porg”BP-FY-3”:
//判断测点是否低于该坡段最低高程
Abs(N-A)*K+B-D→E:
//计算出正确偏差
IfAbs(E)≤0.05:
Then//如果测点误差5厘米以内表示成功
”CHENG-GONG,WUCHA=”:
E◢//成功后,显示测点误差
Prog”BP-FY”:
IfEnd:
//返回主程序测下个断面
IfJ>0:
ThenE→Z:
//右侧录入误差
Else-E→Z:
Z→Z[10]//左侧录入误差
IfEnd:
Porg”GL-BZ-ZS”:
//计算下一点坐标
“X=”:
G◢“Y”:
M◢//显示下一点坐标,进行放样
G→X:
M→Y:
//录入XY坐标,进行下次计算
“GC=”N:
//输入测点高程
Abs(N-A)*K+B-(D+E)→C:
//计算出正确偏差
IfAbs(C)≤0.05:
Then//如果测点误差5厘米以内表示成功
”CHENG-GONG,WUCHA=”:
C◢//成功后,显示测点误差
Prog”BP-FY”:
IfEnd:
//返回主程序测下个断面
CE/(E-C)→F:
//由上次两点误差推算第三点
IfJ>0:
ThenF→Z:
//右侧录入误差
Else-F→Z:
IfEnd:
//左侧录入误差
Porg”GL-BZ-ZS”:
//进行下一点坐标计算
“X=”:
G◢“Y=”:
M◢//显示下一点坐标,进行放样
G→T:
M→S:
//录入XY坐标,进行下次计算
“NONO”:
//本循环未计算出正确点
Porg”BP-FY”:
//,使用计算出的坐标,进入下个循环,程序自动把此坐标带入下个循环
数据库部分
1平曲线数据库
平面线路选择程序PM-XL-XZ
U=1=>Prog”HUO-DA-XIAN”:
//进入假定线路活大线。
U=2=>Prog”X2”:
//进入路线2
U=3=>prog”X3”:
//进入路线3
(P-R)/(2HPR)→D:
L-O→O:
//正算程序需要补充部分
OD→D:
1/P→C:
(数据库)活大线HUO-DA-XIAN
线路起点里程→A:
线路终点里程→B:
IfL≤第一线元止点里程:
Then起点X坐标→X:
起点Y坐标→Y:
起点半径(左-,右+)→P:
止点半径(左-,右+)→R:
本线元长度→H:
线元起点桩号→O:
起点方位角→Q:
Return:
IfEnd:
IfL≤第二线元止点里程:
。
。
。
。
。
。
Return:
。
。
。
。
。
。
二号线路X2
三号线路X3
2,高程数据库部分
说明:
输入部分:
L为计算里程,C为起点里程,,I为纵向前坡坡度,A为纵向后坡坡度,E为半径,K为起点高程,
高程线路选择程序GC-XL-XZ
U=1=>Prog”GC1”:
//进入线路高程1
U=2=>Prog”GC2”:
//进入线路高程2
U=3=>Prog”GC3”:
/进入线路高程3
一号线路高程GC1
IfL≤该段止点里程:
Then(前坡例0。
01)→I:
(后坡例-0。
034)→A:
(竖曲线半径)→E:
((起点高程)→K:
(起点桩号)→C:
止点桩号→D:
Return:
Ifend;
……
二号线路高程GC2
三号线路高程GC3
3超高数据库
IfU=1:
ThenPorg”CG1”:
IfEnd:
//进入线路1
IfU=2;ThenPorg”CG2”:
IfEnd:
//进入线路2
IfU=3:
ThenProg”CG3”:
IfEnd:
//进入线路3
超高线路选者程序CG-XL-XZ
N为曲线左右偏区别符号(左-1,右+1),F为起点横坡,T为止点横坡,S为线性渐变和高次渐变的判断要素,取0为线性,取1为高次。
V为一般段超高缓和段与全超高和卵型插入缓和段判断要素。
直线一般超高缓和段输入1,全超高和S超高缓和段输入2,显示部分:
重要约定,在全超高平曲线和卵型曲线插入缓和段中,前横坡F和后横坡T都输入右侧横坡。
超高数据库1CG1
-0.02→F:
-0.02→T:
//录入直线部分一般超高,数据根据设计调整
0→S:
1→V:
//录入直线部分计算性质,数据根据设计调整
1→N:
//1→N:
数据不调整,输入以上几段后,直线超高不变段可不再输入数据.
IfL≥该段起点里程AndL≤该段止点里程:
Then(超高缓和段输入1,单圆曲线全超高和S超高缓和段输入2)→V:
(平曲线左右偏区别符号,超高缓和段才输入 左-1,右+1)→N:
(超高方式选择,0为线性,取1为高次)→S:
(起点横坡例-0。
02,根据设计值更改)→F:
(止点横坡例+0.03,根据设计值更改)→T:
起点桩号→C:
止点桩号→D:
Return:
Ifend;
... ...
超高数据库2CG2
超高数据库3CG3
4,加宽数据库
加宽线路选择程序JK-XL-XZ
IfU=1:
ThenPorg”JK1”:
IfEnd:
//进入线路1
IfU=2;ThenPorg”JK2”:
IfEnd:
//进入线路2
IfU=3:
ThenProg”JK3”:
IfEnd:
//进入线路3
:
…….
加宽数据库JK1
A为加宽前里程,B为加宽止点里程,C最大加宽点加宽宽度,D加宽趋势(从前往后输入1从后往前输入2,全加宽输入3)Z全加宽宽度(注明,不加宽部分不需要录入数据库,加宽缓和段不输入Z,全加宽不输入C)
1号线路JK1
0→Z:
//录入不加宽部分加宽值为0,此句必须输
IfV=(公路左侧-1,公路右侧+1):
ThenL≤此段起点AndL≥此段终点:
Then加宽前里程→A:
加宽段止点里程→B:
最大加宽点加宽宽度→C:
加宽趋势(由小到大1,由大到小2)→D:
IfEnd:
//此段为加宽缓和段的格式
IfV=(公路左侧-1,公路右侧+1):
Then L≤此段起点AndL≥此段终点:
Then加宽前里程→A:
加宽段止点里程→B:
最大加宽点加宽宽度→C:
加宽趋势3→D:
加宽宽度→ZIfEnd:
//此段为全加宽段的格式
2号线路JK2
3号线路JK3
。
。
。
。
。
。
5,边坡数据库
边坡线路选择程序BP-XL-XZ
IfU=1ThenPorg"BP1":
IfEnd:
//进入线路1
IfU=2ThenPorg"BP2":
IfEnd:
//进入线路2
IfU=3ThenProg"BP3":
IfEnd:
//进入线路3
.........
路肩宽度B路肩坡度C边沟宽度D、平台宽度E平台坡度F马道宽H马道坡度V(马道坡度向边坡侧仰为-,向公路侧仰为正)1级边坡高度G1级别边坡坡度K2级边坡高度M2级边坡坡度N3级边坡高度I3级边坡坡度P4级边坡高度R4级边坡坡度S
边坡数据库1BP1
IfJ≥(或≤区分路基左右)0:
ThenIfL(里程)<终点桩号And>起点桩号:
Then
"1~N":
//录入本线元边坡级数,在使用时候可以看到本段边坡级数,而选择计算边坡层
路肩宽度→B:
路肩坡度→C:
边沟宽度→D:
平台宽度→E:
平台坡度→F:
马道宽度→H:
马道坡度→V:
1级边坡高度→G:
1级别边坡坡度→K:
2级边坡高度→M:
2级边坡坡度→N:
3级边坡高度I:
3级边坡坡度P:
4级边坡高度R:
4级边坡坡度:
Return:
IfEnd:
IfEnd:
//约定:
所有边坡度正负符号向中线内侧倾斜为+,向外侧倾斜为-。
有几层边坡就录入多少边坡数据,只有一层边坡时可不录入马道高宽数据
边坡数据库2BP2
边坡数据库3BP3
使用说明:
进入常数子程序更改设计常数
根据数据库说明编写数据库
一,坐标正算方法
普通计算
1,进入主程序ZHU-CHENG-XU
2,选择使用程序,根据大家录入的代码,本程序,选择1
3,选择坐标1,正算,2,反算,3边坡放样,选择1
4,1为普通计算或者2设计计算选者1,选者1
5,线路选择1~N,根据计算路线编号进行选者
6,输入计算里程
7,输入计算边距,左-,右正
8,显示计算点方位角,显示计算点中桩XY,显示中桩高程,显示边桩XY,显示边桩高程
设计计算
1,进入主程序ZHU-CHENG-XU
2,选择使用程序,根据大家录入的代码,本程序,选择1
3,选择坐标1,正算,2,反算,3边坡放样,选择1
4,1为普通计算或者2设计计算选者1,选者2
5,线路选择1~N,根据计