5800道路程序终极版.docx

上传人:b****5 文档编号:11982379 上传时间:2023-04-16 格式:DOCX 页数:14 大小:21.89KB
下载 相关 举报
5800道路程序终极版.docx_第1页
第1页 / 共14页
5800道路程序终极版.docx_第2页
第2页 / 共14页
5800道路程序终极版.docx_第3页
第3页 / 共14页
5800道路程序终极版.docx_第4页
第4页 / 共14页
5800道路程序终极版.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

5800道路程序终极版.docx

《5800道路程序终极版.docx》由会员分享,可在线阅读,更多相关《5800道路程序终极版.docx(14页珍藏版)》请在冰豆网上搜索。

5800道路程序终极版.docx

5800道路程序终极版

5800道路程序终极版

 

FileName:

RESET   初始化程序

Norm1:

50→C:

12345→J

"RESETPW"?

I:

I=J=>500→DimZ  为数据库增加额外变量500个,在SET、SETPFDYS程序根据实际再增减变量以保证不浪费内存

50→Z[C+22]:

本程序设置变量个数目前50个刚刚够用。

"PASSWORDS"?

I:

I→Z[C+39]     重设要素保护密码

Cls:

Stop

FileName:

DATLOCK     要素保护密码确定认程序

Cls:

Norm1:

50→C

"PASSWORDS"?

J:

Cls:

J≠Z[C+39]=>Stop

FileName:

SHELL(外壳程序)

50→C   ;在扩充变量预留前50个给别的程序用。

如不够就适量加大。

RESET,SHELL,SET,SETPFDYS,这几个程序中C值必需一致

Norm1

Z[C+23]→N 当前分段要素N坐标

Z[C+24]→E 当前分段要素E坐标

Z[C+25]→M 当前分段要素起点桩号

Z[C+26]→H 当前分段要素起点方位角(正北)单位:

弧度

Z[C+27]→A 当前分段要素起点曲率有左偏负右偏正(注意不是半径)

Z[C+28]→R 当前分段要素终点曲率有左偏负右偏正(注意不是半径)

Z[C+29]→L 当前分段要素长度

Z[C+3]→W  斜桩角度

LbiS

Prog"PROGMODE" ;进入模式功能选择

LbiA

Deg:

Norm1:

Cls

Z[C+1]→G:

"ZH"?

G   ;桩求桩号

IfG=-1:

ThenProg"WORK-SET":

GotoS:

IfEnd   进入工作设置

G→Z[C+1]    

Z[C+2]→B:

"JL"?

B:

B→Z[C+2]    ;B横向距离,左正右负

LbiB

Prog"ZBJS"    ;坐标正算

Fix3:

Cls           ;设置三位小数

"ZH=":

Locate4,1,G    ;第一行显示桩号

"X=":

Locate3,2,X  ;第二行显示X(N)坐标

"Y=":

Locate3,3,Y    ;第三行显示Y(E)坐标

Prog"GCJS"    ;高程计算

"Z":

Locate2,4,Z+Z[C+41]    ;第四行显示Z坐标

Locate10,4,B        ;第四行显示横向距离

0→I

Do:

I+1→I:

I=1000=>Goto1:

LpWhileNot(Getkey=57OrGetkey=27OrGetkey=26);锁定键盘,并在几十秒后自动返回

Getkey=57=>Goto1

IfGetkey=26=>Prog"SDFY":

GotoB:

EndIf

Pol(Z[C+35]-X,Z[C+36]-Y)

Cls:

"DL":

Locate3,1,I:

Locate12,1,Z[C+45]

"→":

Locate3,2,B:

Locate12,2,Z[C+49]

"FWJ"

J<0=>J+360→J:

J◤DMS◢

J→Z[C+46]

I→Z[C+47]

Goto1

 

 

FileName:

SDFY隧道放样

Cls

Z[C+2]→V

Z[C+41]→D

Z[C+43]→I:

"DQD-Z"?

I:

I→Z[C+43]

Z[C+42]→J:

"R"?

J:

J→Z[C+42]

Z[C+40]→K:

"R-DL"?

K:

K→Z[C+40]

Abs(V-K)→P

√(P2+(I-Z-D)2)→U    计算实际半径

Fix3:

Cls           ;设置三位小数

"ZH=":

Locate4,1,G

"R":

Locate2,2,U    

Locate10,2,U-J

IfI-Z-D-J>0:

ThenI-Z-D-√(J2-P2)→P:

0→O

ElseIfP-J>0:

ThenP-√(J2-(I-Z-D)2)→O:

0→P

ElseP-√(J2-(I-Z-D)2)→O:

I-Z-D-√(J2-P2)→P

IfEnd:

IfEnd

"H":

Locate2,3,O    

Locate8,3,"V"

Locate9,3,P

Locate1,4,Z+D

Locate9,4,I

0→T

Do:

T+1→T:

T=1000=>Return:

LpWhileNot(Getkey=57OrGetkey=27);锁定键盘,并在几十秒后自动返回

Getkey=57=>Return

IfV-K>0:

ThenV-O→B:

ElseV+O→B:

IfEnd

 

FileName:

ZBJS 坐标计算程序

Prog"READDAT"

Rad

G-M→Q

IFAR=0:

ThenIfA=R:

Then1→J:

Else3→J:

IfEnd:

ElseIfA=R:

Then2→J:

Else3→J:

IfEnd:

IfEnd判断线元类型

IfJ=1:

ThenH→F:

N+QCos(H)→X:

E+QSin(H)→Y:

IfEnd  直线段直接计算

IfJ=2:

ThenH+QR→F:

Rec(Abs(2Sin(Abs(0.5QR))÷R),H+QR÷2):

N+I→X:

E+J→Y:

IfEnd 圆弧段直接计算

IfJ=3:

ThenGoto5:

IfEnd

X+BCos(F+W)→X

Y+BSin(F+W)→Y

Deg:

Return

Lbi5    用五点通用坐标计算计算缓和段

0.5(R-A)÷L→K

AQ→I

KQ2→J

0.0469100770→P:

H+IP+JP2→O

0.2307653449→P:

H+IP+JP2→T

0.5→P        :

H+IP+JP2→D

0.7692346551→P:

H+IP+JP2→F

0.9530899230→P:

H+IP+JP2→P

0.1184634425→I

0.2393143352→J

0.2844444444→Y

N+Q(ICos(O)+JCos(T)+YCos(D)+JCos(F)+ICos(P))→X

E+Q(ISin(O)+JSin(T)+YSin(D)+JSin(F)+ISin(P))→Y

H+AQ+KQ2→F

X+BCos(F+W)→X

Y+BSin(F+W)→Y

Deg:

Return

FileName:

TURNZH(坐标反算)

Prog"INNEZ"

Z[C+37]→U

Z[C+38]→V

0→B:

M+L÷2→G:

Prog"ZBJS"

LbiS:

Rad

U-X→I:

V-Y→J

IfI=0AndJ=0:

ThenGotoA:

IfEnd

Pol(I,J)

LbiA:

Rec(I,J-F)

G+I→G:

IFAbs(I)>0.0001:

ThenProg"ZBJS":

GotoS↙

J→B

G→Z[C+1]

J→Z[C+2]

Prog"GCJS"

FileName:

INNEZ实测坐标输入程序

LblS:

Norm1:

Cls

Z[C+50]=2=>Goto1

Z[C+37]→I

I<0=>Goto1

"DQD-N"?

I    输入待求点N坐标

I<0=>Goto1

I→Z[C+37]

Z[C+38]→I:

"DQD-E"?

I   输入待求点E坐标

I<0=>Goto1

I→Z[C+38]

Z[C+43]→I:

"DQD-Z"?

I 输入实测高程

I<0=>Goto1

I→Z[C+43]    

Return

Lbi1

I=-1=>Then2→Z[C+50]

IfI=-2:

ThenProg"WORK-SET":

GotoS:

IfEnd   进入工作设置

Prog"INFWJDLDH"

Z[C+50]=1=>GotoS

Return

 

FileName:

INFWJDLDH   实测坐标(用方位角,距离,高差)输入程序

LbiS:

Deg:

Norm1:

Cls

Z[C+46]→J:

"DQD-FWJ"?

J

J<0=>Goto1

J→Z[C+46]

Z[C+47]→I:

"DQD-DL"?

I:

I→Z[C+47]

Z[C+48]→K:

"DQD-DZ"?

K:

K→Z[C+48]

Z[C+49]→P:

"RHT"?

P:

P→Z[C+49]

Rec(I,J)

Z[C+35]+I→Z[C+37]

Z[C+36]+J→Z[C+38]

Z[C+44]+Z[C+45]+K-P→Z[C+43]

Return

Lbi1

IfJ=-2:

ThenProg"WORK-SET":

GotoS:

IfEnd     进入工作设置

1→Z[C+50]

Return

 

FileName:

WORK-SET测站设置程序

Norm1:

Cls

50→C

Z[C+32]→I:

"DAT123"?

I:

I→Z[C+32] 平曲线要素数库类型选择1为内置式,2文件式,3实时输入(查看当前要素值)

Z[C+4]→I:

"0123"?

I:

I→Z[C+4]  选择本程序模式0为坐标正算,1坐标反算,2横向边仰坡放样,3,纵向边仰坡放样(隧道进出口用到)

Z[C+41]→I:

"GC-DH"?

I:

I→Z[C+41]    放样点高差常数

Z[C+35]→I:

"STATION-N"?

I:

I→Z[C+35]     设置测站N坐标

Z[C+36]→I:

"STATION-E"?

I:

I→Z[C+36]     设置测站E坐标

Z[C+44]→I:

"STATION-Z"?

I:

I→Z[C+44]   设置测站Z坐标

Z[C+45]→I:

"STATION-HI"?

I:

I→Z[C+45]    设置仪高

Cls

FileName:

PROGMODE程序功能模式选择

Z[C+4]→I

I=0=>Return  ;正算模式

I=1=>Prog"TURNZH"     ;反算模式

I=2=>Prog"HXBYP"    ;横向边仰坡放样模式

I=3=>Prog"ZXBYP" ;纵向边仰坡放样模式

 

FileName:

HXBYP  横向边仰坡放样程序

Cls:

Norm1

Z[C+40]→I:

"QPD-DL"?

I:

I→Z[C+40]   输入起坡点与中桩距离常数

Z[C+41]→I:

"QPD-DZ"?

I:

I→Z[C+41]      输入起坡点与中桩高差常数

Z[C+42]→I:

"i"?

I:

I→Z[C+42]           输入边仰坡坡度,左仰坡(路堑)为正,右仰坡(路堑)为负,左边坡为负,右边坡为正

Cls:

Z[C+43]→I:

"DQD-Z"?

I:

I→Z[C+43]    输入实测高程

Prog"TURNZH"

Prog"GCJS"

(Z[C+43]-Z-Z[C+41])Z[C+42]+Z[C+40]→B

Fix3:

B-Z[C+2]◢显示与设计位置的偏差

B→Z[C+2]

FileName:

ZXBYP 纵向仰坡放样程序(隧道进口使用)

Cls:

Norm1:

Z[C+33]→I:

"QPD-ZH"?

I:

I→Z[C+33]   输入起坡点桩号

Z[C+34]→I:

"QPD-Z"?

I:

I→Z[C+34]      输入起坡点高程

Z[C+42]→I:

"i"?

I:

I→Z[C+42]           仰坡时(隧道进出口仰坡,进口为正,出口为负)

Cls:

Z[C+43]→I:

"DQD-Z"?

I:

I→Z[C+43]    输入实测高程

Prog"TURNZH"

Z[C+42](Z[C+43]-Z[C+34])+Z[C+33]→G

Fix3:

G-Z[C+1]◢显示与设计位置的偏差

G→Z[C+1]

FileName:

SET设置程序

LbiS

Norm1

50→C

50→Z[C+22]本程序设置变量个数目前50个刚刚够用。

0→K

Z[C+5]→I:

"1Or2"?

I:

I→Z[C+5]  ;选择1线或者2线

180Z[C+3]÷π→J:

"XZJJ"?

J:

Jπ÷180→Z[C+3]      ;斜桩夹角

IfI=1:

ThenZ[C+8]→Z[C+6]:

Z[C+9]→Z[C+7]

Z[C+12]→Z[C+16]:

Z[C+13]→Z[C+17]:

Z[C+18]→Z[C+20]

ElseZ[C+10]→Z[C+6]:

Z[C+11]→Z[C+7]

Z[C+14]→Z[C+16]:

Z[C+15]→Z[C+17]:

Z[C+19]→Z[C+20]

IfEnd 

Z[C+7]+3→Z[C+31]

0→I:

"1PQX,2SQX,3YSDS"?

I  ;1输入平曲线要素,2输入竖曲线要素,3输入1、2线夹平竖曲线交点(变坡点)数量以让程序规划内存建立要素数据为,其它值退出本程序

I≠0=>Prog"DATLOCK"

I=1=>Goto1:

I=2=>Goto2:

I=3=>Goto3

Prog"SETPFDYS"

Stop

Lbi1                 ;平曲线要素输入部分

Z[C+6]→D

-1→Z[D+3]

For1→JToZ[C+16]

Cls:

"PQX":

Locate9,1,J

Z[D+1]→I:

"N"?

I:

I→Z[D+1]     ;请输入N坐标

Z[D+2]→I:

"E"?

I:

I→Z[D+2]   ;请输入E坐标

Z[D+3]→I:

"R"?

I:

I→Z[D+3]     ;请输入半径R

Z[D+4]→I:

"LS1"?

I:

I→Z[D+4]  ;请输入缓和曲线1长度

Z[D+5]→I:

"LS2"?

I:

I→Z[D+5]       ;请输入缓和曲线2长度

D+5→D

Next

1→Z[D-2]

GotoS

Lbi2                              ;竖曲线要素输入部分

Z[C+7]→D

-1→Z[D+3]

For1→JToZ[C+17]

Cls:

"SQX":

Locate9,1,J

Z[D+1]→I:

"BPDZH"?

I:

I→Z[D+1]    ;请输入变坡点桩号

Z[D+2]→I:

"BPDGC"?

I:

I→Z[D+2]  ;请输入变坡点高程

Z[D+3]→I:

"R"?

I:

I→Z[D+3]        ;请输入半径R

D+3→D

Next

1→Z[D]

GotoS

Lbi3                            ;要素点数输入部分

Z[C+12]→I:

"1PQXDS"?

I:

I→Z[C+12]  ;输入1线平曲线点数,最小值为3

Z[C+13]→I:

"1SQXDS"?

I:

I→Z[C+13]  ;输入1线竖曲线点数,最小值为3

Z[C+18]→I:

"1JDZH"?

I:

I→Z[C+18]    ;输入1线平曲线第一个交点的交点桩号

Z[C+14]→I:

"2PQXDS"?

I:

I→Z[C+14]  ;输入2线平曲线点数,最小值为3

Z[C+15]→I:

"2SQXDS"?

I:

I→Z[C+15]  ;输入2线竖曲线点数,最小值为3

Z[C+19]→I:

"2JDZH"?

I:

I→Z[C+19]  ;输入2线平曲线第一个交点的交点桩号

C+Z[C+22]→Z[C+8]              1线路平曲线要素指针偏移基数

Z[C+8]+5Z[C+12]→Z[C+9]             1线路竖曲线要素指针偏移基数

Z[C+9]+3Z[C+13]→Z[C+10]        2线路平曲线要素指针偏移基数       

Z[C+10]+5Z[C+14]→Z[C+11]     2线路竖曲线要素指针偏移基数

Z[C+11]+3Z[C+15]→Z[C+21]    要素数据库结束指针

Z[C+21]+1→Z[C+30]

Z[C+21]→DimZ                增加额外变量

-1→K

GotoS

 

 

FileName:

SETPFDYS  交点要素=>分段要素

Norm1

50→C

Rad

Z[C+6]+5→D

Z[C+21]+1→F

F+6→DimZ

-1→Z[F]         设置分段要素开始标志

Z[C+20]→V        ;从数据库读入当前线第一个平曲线交点桩号

0→G

Pol(Z[D+1]-Z[D-4],Z[D+2]-Z[D-3])  ;计算第一条直线的距离I,计算方位角J

J→H 

Z[D-4]→Z[F+1]         直线段

Z[D-3]→Z[F+2]

V-I→Z[F+3]

For1→GToZ[C+16]-2 

Pol(Z[D+1]-Z[D-4],Z[D+2]-Z[D-3])   ;计算第本交点与下一交点的距离I,计算方位角J

J→H

Pol(Z[D+6]-Z[D+1],Z[D+7]-Z[D+2])

I→W:

J-H→K                            ;计算转角K,负值是左转角,正值是右转角

IFAbs(K)>π:

ThenIfK>0:

ThenK-2π→K:

ElseK+2π→K:

IfEnd:

IfEnd

Z[D+3]→R  ;从数据库读入半径R

Z[D+4]→L  ;从数据库读入缓和曲线1长度

Z[D+5]→M  ;从数据库读入缓和曲线2长度

L÷2÷R→B  ;计算缓和曲线1的B0角

M÷2÷R→O  ;计算缓和曲线2的B0角

(Abs(K)-B-O)R→P  ;计算圆曲线长度

L2÷24÷R-L^(4)÷2384÷R^(3)→Q     ;内移值计算方法2

L÷2-L^(3)÷240÷R2→S    ;切线增长值计算方法2

M2÷24÷R-M^(4)÷2384÷R^(3)→J     ;内移值计算方法2

M÷2-M^(3)÷240÷R2→I    ;切线增长值计算方法2

Abs(π÷2-Abs(K))→A

Rtan(Abs(K÷2))+S+J÷Cos(A)-QTan(A)→T ;计算切线1

Rtan(Abs(K÷2))+I+Q÷Cos(A)-JTan(A)→U ;计算切线2

H<0=>H+2π→H

1→A

K<0=>-1→A

H→Z[F+4]

0→Z[F+5]

0→Z[F+6]

F+6→F

F+6→DimZ

Rec(T,H)        缓和段1

Z[D+1]-I→N

Z[D+2]-J→E

N→Z[F+1]

E→Z[F+2]

V-T→Z[F+3]

L=0=>GotoA

H→Z[F+4]

0→Z[F+5]

A÷R→Z[F+6]

F+6→F

F+6→DimZ

LbiA          圆弧段

0→I:

0→J

L=0=>GotoB

Pol(L-L^(3)÷40÷R2,L2÷6÷R-L^(4)÷336÷R^(4))

LbiB

Rec(I,H+AJ)

N+I→N

E+J→E

N→Z[F+1]

E→Z[F+2]

V-T+L→Z[F+3]

H+AB→Z[F+4]

A÷R→Z[F+5]

A÷R→Z[F+6]

F+6→F

F+6→DimZ

M=0=>GotoC       缓和段2

Rec(2RSin(0.5P÷R),H+AB+AP÷R÷2)

N+I→N

E+J→E

N→Z[F+1]

E→Z[F+2]

V-T+L+P→Z[F+3]

H+AB+AP÷R→Z[F+4]

A÷R→Z[F+5]

0→Z[F+6]

F+6→F

F+6→DimZ

LbiC

Rec(U,H+K)      

Z[D+1]+I→Z[F+1]

Z[D+2]+J→Z[F+2]

V-T+L+P+M→Z[F+3]

V-T+L+P+M-U+W→V

D+5→D

Next

H+K→Z[F+4]

0→Z[F+5]

0→Z[F+6]

F+9→DimZ

1→Z[F+7]

V→Z[F+9]  要素终点桩号

Deg

FileName:

READDAT

Z[C+32]→I

I=3=>Prog"READDAT3"

If GM+L :

Then;验证要素是否可用,否则重设要素

I=1=>Prog"READDAT1"

I=2=>Prog"READDAT2"

Prog"READDAT3" 

IfEnd

FileName:

READDAT1平曲线分段要素读取程序1

Z[C+30]→F

0→J

Lbi1          搜索要素

IfG

Then

-1=Z[F]=>GotoE:

F-6→F:

-1→J:

Goto1

Else1=Z[F+1]=>GotoE:

-1=J=>Goto2:

1→J:

F+6→F:

Goto1

IfEnd

Lbi2

F→Z[C+30]

Z[F+1]→Z[C+23] 当前分段要素N坐标

Z[F+2]→Z[C+24] 当前分段要素E坐标

Z[F+3]→Z[C+25] 当前分段要素起点桩号

Z[F+4]→[C+26] 当前分段要素起点方位角(正北)

Z[F+5]→Z[C+27] 当前分段要素起点曲率有左偏负右偏正(注意不半径)

Z[F+6]→Z[C+28] 当前分段要素终点曲率有左偏负右偏正(注意不半径)

Z[F+9]-Z[F+3]→Z[C+29] 当前分段要素长度

Return

LbiE

Cls

"ERROR"

Stop

READDAT2 文件请输入内容为以下内容以便测试结果与本文一致。

π÷180→J

Goto1

Lbi1

IfG<30008.396:

ThenCls:

Stop:

IfEnd↙;判断待求桩号是否小于本要素起点,如小于就停止运行程序

IfG<30661.038(终点里程):

Then2851422.090(起点X)→N:

513896.440(起点Y)→E:

30008.396→M:

213°32′52″J(起点方位角)→H:

0(起点曲率)→A:

0(终点曲率)→R:

652.642起点至终点长度→L:

GotoE:

IfEnd↙

IfG<30921.038:

Then2850878.162→N:

513535.768→E:

30661.038→M:

213°32′52″J→H:

0→A:

1÷1300→R:

260→L:

GotoE:

IfEnd↙

IfG<31426.367:

Then2850666.478→N:

513385.004→E:

30921.038→M:

219°16′39″J→H:

1÷1300→A:

1÷1300→R:

505.328→L:

GotoE:

IfEnd↙

IfG<31686.367:

Then2850346.483→N:

512998.015→E:

31426.367→M:

241°32′56″J→H:

1÷1300→A:

0→R:

260→L:

GotoE:

IfEnd↙

IfG>31686.367:

ThenCls:

Stop:

IfEnd↙;判断待求桩号是否大于本要素终点,如大于就停止运行程序

LbiE

N→Z[C+23]:

E→Z[C+24]:

M→Z[C+25]:

H→Z[C+26]:

A→Z[C+27]:

R→Z[C+28]:

L→Z[C+29]

FileName:

READ

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 专升本

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1