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

上传人:b****7 文档编号:23801964 上传时间:2023-05-20 格式:DOCX 页数:20 大小:195.34KB
下载 相关 举报
基于VB的道路曲线程序设计.docx_第1页
第1页 / 共20页
基于VB的道路曲线程序设计.docx_第2页
第2页 / 共20页
基于VB的道路曲线程序设计.docx_第3页
第3页 / 共20页
基于VB的道路曲线程序设计.docx_第4页
第4页 / 共20页
基于VB的道路曲线程序设计.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

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

《基于VB的道路曲线程序设计.docx》由会员分享,可在线阅读,更多相关《基于VB的道路曲线程序设计.docx(20页珍藏版)》请在冰豆网上搜索。

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

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

VB

线放样程序设计

 

程序设计界面及使用说明

本程序本文即在实践基础上编写了基于VB的道路放样程序,该程序可以在已知道路曲线基本要素的悄况下,讣算出道路中桩和边桩的坐标数据,将这些数据直接导入全站仪或GPS中,直接利用点放样的功能即可将道路的中桩或边桩在实地标定出来。

设计界面包括以下儿种控件:

Label(标签)、TextBox(文本框)、Frame(框架)、CommandButton(命令按钮)、optionbutton(选择按钮)。

应用本程序计算时,可以选择是单点计算或者连续点计算。

选择不同的计算方式时,需要输入的已知数据时不同的。

在程序运行时首先显示程序登陆界面如下图3-2所示,输入登录密码后页面自动跳转到程序计算界面如下图3-3所示,该界面会将部分控件暂时隐藏,在选择相应的控件时会逐一显示所有控件。

程序登陆界而

「模式选择

«单圆曲线

r缓和曲线

II

模式选择

本文主要编写了两个程序,一个是道路单圆曲线放样程序,另一个是道路缓和曲线放样程序,当我们使用程序时,在这里需要根据实际悄况选择讣算模式,然后确定。

3.4.2单圆曲线坐标法计算

程序单圆曲线讣算界而

9

^0

程序说明:

首先要进行曲线数据输入,要输入曲线半径R,交点里程,桩距,交点坐标,两转点坐标,根据这些已知数据,可以计算出曲线要素,其中包括圆曲线切线长T,曲线长L,曲线外矢距E,还有切曲差q,根据以上已知数据和计算结果,可以计•算出各主点里程及坐标。

根据给出的两转点坐标,我们知道曲线计算区间,而后可计算出所有的放样数据。

因为现在公路放样主要用的是全站仪,为了方便,可以把放样数据的计算结果直接以TXT格式保存,当我们工作需要时,直接可以导入到全站仪中。

计算结果:

|

计算结果图

此图便是程序计算结果,其中包括曲线数据输入,曲线要素计算,计•算主点里程及坐标,还有最后的放样数据,界面清晰简洁明了,程序操作简单方便。

主要代码

PrivateSubCommandl_Click()

DimYJDAsDouble,XJDAsDouble,XZD1AsDouble,YZD1AsDouble,XZD2AsDouble,YZD2AsDouble

DimXZYAsDouble,YZYAsDouble.XYZAsDouble.YYZAsDouble,XQZAsDouble,YQZ

AsDouble

DimXiAsDouble,YiAsDouble

DimalAsDouble.a2AsDouble,a3AsDouble,aAsDouble

DimLAsDouble,TAsDouble,EAsDouble,qAsDouble

DimZYLCAsDouble,YZLCAsDouble,QZLCAsDouble.JDLCAsDouble

DimRAsSingle,JJAsSingle,NAsSingle,SAsSingle.MAsDouble,OAsString

DimpiAsDouble

R=VaI(Text1.Text)

JDLC=Val(Text2.Text)

JJ=VaI(Text3.Text)

N=1

pi=3.1415926

YJD=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(Textl.Text)

al=Atn((YJD-YZD1)/(XJD-XZDl))

a2=Atn((YZD2・YJD)/(XZD2-XJD))

Ifa2-al<0Then

a=pi+a2-al

a3=al・0.5*(pi-a)+pi

EndIf

Ifa2-al>0Then

a=a2-al

EndIf

L=R*a

T=R*Tan(a/2)

E=R*(l/(Cos(a/2))-1)

q=2*T・L

ZYLC=JDLC・T

YZLC=ZYLC+L

QZLC=YZLC-(L/2)

XZY=XJD-T*Cos(al)

YZY=YJD-T*Sin(al)

XYZ=XJD+T*Cos(a2)

YYZ=YJD+T*Sin(a2)

XQZ=XJD+E*Cos(a3)

YQZ=YJD+E*Sin(a3)

Text11.Text=Format(L,,r.000,r)

TextlO.Text=Format(T,M.OOOn)

Textl2.Text=Format(E,H.OOOM)

Text13.Text=Format(q,N.OOOn)

Textl4.Text=HKH&(ZYLC\1000)&H+H&Format(ZYLC-(ZYLC\1000)*1000,H.000M)

Text15.Text=HKM&(YZLC\1000)&M+H&Format(YZLC-(YZLC\1000)*1000,000”)

Textl6.Text=MKH&(QZLC\1000)&H+M&Format(QZLC-(QZLC\1000)*1000,”.000”)

3.4.3缓和曲线极坐标法计

输入界而

程序说明:

首先输入已知数据,曲线半径R,角度观测值,缓和曲线长,交点里程,然后单击计算里程数据按钮,曲线综合要素值(包括圆曲线切线长T,圆曲线长L,曲线外矢距E,切曲差q),各主点里程就会展现出来,当输入放样桩距,单击计算放样数据,缓和曲线各段中的详细放样数据就计算出来了,因为放样桩距不定,计算结果的多少就不一定,为了展示出所有的计算结果,这里使用List控件,但这也带来了不方便的结果,就是计算结果无法以txt的格式保存。

□回図

曲线要素及主点里程讣算结果

当计算工作开始时,依次输入已知数据,曲线半径R,角度观测值,缓和曲线长L0,交点里程,单击计算里程数据按钮,就可以得到曲线综合要素值和各主丿占的里程数据,如果想继续计算详细放样数据,输入放样桩距,单击计算放样桩距,如果不需要,单击返回按钮。

如果不需要继续计算,直接单击返回按钮。

输入放样桩距

实际公路工程放样中,为了放出详细桩位,需要计算详细的放样数据,包

6

括每个桩点的偏角和距直缓点的距离(因为放样时,全站仪架设在直缓点),此时,直接输入放样桩距,然后单击讣算放样数据按钮,详细的放样数据就计算出来了。

放样数据计算结果图

此图完整的展现了从已知数据输入(曲线半径R,角度观测值,缓和曲线长L0,交点里程)到放样数据(zh-hy的放样数据,hy-yh的放样数据,hz-yh的放样数据)结果的展示,在此过程中还计算出了曲线综合要素值。

这里说明一点前面的单圆曲线程序中结果放在一个Label中,而这里放在了3个List中,是因为缓和曲线的个计算单位的数学模型不同,也是为了清晰明了的展示讣算结果。

计算结束,单击返回按钮,回到上一层。

主要代码

DimRAsSingle,aAsSingle,alAsInteger,a2AsInteger,a3AsSingle,LOAsSingle,tAsSingle,LAsSingle,eAsSingle,qAsSingle,aaAsSingleDim11AsInteger,tt(1To100)AsSingle

DimmAsDouble,pAsDouble,bAsDouble,jdAsSingle,zhAsSingle,hyAsSingle,qzAsSingle,hzAsSingle^yhAsSingle

Constpi=3.1415926,ff=206265

PrivateSubCommandl_Click0

R=Vai(Textl.Text)

al=Vai(Text2.Text)

a2=Vai(Textl5.Text)

a3=Vai(Text16.Text)

 

a=al+a2/60+a3/3600

q=2*t-L

Text4・Text=t

Text5・Text=L

Text7・Text=q

=Vai(TextS.Text)

 

yh

二jd+t-q

(aa<>hz)Then

Else

Text9・Text=zh

Textl0.Text=hy

Textl1.Text=qz

Textl2.Text=hz

Textl3.Text=yh

EndIf

EndSub

数据的导出与保存

计算完成后,点击界面保存按钮,数据会自动保存在(D:

\放样数据),生成txt格式。

 

性号里程

K0-H384.384

X

13300.888

Y

13300.888

A-

K04-360

12977.954

13403.165

KO+-340

13088.843

13062.543

K0-1-320

13423.834

13028.053

KO+-300

13580.353

13301.732

KO-i-280

13406.129

13538.252

KO-t-260

13140.413

13479.086

KO+-240

13091.619

13233.215

KO-K220

13279.406

13101.995

K04-200

13456.500

13210.141

K04-180

13431.048

13394.302

KO-i-160

13272.725

13438.300

K04-140

13183.429

13326.932

K04-120

13241.080

13220.317

K04-100

13340.251

13230.826

K0-1-080

133S1.010

13306.406

KO-H060

13313.928

13339.106

K04-040

13285.961

13314.770

KO-H020

13300.534

13300.738

K0+000

13301.262

13320.500

K0+020

13265.038

13317.740

K0+040

13255.723

13261.988

MO

7

3-10保存结果图

计算结束后,可以打开D盘,查看计算结果。

附录

程序代码

1•单圆曲线

PrivateSubCommandl_Click()

DimYJDAsDouble,XJDAsDouble,XZD1AsDouble,YZD1AsDouble.XZD2AsDouble.YZD2AsDouble

DimXZYAsDouble,YZYAsDouble,XYZAsDouble.YYZAsDouble,XQZAsDouble.YQZAsDouble

DimXiAsDouble,YiAsDouble

DimalAsDouble.a2AsDouble.a3AsDouble,aAsDouble

DimLAsDouble.TAsDouble.EAsDouble,qAsDouble

DimZYLCAsDouble,YZLCAsDouble.QZLCAsDouble,JDLCAsDouble

DimRAsSingle,JJAsSingle,NAsSingle,SAsSingle,MAsDouble.OAsString

DimpiAsDouble

R=Val(Text1.Text)

JDLC=Val(Text2.Text)

JJ=Val(Text3.Texl)

N=1pi=3.1415926

YJD=Val(Text5.Text)

XJD=Val(Text4.Text)

XZD1=Val(Text6.Text)

YZD1=Val(Text7.Text)

XZD2=VaKText&Tex()

YZD2=Val(Text9.Text)

R=VaKText1.Text)

a1=Atn((YJD-YZD1)/(XJD・XZD1))

a2=Atn((YZD2-YJD)/(XZD2-XJD))

Ifa2-al<0Then

a=pi+a2-al

a3=a1・0.5*(pi・a)+pi

EndIf

Ifa2・al>0Then

a=a2・al

EndIf

L=R*a

T=R*Tan(a/2)

E=R*(l/(Cos(a/2))-1)

q=2*T・L

ZYLC=JDLC-T

YZLC=ZYLC+L

QZLC=YZLC-(L/2)

XZY=XJD・T^Cos(al)

YZY=YJD・丁木$血01)

XYZ=XJD+T*Cos(a2)

YYZ=YJD+T*Sin(a2)

XQZ=XJD+E♦Cos(a3)

YQZ=YJD+E*Sin(a3)

Text11.Text=Format(L.M.000°)

TextlO.Text=ForinaKT.H.000K)

Textl2.Text=FormalE.".(MMT)

Text13.Text=Format(q.H.000'*)

Textl4.Text=”K”&(ZYLC\1000)&”+”&FormaKZYLC・(ZYLC\1000)♦1000.”.000”)

Textl5.Text=K”&(YZLC\1000)&&Format(YZLC・(YZLC\1000)♦1000.".OOO0)

Textl6.Text=”K”&(QZLC\1000)&”+”&Format(QZLC•(QZLC\1000)*1000.

Textl7.Text=Format(XZyH.00()H)

Texil8.Texi=Foi*mai(YZY・1000”)

Textl9.Text=Format(XY乙M.000H)

Text2O.Text=Format(YY乙:

000”)

Text?

1.Text=FormaKXQZ/.OOO”)

Text22.Text=FormaKYQ乙M.OOOH)

Label26.Caption=”桩号里程"&“X°&”Y”&vbCrLf

Label26.Caption=Label26.Caption&MKM&(ZYLC\IOOO)&H+n&FormaKZYLC・(ZYLC\1000)♦1000.”.000“)&FormaKXZY.”・O(XT)&Foima((YZY「・000”)&vbCrLf

IfZYLCModJJoOThen

ZYLC=ZYLC+(JJ・(ZYLCModJJ))

EndIf

DoWhile(ZYLC+N*JJ)

Xi=XZY+2*R*Sin((ZYLC+N*JJ)/2/R)*Cos(al+(ZYLC+N*JJ))

Yi=YZY+2*R*Sin((ZYLC+N*JJ)/2/R)*Sin(al+(ZYLC+N*JJ))

M=ZYLC+S

5=JJ*N

N=N+1

IfIV1・QZLC>0AndM-QZLC

Label26.Caption=Label26.Caption&HKM&(QZLC\1000)&”+”&FormaKQZLC・(QZLC\1000)♦1000,”.000”)&Foi*ma【(XQZJ.000")&FormaKYQ乙“・000°)&vbCrLf

EndIf

Label26.Caption=Label26.Caplion&“K”&(M\1000)&“+”&Format((M・(M\1000)*1000),“000”)&””

6FormaKXi,”・000M)&Format(Yi,M.000M)&vbCrLf

Loop

Label26.Caption=Label26.Caption&°KM&(YZLC\1000)&“+”&Fonnat((YZLC・(YZLC\1000)♦1000).”•000”)&Formal(XY.00(T)&Forma"YY乙”・000°)

2•缓和曲线

DimRAsSingle,aAsSingle,alAsInteger,a2AsInteger,a3AsSingle,L0AsSingle,tAs

Single,LAsSingle,eAsSingle,qAsSingle,aaAsSingle

Dim11AsInteger,tt(1To100)AsSingle

DimmAsDouble,pAsDouble,bAsDouble,jdAsSingle,zhAsSingle,hyAsSingle,qzAs

Single,hzAsSingle,yhAsSingle

Constpi=3.1415926,ff=206265

PrivateSubCommandl_Click()

R=Vai(Textl.Text)

al=Vai(Text2.Text)

a2=Vai(Text15.Text)

a3=Vai(Textl6.Text)

a=al+a2/60+a3/3600

L0=Vai(Text3.Text)

m=L0/2-L0*3/(240*R*2)

p=LO*2/(24*R)

b=LO*180/(2*R*pi)

t=(R+p)*Abs(Tan(a/2*pi/180))+m

L=pi/180*R*(a-2*b)+2*LO

e=(R+p)/Abs(Cos(a/2*pi/180))-R

q=2*t-L

Text4.Text=t

Text5.Text=L

Text6.Text=e

Text7.Text=q

jd=Vai(TextS.Text)

zh=jd-t

hy=zh+LO

qz=zh+L/2

hz=zh+L

yh=hz-LO

aa=jd+t"q

If(aa<>hz)Then

MsgBox*请确认计算正确「0,48,0\•数据检査•

ExitSub

Else

Text9.Text=zh

TextlO.Text=hy

Textll.Text=qz

Textl2.Text=hz

Textl3.Text=yh

EndIf

EndSub

PrivateSubCommand?

ClickO

DimiAsInteger,jAsInteger,cAsSingle,eAsInteger,fAsInteger,dAsSingle

Dimzhhy(0To100)AsSingle,bb(OTo100)AsSingle,xc(0To100)AsSingle,pj(0To100)

AsSingle

Dimhyyh(.0To100)AsSingle,yhhz(0To100)AsSingle

Listl・Clear

List2・Clear

List3・Clear

Listl.Additem"放样偏角

•放样距离"

List2.Additem^放样偏角

•放样距离"

List3.Additem"放样偏角

,放样距离"

11=Textl-1.Text

zhhy(0)=zh

c=zh+11

c=(c\20)*11

zhhy

(1)=c

i=1

DoWhilec

c=c+11

i=i+1

zhhy(i)=c

Loop

zhhy(i)=hy

Forj=0Toi"1

xc(j)=zhhy(j+1)"zhhy(0)

pj(j)=xc(j)*xc(j)*ff/(6*R*L0)

e=pj(j)\3600

f=(pj(j)-e*3600)\60

d=pj(j)-e*3600-f*60

bb(j)=xc(j)

Listl.Additeme&"度^&f&"分"&Format(d,"轴嵐imT)&"秒Format(bb(j),

Nexthyyh(0)=hy

c=hy+11

c=(c\20)*11

hyyh(l)=c

i=1

DoWhilec

hyyh(i)=c

Loop

hyyh(i)=qz

c=qz+11

c=(c\20)*11

i=i+1

hyyh(i)=c

DoWhilec

c=c+11

i=i+1

hyyh(i)=c

Loop

hyyh(i)=y

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

当前位置:首页 > 幼儿教育 > 幼儿读物

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

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