?? 三點圓曲線.frm
字號:
VERSION 5.00
Begin VB.Form frmsdyqxsj
BorderStyle = 3 'Fixed Dialog
Caption = "三點圓曲線設計"
ClientHeight = 4140
ClientLeft = 45
ClientTop = 330
ClientWidth = 5310
Icon = "三點圓曲線.frx":0000
KeyPreview = -1 'True
LinkTopic = "Form1"
MaxButton = 0 'False
MinButton = 0 'False
ScaleHeight = 4140
ScaleWidth = 5310
ShowInTaskbar = 0 'False
StartUpPosition = 2 '屏幕中心
Begin VB.Frame Frame2
Caption = "計算結果"
Height = 1695
Left = 0
TabIndex = 19
Top = 1920
Width = 5295
Begin VB.ListBox List1
Height = 1320
Left = 120
TabIndex = 20
Top = 240
Width = 5055
End
End
Begin VB.Frame Frame1
Caption = "原始數據"
Height = 1815
Left = 0
TabIndex = 9
Top = 40
Width = 5295
Begin VB.TextBox Text8
Height = 270
Left = 4080
TabIndex = 7
Text = "Text8"
ToolTipText = "單位:m"
Top = 1440
Width = 1095
End
Begin VB.TextBox Text7
Height = 270
Left = 4080
TabIndex = 6
Text = "Text7"
ToolTipText = "單位:m"
Top = 1080
Width = 1095
End
Begin VB.TextBox Text6
Height = 270
Left = 4080
TabIndex = 5
Text = "Text6"
ToolTipText = "單位:m"
Top = 720
Width = 1095
End
Begin VB.TextBox Text5
Height = 270
Left = 4080
TabIndex = 4
Text = "Text5"
ToolTipText = "單位:m"
Top = 360
Width = 1095
End
Begin VB.TextBox Text4
Height = 270
Left = 1440
TabIndex = 3
Text = "Text4"
ToolTipText = "單位:m"
Top = 1440
Width = 1095
End
Begin VB.TextBox Text3
Height = 270
Left = 1440
TabIndex = 2
Text = "Text3"
ToolTipText = "如36°15′45″按36.1545輸入"
Top = 1080
Width = 1095
End
Begin VB.TextBox Text2
Height = 270
Left = 1440
TabIndex = 1
Text = "Text2"
ToolTipText = "如36°15′45″按36.1545輸入"
Top = 720
Width = 1095
End
Begin VB.TextBox Text1
Height = 270
Left = 1440
TabIndex = 0
Text = "Text1"
ToolTipText = "如36°15′45″按36.1545輸入"
Top = 360
Width = 1095
End
Begin VB.Label Label8
Caption = "交點A樁號 ="
Height = 255
Left = 2880
TabIndex = 18
Top = 720
Width = 1095
End
Begin VB.Label Label5
Caption = "曲線半徑R ="
Height = 255
Left = 2880
TabIndex = 17
Top = 1080
Width = 1215
End
Begin VB.Label Label2
Caption = "基線長度BC="
Height = 255
Left = 2880
TabIndex = 16
Top = 360
Width = 1335
End
Begin VB.Label Label1
Caption = "交點C偏角PJc="
Height = 255
Left = 120
TabIndex = 15
Top = 1080
Width = 1335
End
Begin VB.Label Label7
Caption = "交點A偏角PJa="
Height = 255
Left = 120
TabIndex = 14
Top = 360
Width = 1335
End
Begin VB.Label Label6
Caption = "交點B偏角PJb="
Height = 255
Left = 120
TabIndex = 13
Top = 720
Width = 1575
End
Begin VB.Label Label4
Caption = "緩和曲線LS="
Height = 255
Left = 2880
TabIndex = 12
Top = 1440
Width = 1215
End
Begin VB.Label Label3
Caption = "基線長度AB ="
Height = 255
Left = 120
TabIndex = 11
Top = 1440
Width = 1335
End
End
Begin VB.CommandButton Command2
Caption = "關閉"
Height = 375
Left = 4440
TabIndex = 10
Top = 3720
Width = 855
End
Begin VB.CommandButton Command1
Caption = "計算"
Height = 375
Left = 3480
TabIndex = 8
Top = 3720
Width = 855
End
End
Attribute VB_Name = "frmsdyqxsj"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub Command1_Click()
'計算
On Error GoTo handlerror
ja = Val(Text1.Text)
sjwjs = ja
Call dfmhhd
pja = hudu
jb = Val(Text2.Text)
sjwjs = jb
Call dfmhhd
pjb = hudu
jc = Val(Text3.Text)
sjwjs = jc
Call dfmhhd
pjc = hudu
ab = Val(Text4.Text)
bc = Val(Text5.Text)
jda = Val(Text6.Text)
r = Val(Text7.Text)
ls = Val(Text8.Text)
p = ls * ls / 24 / r
q = ls / 2 - ls * ls * ls / 240 / r / r
b = ls / 2 / r
pj = pja + pjb + pjc
If pj - 2 * b < 0 Then
xianshi = MsgBox("請增加半徑或減少緩和曲線長度后再計算。", vbInformation, "問題提示")
Exit Sub
End If
ac = Sqr(ab * ab + bc * bc + 2 * ab * bc * Cos(pjb))
u = bc / ac * Sin(pjb)
v = ab / ac * Sin(pjb)
aj = Atn(u / Sqr(1 - u * u))
cj = Atn(v / Sqr(1 - v * v))
ad = Sin(pjc + cj) / Sin(pj) * ac
dc = Sin(pja + aj) / Sin(pj) * ac
th = (r + p) * Tan(pj / 2) + q
ta = th - ad
tc = th - dc
ly = (pj - 2 * b) * r
lh = ls + ly + ls
zh = jda - ta
hy = zh + ls
qz = hy + ly / 2
yh = hy + ly
hz = yh + ls
List1.Clear
List1.AddItem ""
List1.AddItem " ~~~~~~~曲線要素~~~~~~~"
List1.AddItem " 路線交樁號 (m)JDA= " + Str(jda)
List1.AddItem " 路線偏角(°′″)PJa= " + Str(ja)
List1.AddItem " 路線偏角(°′″)PJb= " + Str(jb)
List1.AddItem " 路線偏角(°′″)PJc= " + Str(jc)
List1.AddItem " 基線長度 AB = " + Str(ab)
List1.AddItem " 基線長度 BC = " + Str(bc)
List1.AddItem " 圓曲線半徑 (m)R = " + Str(Int(r * 1000 + 0.5) / 1000)
List1.AddItem " 緩和曲線長度 (m)Ls = " + Str(Int(ls * 1000 + 0.5) / 1000)
List1.AddItem " 切線長度 (m)Th = " + Str(Int(th * 1000 + 0.5) / 1000)
List1.AddItem " 前切線長度 (m)TA = " + Str(Int(ta * 1000 + 0.5) / 1000)
List1.AddItem " 后切線長度 (m)TC = " + Str(Int(tc * 1000 + 0.5) / 1000)
List1.AddItem " 中間圓曲線長 (m)Ly = " + Str(Int(ly * 1000 + 0.5) / 1000)
List1.AddItem " 平曲線全長 (m)Lh = " + Str(Int(lh * 1000 + 0.5) / 1000)
List1.AddItem ""
List1.AddItem " ------控制點樁號------"
List1.AddItem " ZH= " + Str(Int(zh * 1000 + 0.5) / 1000)
List1.AddItem " HY= " + Str(Int(hy * 1000 + 0.5) / 1000)
List1.AddItem " QZ= " + Str(Int(qz * 1000 + 0.5) / 1000)
List1.AddItem " YH= " + Str(Int(yh * 1000 + 0.5) / 1000)
List1.AddItem " HZ= " + Str(Int(hz * 1000 + 0.5) / 1000)
Exit Sub
handlerror:
xianshi = MsgBox("請檢查輸入的數據后再計算。", vbInformation, "問題提示")
End Sub
Private Sub Command2_Click()
'關閉
On Error GoTo handlerror
If List1.ListCount > 1 And rjsfzc = 88 Then
frmMain.Text1 = frmMain.Text1 & vbCrLf & ""
frmMain.Text1 = frmMain.Text1 & vbCrLf & " 十三、三點圓曲線設計計算結果:"
For i = 0 To List1.ListCount - 1
frmMain.Text1 = frmMain.Text1 & vbCrLf & List1.List(i)
Next i
frmMain.Text1 = frmMain.Text1 & vbCrLf & " --------------------------------------"
End If
Unload Me
Exit Sub
handlerror:
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
'Esc鍵退出,VbEscape可以用27代替
On Error GoTo handlerror
If KeyAscii = 27 Then
Unload Me
End If
Exit Sub
handlerror:
End Sub
Private Sub Form_Load()
'啟動
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text8.Text = ""
List1.Clear
List1.AddItem "長度:米,角度:如36°15′45″按36.1545輸入"
End Sub
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -