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

📄 中桩大地坐标.frm

📁 饮羽公路测设(glcs) 由20多个公路测量、设计、试验和施工组织设计等小软件组成。如《中桩大地坐标》可以计算不等长缓和曲线的中桩和边桩的大地坐标;《缓和曲线反算》可以根据切线长、外距长或缓和曲线长求
💻 FRM
📖 第 1 页 / 共 5 页
字号:
        frmMain.Text1 = frmMain.Text1 & vbCrLf & "    QZ=   " + Str(Int(qz * 1000 + 0.5) / 1000)
        frmMain.Text1 = frmMain.Text1 & vbCrLf & "    YH=   " + Str(Int(yh * 1000 + 0.5) / 1000)
        frmMain.Text1 = frmMain.Text1 & vbCrLf & "    HZ=   " + Str(Int(hz * 1000 + 0.5) / 1000)
        
        frmMain.Text1 = frmMain.Text1 & vbCrLf & ""
        frmMain.Text1 = frmMain.Text1 & vbCrLf & "        -------加桩坐标-------"
        
        For i = 0 To VSFlexGrid1.Rows - 2
            
            If i = 0 Then frmMain.Text1 = frmMain.Text1 & vbCrLf & "    " + VSFlexGrid1.TextMatrix(i, 0) + "         " + VSFlexGrid1.TextMatrix(i, 1) + "        " + VSFlexGrid1.TextMatrix(i, 2) + "         " + VSFlexGrid1.TextMatrix(i, 3) + "       " + VSFlexGrid1.TextMatrix(i, 4) + "  " + VSFlexGrid1.TextMatrix(i, 5) + "   " + VSFlexGrid1.TextMatrix(i, 6) + "      " + VSFlexGrid1.TextMatrix(i, 7) + "  " + VSFlexGrid1.TextMatrix(i, 8) + "      " + VSFlexGrid1.TextMatrix(i, 9) + "  " + VSFlexGrid1.TextMatrix(i, 10) + "    " + VSFlexGrid1.TextMatrix(i, 11) + "     " + VSFlexGrid1.TextMatrix(i, 12)
            wbbb = "    "
            If i <> 0 Then
                For j = 0 To VSFlexGrid1.Cols - 1
                    wbbb = wbbb + VSFlexGrid1.TextMatrix(i, j)
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 0 Then kgg = "             "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 1 Then kgg = "            "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 2 Then kgg = "           "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 3 Then kgg = "          "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 4 Then kgg = "         "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 5 Then kgg = "        "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 6 Then kgg = "       "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 7 Then kgg = "      "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 8 Then kgg = "     "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 9 Then kgg = "    "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 10 Then kgg = "   "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 11 Then kgg = "  "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 12 Then kgg = " "
                    If Len(VSFlexGrid1.TextMatrix(i, j)) = 13 Then kgg = ""
                    wbbb = wbbb + kgg
                Next j
            End If
            frmMain.Text1 = frmMain.Text1 & vbCrLf & wbbb
        Next i
        
        frmMain.Text1 = frmMain.Text1 & vbCrLf & "    --------------------------------------"
    End If

    Unload Me
    
    Exit Sub
handlerror:
    
End Sub

Private Sub Form_DblClick()
    xianshi = MsgBox("欢迎你使用本程序,有问题请联系我" & vbCrLf & "电子邮箱:shimf@mail.nbptt.zj.cn", vbInformation, "提示")
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()
'启动窗体
On Error GoTo handlerror

    Text1.Text = ""
    Text2.Text = ""
    Text3.Text = ""
    Text4.Text = ""
    Text5.Text = ""
    Text6.Text = ""
    Text7.Text = ""
    Text8.Text = ""
    Text9.Text = ""
    Text10.Text = ""
    Text11.Text = ""
    Text12.Text = ""
    Text13.Text = ""
    Text14.Text = ""
    Text15.Text = ""
    Text16.Text = ""
    Text17.Text = ""
    Text18.Text = ""
    Text19.Text = ""
    Text20.Text = ""
    Text21.Text = ""
    Text22.Text = Trim$(Str(10))
    Text9.Visible = False
    Command4.Enabled = False
    
    VSFlexGrid1.ColWidth(0) = 500
    VSFlexGrid1.ColWidth(1) = 1000
    VSFlexGrid1.ColWidth(2) = 800
    VSFlexGrid1.ColWidth(3) = 800
    VSFlexGrid1.ColWidth(4) = 1200
    VSFlexGrid1.ColWidth(5) = 1200
    VSFlexGrid1.ColWidth(6) = 1200
    VSFlexGrid1.ColWidth(7) = 1200
    VSFlexGrid1.ColWidth(8) = 1200
    VSFlexGrid1.ColWidth(9) = 1200
    VSFlexGrid1.ColWidth(10) = 1200
    VSFlexGrid1.ColWidth(11) = 1200
    VSFlexGrid1.ColWidth(12) = 1200
    
    VSFlexGrid1.TextMatrix(0, 0) = "序号"
    VSFlexGrid1.TextMatrix(0, 1) = "桩号"
    VSFlexGrid1.TextMatrix(0, 2) = "支距X"
    VSFlexGrid1.TextMatrix(0, 3) = "支距Y"
    VSFlexGrid1.TextMatrix(0, 4) = "偏角(°′″)"
    VSFlexGrid1.TextMatrix(0, 5) = "左侧距离Yz"
    VSFlexGrid1.TextMatrix(0, 6) = "左侧坐标X"
    VSFlexGrid1.TextMatrix(0, 7) = "左侧坐标Y"
    VSFlexGrid1.TextMatrix(0, 8) = "中桩坐标X"
    VSFlexGrid1.TextMatrix(0, 9) = "中桩坐标Y"
    VSFlexGrid1.TextMatrix(0, 10) = "右侧距离Lz"
    VSFlexGrid1.TextMatrix(0, 11) = "右侧坐标X"
    VSFlexGrid1.TextMatrix(0, 12) = "右侧坐标Y"
    
    VSFlexGrid1.ColAlignment(0) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(1) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(2) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(3) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(4) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(5) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(6) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(7) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(8) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(9) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(10) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(11) = flexAlignCenterCenter
    VSFlexGrid1.ColAlignment(12) = flexAlignCenterCenter
    
    
    Exit Sub
handlerror:
    
End Sub


Public Sub zbzh()
'坐标转换(将局部坐标系转化为大地坐标系)
    
    xm = xzh + x1 * Cos(fw) - cp * y1 * Sin(fw)
    ym = yzh + x1 * Sin(fw) + cp * y1 * Cos(fw)
    
End Sub

Public Sub jzjsu()
'加桩计算
    
        If jz <= zh Then
            x = zh - jz
            y = 0
            If x <> 0 Then
                ct = Atn(y / x)
            End If
            If x = 0 Then ct = 0
            
            If Option1.Value = True Then '左偏
                x1 = -x
                y1 = -y
                y11 = d1
                y12 = -d2
            End If
            If Option2.Value = True Then '右偏
                x1 = -x
                y1 = y
                y11 = -d1
                y12 = d2
            End If
            
            x11 = -x
            x12 = -x
        End If
        
        If zh < jz And jz <= hy Then
            l = jz - zh
            x = l - l ^ 5 / 40 / r / r / ls1 / ls1
            y = l ^ 3 / 6 / r / ls1 - l ^ 7 / 336 / r ^ 3 / ls1 ^ 3
            If x <> 0 Then
                ct = Atn(y / x)
            End If
            If x = 0 Then ct = 0
            
            btt = l * l / 2 / r / ls1
            If Option1.Value = True Then '左偏
                x1 = x
                y1 = -y
                x11 = x + d1 * Cos(btt + pi / 2)     '左侧
                x12 = x + d2 * Cos(btt - pi / 2)     '右侧
                y11 = (y + d1 * Sin(btt + pi / 2))   '左侧
                y12 = (y + d2 * Sin(btt - pi / 2)) '右侧
            End If
            If Option2.Value = True Then '右偏
                x1 = x
                y1 = y
                x11 = x + d1 * Cos(btt - pi / 2)     '左侧
                x12 = x + d2 * Cos(btt + pi / 2)    '右侧
                y11 = (y + d1 * Sin(btt - pi / 2))     '左侧
                y12 = (y + d2 * Sin(btt + pi / 2))     '右侧
            End If
        End If
        
        If hy <= jz And jz <= qz Then
            l = jz - hy
            gm = l / r + bt1
            x = r * Sin(gm) + q1
            y = r * (1 - Cos(gm)) + p1
            If x <> 0 Then
                ct = Atn(y / x)
            End If
            If x = 0 Then ct = 0
            
            btt = gm
            If Option1.Value = True Then '左偏
                x1 = x
                y1 = -y
                x11 = x + d1 * Cos(btt + pi / 2)     '左侧
                x12 = x + d2 * Cos(btt - pi / 2)     '右侧
                y11 = (y + d1 * Sin(btt + pi / 2))   '左侧
                y12 = (y + d2 * Sin(btt - pi / 2))    '右侧
            End If
            If Option2.Value = True Then '右偏
                x1 = x
                y1 = y
                x11 = x + d1 * Cos(btt - pi / 2)     '左侧
                x12 = x + d2 * Cos(btt + pi / 2)    '右侧
                y11 = (y + d1 * Sin(btt - pi / 2))     '左侧
                y12 = (y + d2 * Sin(btt + pi / 2))     '右侧
            End If
        End If
        
        If qz < jz And jz <= yh Then
            l = yh - jz
            gm = l / r + bt2
            x = r * Sin(gm) + q2
            y = r * (1 - Cos(gm)) + p2
            If x <> 0 Then
                ct = Atn(y / x)
            End If
            If x = 0 Then ct = 0
            
            x1 = Cos(pm) * (-x) + y * (-Sin(pm)) + th1 + th2 * Cos(pm)
            y1 = Sin(pm) * (-x) + y * Cos(pm) + th2 * Sin(pm)
            
            btt = gm
            If Option1.Value = True Then    '左偏
                x1 = x1
                y1 = -y1
                x11 = x + d1 * Cos(btt + pi / 2)     '左侧
                x12 = x + d2 * Cos(btt - pi / 2)     '右侧
                y11 = (y + d1 * Sin(btt + pi / 2))    '左侧
                y12 = (y + d2 * Sin(btt - pi / 2))     '右侧
            End If
            If Option2.Value = True Then    '右偏
                x1 = x1
                y1 = y1
                x11 = x + d1 * Cos(btt - pi / 2)     '左侧
                x12 = x + d2 * Cos(btt + pi / 2)    '右侧
                y11 = (y + d1 * Sin(btt - pi / 2))     '左侧
                y12 = (y + d2 * Sin(btt + pi / 2))     '右侧
            End If
            
        End If
        
        If yh <= jz And jz < hz Then
            l = hz - jz
            x = l - l ^ 5 / 40 / r / r / ls2 / ls2
            y = l ^ 3 / 6 / r / ls2 - l ^ 7 / 336 / r ^ 3 / ls2 ^ 3
            If x <> 0 Then
                ct = Atn(y / x)
            End If
            If x = 0 Then ct = 0
            
            x1 = Cos(pm) * (-x) + y * (-Sin(pm)) + th1 + th2 * Cos(pm)
            y1 = Sin(pm) * (-x) + y * Cos(pm) + th2 * Sin(pm)
            
            btt = l * l / 2 / r / ls2
            If Option1.Value = True Then    '左偏
                x1 = x1
                y1 = -y1
                x11 = x + d1 * Cos(btt + pi / 2)     '左侧
                x12 = x + d2 * Cos(btt - pi / 2)     '右侧
                y11 = (y + d1 * Sin(btt + pi / 2))   '左侧
                y12 = (y + d2 * Sin(btt - pi / 2))     '右侧
            End If
            If Option2.Value = True Then    '右偏
                x1 = x1
                y1 = y1
                x11 = x + d1 * Cos(btt - pi / 2)     '左侧
                x12 = x + d2 * Cos(btt + pi / 2)    '右侧
                y11 = (y + d1 * Sin(btt - pi / 2))     '左侧
                y12 = (y + d2 * Sin(btt + pi / 2))     '右侧
            End If
            
        End If
        
        If jz >= hz Then
            x = jz - hz
            y = 0
            If x <> 0 Then
                ct = Atn(y / x)
            End If
            If x = 0 Then ct = 0
            
            x1 = Cos(pm) * (x) + y * (-Sin(pm)) + th1 + th2 * Cos(pm)
            y1 = Sin(pm) * (x) + y * Cos(pm) + th2 * Sin(pm)
            If Option1.Value = True Then    '左偏
                x1 = x1
                y1 = -y1
                y11 = d1
                y12 = -d2
            End If
            If Option2.Value = True Then    '右偏
                x1 = x1
                y1 = y1
                y11 = -d1
                y12 = d2
            End If
            x11 = x
            x12 = x
        End If
        
        ct = ct * 180 / pi
        ia = Int(ct)
        ib = Int((ct - ia) * 60)
        ic = ((ct - ia) * 60 - ib) * 60
        id = ia + ib / 100 + ic / 10000
        
        
End Sub

Public Sub bzjs()
'边桩x,y值计算
    
    If jz <= qz Then
        xbm = xb
        ybm = yb
    End If
    If qz < jz And jz <= hz Then
        xbm = Cos(pm) * (-xb) + yb * (-Sin(pm)) + th1 + th2 * Cos(pm)
        ybm = Sin(pm) * (-xb) + yb * Cos(pm) + th2 * Sin(pm)
    End If
    
    If jz > hz Then
        xbm = Cos(pm) * (xb) + yb * (-Sin(pm)) + th1 + th2 * Cos(pm)
        ybm = Sin(pm) * (xb) + yb * Cos(pm) + th2 * Sin(pm)
    End If

End Sub

⌨️ 快捷键说明

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