⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 竖曲线计算.frm

📁 饮羽公路测设(glcs) 由20多个公路测量、设计、试验和施工组织设计等小软件组成。如《中桩大地坐标》可以计算不等长缓和曲线的中桩和边桩的大地坐标;《缓和曲线反算》可以根据切线长、外距长或缓和曲线长求
💻 FRM
字号:
VERSION 5.00
Begin VB.Form frmsqxjs 
   BorderStyle     =   3  'Fixed Dialog
   Caption         =   "竖曲线计算"
   ClientHeight    =   3915
   ClientLeft      =   45
   ClientTop       =   330
   ClientWidth     =   7275
   Icon            =   "竖曲线计算.frx":0000
   KeyPreview      =   -1  'True
   LinkTopic       =   "Form1"
   MaxButton       =   0   'False
   MinButton       =   0   'False
   ScaleHeight     =   3915
   ScaleWidth      =   7275
   ShowInTaskbar   =   0   'False
   StartUpPosition =   2  '屏幕中心
   Begin VB.CommandButton Command3 
      Caption         =   "加桩"
      Height          =   375
      Left            =   840
      TabIndex        =   8
      Top             =   3480
      Width           =   855
   End
   Begin VB.Frame Frame3 
      Caption         =   "加桩桩号"
      Height          =   735
      Left            =   0
      TabIndex        =   18
      Top             =   2640
      Width           =   2655
      Begin VB.TextBox Text6 
         Height          =   270
         Left            =   1200
         TabIndex        =   7
         Text            =   "Text6"
         Top             =   360
         Width           =   1335
      End
      Begin VB.Label Label6 
         Caption         =   "加桩桩号JZ="
         Height          =   255
         Left            =   120
         TabIndex        =   19
         Top             =   360
         Width           =   1335
      End
   End
   Begin VB.Frame Frame2 
      Caption         =   "计算结果"
      Height          =   3810
      Left            =   2760
      TabIndex        =   16
      Top             =   40
      Width           =   4455
      Begin VB.ListBox List1 
         Height          =   3480
         Left            =   120
         TabIndex        =   17
         Top             =   240
         Width           =   4215
      End
   End
   Begin VB.Frame Frame1 
      Caption         =   "原始数据"
      Height          =   2535
      Left            =   0
      TabIndex        =   9
      Top             =   40
      Width           =   2655
      Begin VB.TextBox Text7 
         Height          =   270
         Left            =   1200
         TabIndex        =   5
         Text            =   "Text7"
         Top             =   2160
         Width           =   1335
      End
      Begin VB.TextBox Text5 
         Height          =   270
         Left            =   1200
         TabIndex        =   4
         Text            =   "Text5"
         Top             =   1800
         Width           =   1335
      End
      Begin VB.TextBox Text4 
         Height          =   270
         Left            =   1200
         TabIndex        =   3
         Text            =   "Text4"
         Top             =   1440
         Width           =   1335
      End
      Begin VB.TextBox Text3 
         Height          =   270
         Left            =   1200
         TabIndex        =   2
         Text            =   "Text3"
         Top             =   1080
         Width           =   1335
      End
      Begin VB.TextBox Text1 
         Height          =   270
         Left            =   1200
         TabIndex        =   0
         Text            =   "Text1"
         ToolTipText     =   "单位:m"
         Top             =   360
         Width           =   1335
      End
      Begin VB.TextBox Text2 
         Height          =   270
         Left            =   1200
         TabIndex        =   1
         Text            =   "Text2"
         ToolTipText     =   "单位:m"
         Top             =   720
         Width           =   1335
      End
      Begin VB.Label Label7 
         Caption         =   "加桩间距  ="
         Height          =   255
         Left            =   120
         TabIndex        =   20
         Top             =   2160
         Width           =   1095
      End
      Begin VB.Label Label5 
         Caption         =   "竖曲线半径="
         Height          =   255
         Left            =   120
         TabIndex        =   15
         Top             =   1800
         Width           =   1335
      End
      Begin VB.Label Label4 
         Caption         =   "后段纵坡% ="
         Height          =   255
         Left            =   120
         TabIndex        =   14
         Top             =   1440
         Width           =   1215
      End
      Begin VB.Label Label3 
         Caption         =   "前段纵坡% ="
         Height          =   255
         Left            =   120
         TabIndex        =   13
         Top             =   1080
         Width           =   1095
      End
      Begin VB.Label Label1 
         Caption         =   "变坡点桩号="
         Height          =   255
         Left            =   120
         TabIndex        =   12
         Top             =   360
         Width           =   1335
      End
      Begin VB.Label Label2 
         Caption         =   "变坡点高程="
         Height          =   255
         Left            =   120
         TabIndex        =   11
         Top             =   720
         Width           =   1335
      End
   End
   Begin VB.CommandButton Command2 
      Caption         =   "关闭"
      Height          =   375
      Left            =   1800
      TabIndex        =   10
      Top             =   3480
      Width           =   855
   End
   Begin VB.CommandButton Command1 
      Caption         =   "计算"
      Height          =   375
      Left            =   0
      TabIndex        =   6
      Top             =   3480
      Width           =   855
   End
End
Attribute VB_Name = "frmsqxjs"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim Jd, hd, i1, i2, r, t, e, b, c, l As Double


Private Sub Command1_Click()
'计算

    On Error GoTo handlerror
    
    Text6.Visible = True
    
    Jd = Val(Text1.Text) '变坡点桩号
    hd = Val(Text2.Text) '变坡点高程
    i1 = Val(Text3.Text) '前段纵坡%
    i2 = Val(Text4.Text) '后段纵坡%
    r = Val(Text5.Text) '竖曲线半径
    If i2 - i1 > 0 Then r = -r '当I2-I1>0时,即竖曲线为凹形竖曲线时,半径取负值,改正值为负值。
    t = (i1 - i2) * r / 200 '计算竖曲线切线长T
    e = t * t / 2 / Abs(r) '计算竖曲线外距E
    b = Jd - t '计算竖曲线起点桩号B
    c = Jd + t '计算竖曲线终点桩号C
    l = 2 * t '计算竖曲线长度L
    Rem 以下是在列表框中输出计算结果
    List1.Clear
    List1.AddItem ""
    List1.AddItem "        ~~~~~~~曲线要素~~~~~~~"
    List1.AddItem "    变坡点桩号   (m)JD=  " + Str(Jd)
    List1.AddItem "    变坡点高程   (m)HD=  " + Str(hd)
    List1.AddItem "    前段纵坡     (%)I1=  " + Str(i1)
    List1.AddItem "    后段纵坡     (%)I2=  " + Str(i2)
    List1.AddItem "    竖曲线半径   (m)R =  " + Str(Abs(r))
    List1.AddItem "    曲线起点桩号 (m)ZY=  " + Str(Int(b * 1000 + 0.5) / 1000)
    List1.AddItem "    曲线终点桩号 (m)YZ=  " + Str(Int(c * 1000 + 0.5) / 1000)
    List1.AddItem "    切线长度     (m)T =  " + Str(Int(t * 1000 + 0.5) / 1000)
    List1.AddItem "    外距长度     (m)E =  " + Str(Int(e * 1000 + 0.5) / 1000)
    List1.AddItem "    曲线全长     (m)L =  " + Str(Int(l * 1000 + 0.5) / 1000)
    List1.AddItem ""
    List1.AddItem "        -------加桩坐标-------"
    
    LJ = Val(Text7.Text) '加桩间距
    If LJ = 0 Then Exit Sub '加桩间距为0,则退出计算
    mu = Int((c - b) / LJ + 0.5) + 1 '加桩距离已知的情况下,计算竖曲线内可以以加桩距离LJ的桩号的棵数
    jz = Int(b / LJ + 0.5) * LJ '如果起点桩号不为整桩号,则取整桩号
    For i = 1 To mu
        If jz <= b Then '如果所求桩号小于起点桩号B,
            x = hd - (Jd - jz) * i1 / 100 '所求桩号高程等于变坡点高程-(变坡点桩号-加桩桩号)*前纵坡度/ 100,即加桩桩号不在竖曲线内,在竖曲线起点桩号前,直接计算
        End If
        If b < jz And jz <= Jd Then '如果所求桩号在竖曲线起点和变坡点之间
            x = hd - (Jd - jz) * i1 / 100 - (jz - b) * (jz - b) / 2 / r '计算所求桩号高程(含改正值),其中,(jz - b) * (jz - b) / 2 / r为计算改正值,(Jd - jz) * i1 / 100为计算加桩点不含改正值高程
        End If
        If Jd < jz And jz <= c Then '如果所求桩号在竖曲线变坡点和终点之间
            x = hd - (Jd - jz) * i2 / 100 - (jz - c) * (jz - c) / 2 / r '计算所求桩号高程(含改正值),其中,(jz - c) * (jz - c) / 2 / r为计算改正值,hd - (Jd - jz) * i2 / 100 为计算加桩点不含改正值高程
        End If
        If jz > c Then '如果所求桩号大于起点桩号c,
            x = hd - (Jd - jz) * i2 / 100 '直接计算加桩高程,即加桩桩号不在竖曲线内,在竖曲线终点外
        End If
            
            kge1 = ""
            kong = " "
            chdu1 = Len(jz)
            For j = 6 To chdu1 Step -1
                kge1 = kge1 + kong
            Next j
            
        List1.AddItem "    桩号 (m)JZ=" + Str(jz) + kge1 + "高程 X=" + Str(Int(x * 1000 + 0.5) / 1000)
        jz = jz + LJ
        If jz > c Then Exit For '加桩桩号大于竖曲线终点桩号,退出循环
    Next i
    
    
    Text6.SetFocus
    
    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 Command3_Click()
'加桩

    On Error GoTo handlerror

    jz = Val(Text6.Text)
    If jz <= b Then
        x = hd - (Jd - jz) * i1 / 100
    End If
    If b < jz And jz <= Jd Then
        x = hd - (Jd - jz) * i1 / 100 - (jz - b) * (jz - b) / 2 / r
    End If
    If Jd < jz And jz <= c Then
        x = hd - (Jd - jz) * i2 / 100 - (jz - c) * (jz - c) / 2 / r
    End If
    If jz > c Then
        x = hd - (Jd - jz) * i2 / 100
    End If
        
        kge1 = ""
        kong = " "
        chdu1 = Len(jz)
        For j = 6 To chdu1 Step -1
            kge1 = kge1 + kong
        Next j
        
    List1.AddItem "    桩号 (m)JZ=" + Str(jz) + kge1 + "高程 X=" + Str(Int(x * 1000 + 0.5) / 1000)
    
    Text6.Text = ""
    Text6.SetFocus
    
    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 = Trim$(Str(20))
    Text6.Visible = False
    List1.Clear
    List1.AddItem "长度、高程:米;上坡纵坡为正,下坡纵坡为负"

End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -