资源描述:
《Excel竖曲线计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、利用Excel表格进行全线线路竖曲线的统一计算高速公路纵断面线型比较复杂,竖曲线数量比较多。由于相当多的竖曲线分段造成了设计高程计算的相对困难,为了方便直接根据里程桩号计算设计高程,遂编制此计算程序。程序原理:1、根据设计图建立竖曲线参数库;2、根据输入里程智能判断该里程位于何段竖曲线上;3、根据得到的竖曲线分段标志调取该分段的曲线参数到计算表格中;4、把各曲线参数带入公式进行竖曲线高程的计算;5、对程序进行优化和简化,去掉中间环节,进行直接计算;6、防止计算过程中的误操作,对计算表进行相应的保护。竖曲线的高程计算原理
2、公式:H=G+B*A+(-1)^J*X2÷(2R)H:计算里程的设计高程K:计算点里程D:竖曲线交点里程G:竖曲线交点的高程R:竖曲线半径T:切线长M:前坡度I1P:后坡度I2A:A=Abs(K-D)X:A>T=>X=0;AX=T-AJ:M-P<0=>J=0;M-P>=0=>J=1B:K<=D=>B=-M;K>D=>B=P程序特色:1、可以无限添加竖曲线,竖曲线数据库不限制竖曲线条数;2、直接输入里程就可以计算设计高程,不需考虑该里程所处的竖曲线分段;3、对计算公式进行保护,表格中不显示公式,不会导致公式被错误
3、修改或恶意编辑。程序的具体编制步骤:1、新建Excel工作薄,对第一第二工作表重新命名为“参数库”和“计算程序”,根据设计图建立本标段线路竖曲线的参数库,需要以下条目:(1)、竖曲线编号;(2)、竖曲线的前后坡度(I1、I2)不需要把坡度转换为小数;(3)、竖曲线半径、切线长(不需要考虑是凸型或凹型);(4)、竖曲线交点里程、交点高程;(5)、竖曲线起点里程、终点里程(终点里程不是必要参数,只作为复核检测用);如图1所示:图12、进行计算准备:(1)、根据输入里程判断该里程所处的曲线编号:需要使用lookup函数,函数
4、公式为“LOOKUP(A2,参数库!H3:H25,参数库!A3:A25)”。如图2所示:里程为K15+631的桩号位于第11个编号的竖曲线处,可以参照图1进行对照(2)、在工作表“程序计算”中对应“参数库”相应的格式建立表格根据判断得出的竖曲线编号,把相应编号的各参数调入工作表“程序计算”,需要使用vlookup函数,例如:第四列调取坡度I1函数公式为“VLOOKUP(C2,参数库!A1:I25,2)”调取交点高程的函数公式为“VLOOKUP(C2,参数库!A1:I25,7)”结果出来可以参照图1进行对照。如图3所示:
5、(3)、现在计算该里程设计高程所需要的参数已经具备,可以编制公式进行计算了,根据竖曲线高程计算的原理公式,把单元格数据套入公式:公式为:H=G+B*A+(-1)^J*X2÷(2R)其中B的函数公式为:IF(K<=D,-M,P)转化为表格编号就是IF(A2<=H2,-1*D2/100,E2/100)A的函数公式为ABS(A2-H2)X的函数公式位IF(ABS(A2-H2)>G2,0,(G2-ABS(A2-H2)))图2图3J的函数公式为IF(D2/100-E2/100<0,0,1)H=G+B*A+(-1)^J*X2÷(2
6、R)=I2+IF(A2<=H2,-1*D2/100,E2/100)*ABS(A2-H2)+POWER((-1),IF(D2/100-E2/100<0,0,1))*POWER(IF(ABS(A2-H2)>G2,0,(G2-ABS(A2-H2))),2)/2/F2现在把H的计算函数输入B2单元格,看看结果是不是出来了,这时候可以把这个结果和计算器计算出来的结果进行对照。如图4所示:图4万事俱备,现在开始计算,下拉B2单元格,竟然出错,如图5图5解决办法就是同时选择B2直到后面的K2,然后再下拉,下拉前一定要把引用的“参数库
7、”中的单元格进行锁定,如图6、7。这样就显得复杂了点,现在开始简化计算程序,C2到K2单元格都是其中间作用的,可以直接套用到高程的计算公式中,分别把C2到K2单元格所对应的公式替换到单元格B2,得到最终公式:=VLOOKUP(C2,参数库!$A$1:$I$25,7)+IF(A2<=VLOOKUP(C2,参数库!$A$1:$I$25,6),-1*VLOOKUP(C2,参数库!$A$1:$I$25,2)/100,VLOOKUP(C2,参数库!$A$1:$I$25,3)/100)*ABS(A2-VLOOKUP(C2,参数库!
8、$A$1:$I$25,6))+POWER((-1),IF(VLOOKUP(C2,参数库!$A$1:$I$25,2)/100-VLOOKUP(C2,参数库!$A$1:$I$25,3)/100<0,0,1))*POWER(IF(ABS(A2-VLOOKUP(C2,参数库!$A$1:$I$25,6))>VLOOKUP(C2,参数库!$A