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

📄 输出图形截面.frm

📁 钢筋混凝土框架结构设计计算源程序
💻 FRM
📖 第 1 页 / 共 2 页
字号:
Private Sub Command_Click()
    If Command.Caption = "计算内力" Then
        Call 计算内力
        Command.Enabled = False
        Form1.Opt(1).Value = True
    Else
        Form1.Opt(0).Enabled = False
        Form1.Opt(1).Enabled = False
        Form1.Opt(2).Enabled = False
        Form1.Opt(3).Enabled = False
        Form1.Picture1.Cls
    End If
End Sub
Public Sub Form_Load()
    Show
    Picture1.Cls
    Selectedoption = 0
    If 图 = "内力" Then
        Form1.Opt(0).Enabled = False
        Form1.Opt(1).Enabled = True
        Form1.Opt(2).Enabled = True
        Form1.Opt(3).Enabled = True
    ElseIf 图 = "荷载" Then
        Form1.Opt(0).Enabled = True
        Form1.Opt(1).Enabled = False
        Form1.Opt(2).Enabled = False
        Form1.Opt(3).Enabled = False
    Else
        Form1.Opt(0).Enabled = False
        Form1.Opt(1).Enabled = False
        Form1.Opt(2).Enabled = False
        Form1.Opt(3).Enabled = False
    End If
End Sub
Private Sub Opt_Click(Index As Integer)
    Selectedoption = Index
End Sub
Sub 弯矩图()
    Dim M1 As Single, M2 As Single, Mmax As Single
    Dim Q1 As Single, Q2 As Single, qmax As Single
    Dim Ne, nn, c As Single, L As Single, X, i
    Dim cosA As Single, sinA As Single, Xm As Single, Ym As Single
    Dim M(200) As Single, Q(200) As Single
    ReDim V(Nodg) As Integer
    For Ne = 1 To Ncell
        M1 = 杆端力(Ne).M1
        M2 = 杆端力(Ne).M2
        If Abs(M1) > Mmax Then Mmax = Abs(M1)
        If Abs(M2) > Mmax Then Mmax = Abs(M2)
    Next Ne
    nn = 100
    If Mmax > 0 Then
        c = Lmax * 0.25 / Mmax
    Else
        Mmax = 1
    End If
    For Ne = 1 To Ncell
        Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
        M1 = 杆端力(Ne).M1
        M2 = 杆端力(Ne).M2
        Q1 = 杆端力(Ne).Q1
        For i = 1 To nn + 1
            X = (i - 1) * L / nn
            M(i) = M1 - Q1 * X
        Next i
        Call 荷载下简支梁内力(Ne, nn, L, M(), Q()) '输出迭加后值
        Picture1.PSet (X1, Y1)
        For i = 1 To nn + 1
            X = (i - 1) * L / nn
            Xm = X1 + X * cosA - M(i) * sinA * c
            Ym = Y1 + X * sinA + M(i) * cosA * c
            Picture1.Line -(Xm, Ym), vbBlue
        Next i
        Picture1.Line -(x2, y2), vbBlue
        Call 标内力(NGN(Ne, 1), M1, X1, Y1)
        Call 标内力(NGN(Ne, 2), M2, x2, y2)
    Next Ne
End Sub
Sub 剪力图()
    Dim M1 As Single, M2 As Single, Mmax As Single
    Dim Q1 As Single, Q2 As Single, qmax As Single
    Dim Ne, nn, c As Single, L As Single, X, i
    Dim cosA As Single, sinA As Single, Xm As Single, Ym As Single
    Dim Q(200) As Single, M(200) As Single
    ReDim V(Nodg) As Integer
    For Ne = 1 To Ncell
        Q1 = 杆端力(Ne).Q1
        Q2 = 杆端力(Ne).Q2
        If Abs(Q1) > qmax Then qmax = Abs(Q1)
        If Abs(Q2) > qmax Then qmax = Abs(Q2)
    Next Ne
    nn = 150
    If qmax > 0 Then
        c = Lmax * 0.25 / qmax
    Else
        qmax = 1
    End If
    For Ne = 1 To Ncell
        Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
        Q1 = 杆端力(Ne).Q1
        Q2 = 杆端力(Ne).Q2
        For i = 1 To nn + 1
            X = (i - 1) * L / nn
            Q(i) = Q1
        Next i
        Call 荷载下简支梁内力(Ne, nn, L, M(), Q()) '输出迭加后值
        Picture1.PSet (X1, Y1)
        For i = 1 To nn + 1
            X = (i - 1) * L / nn
            Xm = X1 + X * cosA - Q(i) * sinA * c
            Ym = Y1 + X * sinA + Q(i) * cosA * c
            Picture1.Line -(Xm, Ym), vbBlue
        Next i
        Picture1.Line -(x2, y2), vbBlue
        Call 标内力(NGN(Ne, 1), Q1, X1, Y1)
        Call 标内力(NGN(Ne, 2), Q2, x2, y2)
    Next Ne
End Sub
Sub 轴力图()
    Dim N1 As Single, N2 As Single, Nmax As Single
    Dim Ne, nn, c As Single, L As Single, X, i
    Dim cosA As Single, sinA As Single, Xm As Single, Ym As Single
    Dim n(200) As Single
    ReDim V(Nodg) As Integer
    For Ne = 1 To Ncell
        N1 = 杆端力(Ne).N1
        N2 = 杆端力(Ne).N2
        If Abs(N1) > Nmax Then Nmax = Abs(N1)
        If Abs(N2) > Nmax Then Nmax = Abs(N2)
    Next Ne
    nn = 150
    If Nmax > 0 Then
        c = Lmax * 0.25 / Nmax
    Else
        c = 1
    End If
    For Ne = 1 To Ncell
        Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
        N1 = 杆端力(Ne).N1
        N2 = 杆端力(Ne).N2
        For i = 1 To nn + 1
            X = (i - 1) * L / nn
            n(i) = N1
        Next i
        Picture1.PSet (X1, Y1)
        For i = 1 To nn + 1
            X = (i - 1) * L / nn
            Xm = X1 + X * cosA - n(i) * sinA * c
            Ym = Y1 + X * sinA + n(i) * cosA * c
            Picture1.Line -(Xm, Ym), vbBlue
        Next i
        Picture1.Line -(x2, y2), vbBlue
        Call 标内力(NGN(Ne, 1), N1, X1, Y1)
        Call 标内力(NGN(Ne, 2), N2, x2, y2)
    Next Ne
End Sub
Sub 标内力(ByVal Nd As Integer, F As Single, ByVal X As Single, ByVal Y As Single)
    Nd = Abs(Nd)
    If Check3.Value = 1 Then
        V(Nd) = V(Nd) + 1
        If X < Xmax / 2 Then X = X - Lmax / 10 Else X = X + Lmax / 10
        Y = Y + (V(Nd) - 1) * Lmax / 15
        With Picture1
            .ForeColor = vbBlack
            .CurrentX = X
            .CurrentY = Y
        End With
        Picture1.Print Format(Abs(F), "###.##")
    End If
End Sub
Sub 荷载下简支梁内力(Ne As Integer, nn As Integer, L As Single, M() As Single, Q() As Single)
    Dim aaa As Single, dx As Single, X As Single, i
    Select Case Ld(Ne).Pq
        Case "Q", "q"
            aaa = Ld(Ne).Po
            For i = 1 To nn + 1
                X = (i - 1) * L / nn
                If X <= aaa Then
                    M(i) = M(i) + Ld(Ne).s * X * X / 2
                    Q(i) = Q(i) - Ld(Ne).s * X
                Else
                    M(i) = M(i) + Ld(Ne).s * aaa * (X - aaa / 2)
                    Q(i) = Q(i) - Ld(Ne).s * aaa
                End If
            Next i
        Case "t", "T"
            aaa = Ld(Ne).Po
            For i = 1 To nn + 1
                 X = (i - 1) * L / nn
                If X <= aaa Then
                    M(i) = M(i) + Ld(Ne).s * X ^ 3 / aaa / 6
                    Q(i) = Q(i) - Ld(Ne).s * X * X / 2 / aaa
                ElseIf X >= L - aaa Then
                    M(i) = M(i) + Ld(Ne).s * aaa * (X / 2 - aaa / 3) + Ld(Ne).s * (X - aaa) ^ 2 / 2
                    dx = X + aaa - L
                    M(i) = M(i) - Ld(Ne).s * dx ^ 3 / aaa / 6
                    Q(i) = Q(i) - Ld(Ne).s * (X - aaa / 2 - dx ^ 2 / aaa / 2)
                Else
                    M(i) = M(i) + Ld(Ne).s * aaa * (X / 2 - aaa / 3) + Ld(Ne).s * (X - aaa) ^ 2 / 2
                    Q(i) = Q(i) - Ld(Ne).s * (X - aaa / 2)
                End If
            Next i
        Case "P", "p"
            aaa = Ld(Ne).Po
            For i = 1 To nn + 1
                 X = (i - 1) * L / nn
                If X >= aaa Then
                    M(i) = M(i) + (X - aaa) * Ld(Ne).s
                    Q(i) = Q(i) - Ld(Ne).s
                End If
            Next i
        Case Else
    End Select
End Sub
Sub 初始图()
    Picture1.Cls
    Call 杆件图(Form1.Picture1)
    If 图 = "荷载" Then
        Form1.Opt(0).Enabled = True
    ElseIf 图 = "内力" Then
        Form1.Opt(0).Enabled = False
        Form1.Opt(1).Enabled = True
        Form1.Opt(2).Enabled = True
        Form1.Opt(3).Enabled = True
        Form1.Command.Caption = "退出"
    End If
End Sub

⌨️ 快捷键说明

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