基于VB的道路曲线程序设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于VB道路曲线放样程序设计1程序设计界面及使用说明本程序本文即在实践基础上编写了基于VB的道路放样程序,该程序可以在已知道路曲线基本要素的情况下,计算出道路中桩和边桩的坐标数据,将这些数据直接导入全站仪或GPS中,直接利用点放样的功能即可将道路的中桩或边桩在实地标定出来。设计界面包括以下几种控件:Label(标签)、TextBox(文本框)、Frame(框架)、CommandButton(命令按钮)、optionbutton(选择按钮)。应用本程序计算时,可以选择是单点计算或者连续点计算。选择不同的计算方式时,需要输入的已知数据时不同的。在程序运行时首先显示程序登陆界面如下图3-2所示,输入登录密码后页面自动跳转到程序计算界面如下图3-3所示,该界面会将部分控件暂时隐藏,在选择相应的控件时会逐一显示所有控件。程序登陆界面2模式选择本文主要编写了两个程序,一个是道路单圆曲线放样程序,另一个是道路缓和曲线放样程序,当我们使用程序时,在这里需要根据实际情况选择计算模式,然后确定。3.4.2单圆曲线坐标法计算程序单圆曲线计算界面3程序说明:首先要进行曲线数据输入,要输入曲线半径R,交点里程,桩距,交点坐标,两转点坐标,根据这些已知数据,可以计算出曲线要素,其中包括圆曲线切线长T,曲线长L,曲线外矢距E,还有切曲差q,根据以上已知数据和计算结果,可以计算出各主点里程及坐标。根据给出的两转点坐标,我们知道曲线计算区间,而后可计算出所有的放样数据。因为现在公路放样主要用的是全站仪,为了方便,可以把放样数据的计算结果直接以TXT格式保存,当我们工作需要时,直接可以导入到全站仪中。计算结果:计算结果图此图便是程序计算结果,其中包括曲线数据输入,曲线要素计算,计算主点里程及坐标,还有最后的放样数据,界面清晰简洁明了,程序操作简单方便。主要代码PrivateSubCommand1_Click()DimYJDAsDouble,XJDAsDouble,XZD1AsDouble,YZD1AsDouble,XZD2AsDouble,YZD2AsDoubleDimXZYAsDouble,YZYAsDouble,XYZAsDouble,YYZAsDouble,XQZAsDouble,YQZ4AsDoubleDimXiAsDouble,YiAsDoubleDima1AsDouble,a2AsDouble,a3AsDouble,aAsDoubleDimLAsDouble,TAsDouble,EAsDouble,qAsDoubleDimZYLCAsDouble,YZLCAsDouble,QZLCAsDouble,JDLCAsDoubleDimRAsSingle,JJAsSingle,NAsSingle,SAsSingle,MAsDouble,OAsStringDimpiAsDoubleR=Val(Text1.Text)JDLC=Val(Text2.Text)JJ=Val(Text3.Text)N=1pi=3.1415926YJD=Val(Text5.Text)XJD=Val(Text4.Text)XZD1=Val(Text6.Text)YZD1=Val(Text7.Text)XZD2=Val(Text8.Text)YZD2=Val(Text9.Text)R=Val(Text1.Text)a1=Atn((YJD-YZD1)/(XJD-XZD1))a2=Atn((YZD2-YJD)/(XZD2-XJD))Ifa2-a10Thena=pi+a2-a1a3=a1-0.5*(pi-a)+piEndIfIfa2-a10Thena=a2-a1EndIfL=R*aT=R*Tan(a/2)E=R*(1/(Cos(a/2))-1)q=2*T-LZYLC=JDLC-TYZLC=ZYLC+LQZLC=YZLC-(L/2)XZY=XJD-T*Cos(a1)YZY=YJD-T*Sin(a1)XYZ=XJD+T*Cos(a2)5YYZ=YJD+T*Sin(a2)XQZ=XJD+E*Cos(a3)YQZ=YJD+E*Sin(a3)Text11.Text=Format(L,.000)Text10.Text=Format(T,.000)Text12.Text=Format(E,.000)Text13.Text=Format(q,.000)Text14.Text=K&(ZYLC\1000)&+&Format(ZYLC-(ZYLC\1000)*1000,.000)Text15.Text=K&(YZLC\1000)&+&Format(YZLC-(YZLC\1000)*1000,.000)Text16.Text=K&(QZLC\1000)&+&Format(QZLC-(QZLC\1000)*1000,.000)3.4.3缓和曲线极坐标法计输入界面程序说明:首先输入已知数据,曲线半径R,角度观测值,缓和曲线长,交点里程,然后单击计算里程数据按钮,曲线综合要素值(包括圆曲线切线长T,圆曲线长L,曲线外矢距E,切曲差q),各主点里程就会展现出来,当输入放样桩距,单击计算放样数据,缓和曲线各段中的详细放样数据就计算出来了,因为放样桩距不定,计算结果的多少就不一定,为了展示出所有的计算结果,这里使用List控件,但这也带来了不方便的结果,就是计算结果无法以txt的格式保存。6曲线要素及主点里程计算结果当计算工作开始时,依次输入已知数据,曲线半径R,角度观测值,缓和曲线长L0,交点里程,单击计算里程数据按钮,就可以得到曲线综合要素值和各主店的里程数据,如果想继续计算详细放样数据,输入放样桩距,单击计算放样桩距,如果不需要,单击返回按钮。如果不需要继续计算,直接单击返回按钮。输入放样桩距实际公路工程放样中,为了放出详细桩位,需要计算详细的放样数据,包7括每个桩点的偏角和距直缓点的距离(因为放样时,全站仪架设在直缓点),此时,直接输入放样桩距,然后单击计算放样数据按钮,详细的放样数据就计算出来了。放样数据计算结果图此图完整的展现了从已知数据输入(曲线半径R,角度观测值,缓和曲线长L0,交点里程)到放样数据(zh-hy的放样数据,hy-yh的放样数据,hz-yh的放样数据)结果的展示,在此过程中还计算出了曲线综合要素值。这里说明一点前面的单圆曲线程序中结果放在一个Label中,而这里放在了3个List中,是因为缓和曲线的个计算单位的数学模型不同,也是为了清晰明了的展示计算结果。计算结束,单击返回按钮,回到上一层。主要代码DimRAsSingle,aAsSingle,a1AsInteger,a2AsInteger,a3AsSingle,L0AsSingle,tAsSingle,LAsSingle,eAsSingle,qAsSingle,aaAsSingleDimllAsInteger,tt(1To100)AsSingleDimmAsDouble,pAsDouble,bAsDouble,jdAsSingle,zhAsSingle,hyAsSingle,qzAsSingle,hzAsSingle,yhAsSingleConstpi=3.1415926,ff=206265PrivateSubCommand1_Click()R=Val(Text1.Text)a1=Val(Text2.Text)a2=Val(Text15.Text)a3=Val(Text16.Text)8a=a1+a2/60+a3/3600L0=Val(Text3.Text)m=L0/2-L0^3/(240*R^2)p=L0^2/(24*R)b=L0*180/(2*R*pi)t=(R+p)*Abs(Tan(a/2*pi/180))+mL=pi/180*R*(a-2*b)+2*L0e=(R+p)/Abs(Cos(a/2*pi/180))-Rq=2*t-LText4.Text=tText5.Text=LText6.Text=eText7.Text=qjd=Val(Text8.Text)zh=jd-thy=zh+L0qz=zh+L/2hz=zh+Lyh=hz-L0aa=jd+t-qIf(aahz)ThenMsgBox请确认计算正确,0,48,0,数据检查ExitSubElseText9.Text=zhText10.Text=hyText11.Text=qzText12.Text=hzText13.Text=yhEndIfEndSub数据的导出与保存计算完成后,点击界面保存按钮,数据会自动保存在(D:\放样数据),生成txt格式。93-10保存结果图计算结束后,可以打开D盘,查看计算结果。附录程序代码1.单圆曲线PrivateSubCommand1_Click()DimYJDAsDouble,XJDAsDouble,XZD1AsDouble,YZD1AsDouble,XZD2AsDouble,YZD2AsDoubleDimXZYAsDouble,YZYAsDouble,XYZAsDouble,YYZAsDouble,XQZAsDouble,YQZAsDoubleDimXiAsDouble,YiAsDoubleDima1AsDouble,a2AsDouble,a3AsDouble,aAsDoubleDimLAsDouble,TAsDouble,EAsDouble,qAsDoubleDimZYLCAsDouble,YZLCAsDouble,QZLCAsDouble,JDLCAsDoubleDimRAsSingle,JJAsSingle,NAsSingle,SAsSingle,MAsDouble,OAsStringDimpiAsDoubleR=Val(Text1.Text)JDLC=Val(Text2.Text)JJ=Val(Text3.Text)10N=1pi=3.1415926YJD=Val(Text5.Text)XJD=Val(Text4.Text)XZD1=Val(Text6.Text)YZD1=Val(Text7.Text)XZD2=Val(Text8.Text)YZD2=Val(Text9.Text)R=Val(Text1.Text)a1=Atn((YJD-YZD1)/(XJD-XZD1))a2=Atn((YZD2-YJD)/(XZD2-XJD))Ifa2-a10Thena=pi+a2-a1a3=a1-0.5*(pi-a)+piEndIfIfa2-a10Thena=a2-a1EndIfL=R*aT=R*Tan(a/2)E=R*(1/(Cos(a/2))-1)q=2*T-LZYLC=JDLC-TYZLC=ZYLC+LQZLC=YZLC-(L/2)XZY=XJD-T*Cos(a1)YZY=YJD-T*Sin(a1)XYZ=XJD+T*Cos(a2)YYZ=YJD+T*Sin(a2)XQZ=XJD+E*Cos(a3)YQZ=YJD+E*Sin(a3)Text11.Text=Format(L,.000)Text10.Text=Format(T,.000)Text12.Text=Format(E,.000)Text13.Text=Format(q,.000)Text14.Text=K&(ZYLC\1000)&+&Format(ZYLC-(ZYLC\1000)*1000,.000)Text15.Text=K&(YZLC\1000)&+&Format(YZLC-(YZLC\1000)*1000,.000)Text16.Text=K&(QZLC\1000)&+&Format(QZLC-(QZLC\1000)*1000,.000)11Text17.Text=Format(XZY,.000)Text18.Text=Format(YZY,.000)Text19.Text=Format(XYZ,.000)Text20.Text=Format(YYZ,.000)Text21.Text=Format(XQZ,.000)Text22.Text=Format(YQZ,.00

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功