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

📄 荷载计算.bas

📁 钢筋混凝土框架结构设计计算源程序
💻 BAS
📖 第 1 页 / 共 2 页
字号:
    Ge = 0
    Ne = 0
    ∑GiHi = 0
    结构总长 = Val(相邻框架间距) / 1000 * (Val(框架总榀数 - 1))
    For i = 1 To Cengshu
        Hi(i) = Ly(i) + Hi(i - 1)
        If i = 1 Then
            G(i) = G(i) + Kuatot * 结构总长 * (25 * Val(钢筋混凝土楼板厚度) / 1000 + Val(楼面板附加重量) + Val(楼面均布活荷载) * 0.5) / Val(框架总榀数)
            For j = 1 To Kuashu
                G(i) = G(i) + Lx(j) * (EAI(柱总数 + j, 2) * 25 + Val(楼面梁附加重量) + Val(BATable(i, j)))
            Next j
            Ne = Kuashu + 1 + 1
            For j = 1 To Kuashu + 1
                    G(i) = G(i) + Val(CATable(i, j)) + EAI(Ne, 2) * 25 * Ly(i)  '单位为KN
                    G(i) = G(i) + Val(CATable(i, j)) / 2 + EAI(Ne + Kuashu + 1, 2) * 25 * Ly(i + 1) / 2
                    Ne = Ne + 1
            Next j
        ElseIf i = Cengshu Then
            G(i) = G(i) + Kuatot * 结构总长 * (25 * Val(钢筋混凝土楼板厚度) / 1000 + Val(屋面板附加重量)) / Val(框架总榀数)
            For j = 1 To Kuashu
                G(i) = G(i) + Lx(j) * (EAI(柱总数 + (i - 1) * Kuashu + j, 2) * 25 + Val(屋面梁附加重量) + Val(BATable(i, j)))
            Next j
            Ne = (Kuashu + 1) * i + 1
            For j = 1 To Kuashu + 1
                    G(i) = G(i) + Val(CATable(i, j)) / 2 + EAI(Ne, 2) * 25 * Ly(i) / 2 '单位为KN
                    Ne = Ne + 1
            Next j
        Else
            G(i) = G(i) + Kuatot * 结构总长 * (25 * Val(钢筋混凝土楼板厚度) / 1000 + Val(楼面板附加重量) + Val(楼面均布活荷载) * 0.5) / Val(框架总榀数)
            For j = 1 To Kuashu
                G(i) = G(i) + Lx(j) * (EAI(柱总数 + (i - 1) * Kuashu + j, 2) * 25 + Val(楼面梁附加重量) + Val(BATable(i, j)))
            Next j
            Ne = (Kuashu + 1) * i + 1
            For j = 1 To Kuashu + 1
                    G(i) = G(i) + Val(CATable(i, j)) / 2 + EAI(Ne, 2) * 25 * Ly(i) / 2 '单位为KN
                    G(i) = G(i) + Val(CATable(i + 1, j)) / 2 + EAI(Ne + Kuashu + 1, 2) * 25 * Ly(i + 1) / 2
                    Ne = Ne + 1
            Next j
        End If
        tuxing1.command.Text = tuxing1.command.Text + "第" + Str(i) + "层地震g" + Str(G(i)) + "和 Hi(i)" + Str(Hi(i)) + "和 Hi(i) * G(i)" + Str(Hi(i) * G(i)) + vbCrLf
        Ge = Ge + G(i)
        ∑GiHi = ∑GiHi + Hi(i) * G(i)

    Next i
    fek = 0.85 * αl * Ge   '单榀框架所承受地震力
    tuxing1.command.Text = tuxing1.command.Text + "单榀框架所承受地震力" + Str(fek) + vbCrLf
    Open Fname & "地震作用" For Random As #10 Len = Len(荷载)
        Erase Ld()
        For i = 1 To Ncell - 柱总数
            Put #10, i, Ld(i)
        Next i
        Call 顶点附加作用系数δn表(Tl, Tg, δn)
        For i = 1 To Cengshu
            Ne = i * (Kuashu + 1) + 1
            XYM(Ne, 1) = G(i) * Hi(i) * fek * (1 - δn) / ∑GiHi
            If i = Cengshu Then XYM(Ne, 1) = XYM(Ne, 1) + fek * δn
            tuxing1.command.Text = tuxing1.command.Text + "第" + Str(i) + "层地震力" + Str(XYM(Ne, 1)) + vbCrLf
        Next i
    Close #10
End Sub
Sub 活荷载(AB As String) '布置原理参见"混凝土结构下册"123页"四、竖向活荷载的最不利布置"
    Dim 荷载 As 单元荷载
    Dim temp As Integer
    Dim temp1 As Single
    Dim Focus As Single             '集中力
    Dim F(200) As Single
    If AB = "A" Then temp = 1 Else temp = 0
    Call 节点力清空
    Open Fname & "活荷载" & AB For Random As #10 Len = Len(荷载)
    Erase Ld()
    For i = 1 To Ncell - 柱总数
        Put #10, i, Ld(i)
    Next i
    For i = 1 To Cengshu
        If i = Cengshu Then
            temp1 = Val(屋面均布活荷载)
        Else
            temp1 = Val(楼面均布活荷载)
        End If
        For j = temp + (i Mod 2) To Kuashu Step 2
            Ne = 柱总数 + (i - 1) * Kuashu + j
            Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
            Ld(Ne).Pq = "T"
            If L > Val(相邻框架间距) / 1000 Then
                Ld(Ne).s = temp1 * Val(相邻框架间距) / 1000
                Ld(Ne).Po = Val(相邻框架间距) / 2 / 1000        '单位:米
            Else
                Ld(Ne).s = temp1 * L
                Ld(Ne).Po = L / 2
            End If
            Put #10, Ne - 柱总数, Ld(Ne)
        Next j
    Next i
    Close #10
    For i = 柱总数 + 1 To Ncell '考虑活载不利布置由连梁传递的集中力
        Call SetT(i, L, sinA, cosA, X1, Y1, x2, y2)
            If L > Val(相邻框架间距) / 1000 Then
                    '框架间距即柱距
               Focus = (Ld(i).s / 2) * Val(相邻框架间距) / 1000 / 2
            Else
               Focus = (Ld(i).s / 2) * (Val(相邻框架间距) / 1000 - L / 2)
            End If
            F(NGN(i, 1)) = F(NGN(i, 1)) + Focus
            F(NGN(i, 2)) = F(NGN(i, 2)) + Focus
    Next i
    For i = Kuashu + 2 To Nodg
        XYM(i, 2) = -F(i)
    Next i
End Sub
Sub 逐跨活荷载(Ne As Integer)
    Dim 荷载 As 单元荷载
    Dim temp1 As Single
    Dim Focus As Single             '集中力
    Dim F(200) As Single
    Call 节点力清空
    Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
    Open Fname & "逐跨活荷载" & Str(Ne) For Random As #10 Len = Len(荷载)
        Erase Ld()
        For j = 1 To Ncell - 柱总数
            Put #10, i, Ld(i)
        Next j
        Ld(Ne).Pq = "T"
        If Nodg - Ne < Kuashu Then
            temp1 = Val(屋面均布活荷载)
        Else
            temp1 = Val(楼面均布活荷载)
        End If
        If L > Val(相邻框架间距) / 1000 Then
            Ld(Ne).s = temp1 * Val(相邻框架间距) / 1000
            Ld(Ne).Po = Val(相邻框架间距) / 2 / 1000        '单位:米
        Else
            Ld(Ne).s = temp1 * L
            Ld(Ne).Po = L / 2
        End If
    Put #10, Ne - 柱总数, Ld(Ne)
    Close #10
    '考虑活载不利布置由连梁传递的集中力
    If L > Val(相邻框架间距) / 1000 Then
            '框架间距即柱距
       Focus = -(Ld(i).s / 2) * Val(相邻框架间距) / 1000 / 2
    Else
       Focus = -(Ld(i).s / 2) * (Val(相邻框架间距 / 1000) - L / 2)
    End If
    XYM(NGN(i, 1), 2) = XYM(NGN(i, 1), 2) + Focus
    XYM(NGN(i, 2), 2) = XYM(NGN(i, 2), 2) + Focus
End Sub
Sub 定限(H As Single, h1 As Single, h2 As Single, μz1 As Single, μz2 As Single)
    If H <= 5 Then
        μz1 = 0.8
        μz2 = 1#
        h1 = 0
    ElseIf H <= 10 Then
        μz1 = 1
        μz2 = 1.14
        h1 = 5
    ElseIf H <= 20 Then
        μz1 = 1.14
        μz2 = 1.25
        h1 = 10
    ElseIf H <= 30 Then
        μz1 = 1.25
        μz2 = 1.42
        h1 = 20
    ElseIf H <= 40 Then
        μz1 = 1.42
        μz2 = 1.56
        h1 = 40
    ElseIf H <= 50 Then
        μz1 = 1.56
        μz2 = 1.67
        h1 = 40
    ElseIf H <= 60 Then
        μz1 = 1.67
        μz2 = 1.77
        h1 = 50
    Else: μz1 = 1
          μz2 = 1
    End If
    h2 = H
End Sub
Sub 节点力清空()
     Dim i, j
     Erase XYM(), Ld(), A(), D()
     For i = 1 To Kuashu + 1
        For j = 1 To 3
            XYM(i, j) = 0
        Next j
    Next i
End Sub
Sub 求梁高宽(i, j, B, H)
    Dim temp As String, N, M, N1 As Integer
    temp = BTable(i, j)
    N = InStr(temp, "*")
    M = InStr(temp, "C")
    N1 = Len(temp)
    B = Val(Left$(temp, N - 1))
    H = Val(Mid$(temp, N + 1, M - N - 1))
End Sub
Sub 求柱高宽(i, j, B, H)
    Dim temp As String, N, M, N1 As Integer
    temp = CTable(i, j)
    N = InStr(temp, "*")
    M = InStr(temp, "C")
    N1 = Len(temp)
    B = Val(Left$(temp, N - 1))
    H = Val(Mid$(temp, N + 1, M - N - 1))
End Sub

⌨️ 快捷键说明

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