
| 卡西欧5800计算器道路程序精简版 |
(坐标正反算,程序模块化设计,可自行升级,扩展功能) 建议录入程序次序 KEYLOCK 锁键程序 可测试能正常运行 1 DISPLAYXYZ 主程序 可测试能正常运行 2 READDAT 要素数据库文件 (请改为自已路线的要素) 3 ZBJS 坐标计算程序 4 INZHANDZBJS 桩号、横距输入程序 5 TURNZH 坐标反算 6 INNEZ 实测坐标输入程序 7 如正确输入以上程序,运行DISPLAYXYZ,按“0”进行坐标反算,按“.”进行坐标正算。 技术支持:Q285507730 FileName:INZHANDZBJS //:桩号、横距输入程序:// Lbl S Cls:Norm 1 "ZH"?G ;桩求桩号 "JL"?B ;输入横向距离 "JJ"?W ;输入斜桩角,一般为90 Wπ÷180→W Prog"ZBJS" ;080702晚添加 Return FileName:ZBJS 坐标计算程序 Prog"READDAT" Rad G-M→Q 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.95309230→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 Return FileName:TURNZH(坐标反算) Prog"INNEZ" 0→B:M+L÷2→G:Prog"ZBJS" Lbi S:Rad U-X→I:V-Y→J If I=0 And J=0 :Then Goto A:IfEnd Pol(I,J) Lbi A:Rec(I,J-F) G+I→G:IF Abs(I)>0.0001 :Then Prog"ZBJS":Goto S↙ J→B FileName:INNEZ 实测坐标输入程序 Lbl S Norm 1:Cls "DQD-N"?U 输入待求点N坐标 "DQD-E"?V 输入待求点E坐标 Return FileName:KEYLOCK //:本程序用于锁定键盘大部分按键,设定时间内无按键则反回默认健。只有“0”,“.”,“x10x”,“(-)”这四个键可用,为了更方便说明程序,以后将分别定义这四个键为热键 “0” ===F1 “.” ===F2 “x10x” ===F3 “(-)” ===F4 Exit 退出程序 :// 1000→J ;无按键时间,5800设1000时大约为50秒。 Lbl S 0→I Do:I+1→I:I≥J=>Goto E:LpWhile Not(Getkey=25 Or Getkey=26 OrGetkey=27 OrGetkey=57 OrGetkey=73) Getkey=73=>Stop ;停止全部程序 Getkey=0=>Goto S Getkey→I:Return Lbl E 57→I:Retrutn ;默认按键值为F4 FileName:DISPLAYXYZ //:<主程序>,显示:桩号,N,E,Z,横向偏移。 热键功能 F1 快捷坐标反算 F2 快捷坐标正算 F3 F4 :// 7→DimZ Z[1]→N 当前分段要素N坐标 Z[2]→E 当前分段要素E坐标 Z[3]→M 当前分段要素起点桩号 Z[4]→H 当前分段要素起点方位角(正北)单位:弧度 Z[5]→A 当前分段要素起点曲率有左偏负右偏正(注意不是半径) Z[6]→R 当前分段要素终点曲率有左偏负右偏正(注意不是半径) Z[7]→L 当前分段要素长度 Lbl S:Cls:Fix 3 "ZH=":Locate 4,1,G "N=":Locate 3,2,X "E=":Locate 3,3,Y "Z":Locate 2,4,Z 注意,本程序无高程计算。所以这句无意义。 Locate 10,4,B Prog "KEYLOCK" If I=25:Then Prog "TURNZH":Goto S:IfEnd ;定义F1功能 If I=26:Then Prog "INZHANDZBJS":Goto S:IfEnd ;定义F2功能 Goto S FileName:READDAT 要素数据库文件 π÷180→J G Return Lbi 1 If G<30008.396:Then Cls:Stop:IfEnd↙ ;判断待求桩号是否小于本要素起点,如小于就停止运行程序 If G<30661.038(终点里程):Then 2851422.090(起点X)→N:5136.440(起点Y)→E:30008.396→M:213°32′52″J(起点方位角)→H:0 (起点曲率)→A:0(终点曲率)→R:652.2起点至终点长度→L:Goto E:IfEnd↙ If G<30921.038:Then 2850878.162→N:513535.768→E:30661.038→M:213°32′52″J→H:0→A:1÷1300→R:260→L:Goto E:IfEnd↙ If G<31426.367:Then 2850666.478→N:513385.004→E:30921.038→M:219°16′39″J→H:1÷1300→A:1÷1300→R:505.328→L:Goto E:IfEnd↙ If G<31686.367:Then 2850346.483→N:512998.015→E:31426.367→M:241°32′56″J→H:1÷1300→A:0→R:260→L:Goto E:IfEnd↙ If G>31686.367:Then Cls:Stop:IfEnd↙ ;判断待求桩号是否大于本要素终点,如大于就停止运行程序 Lbi E N→Z[1]:E→Z[1]:M→Z[3]:H→[4]:A→Z[5]:R→Z[6]:L→Z[7] ;记忆当前要素以免重复搜索 |
