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

📄 梁配筋.bas

📁 钢筋混凝土框架结构设计计算源程序
💻 BAS
📖 第 1 页 / 共 4 页
字号:
                Mmax1 = Mmax2
            End If
        End With

        '取原来的Mmax1比较
        Get #20, i - 柱总数, 梁端力  '梁不利.M1 存放的是最大弯矩
        If 梁端力.N1 < Mmax1 Then 梁端力.N1 = Mmax1
        Put #20, i - 柱总数, 梁端力
    Next i
    Close #1, #2, #3, #4, #5, #6, #11, #12, #13, #14, #15, #16, #20
End Sub

'此过程改变了正负号的规定,M以下部受拉为正,Q以顺时针为正。
'考虑柱截面的因素,调用此过程会改变原来的梁端弯矩.
Sub 梁端力调整()
    Dim i As Integer, N1 As Integer, M1 As Single, M2 As Single, file
    Dim loads As New Collection, Q1 As Single, Q2 As Single, V1 As Single, V2 As Single
    Dim Lch As Single, Rch As Single, ii As Integer
    Dim n As Integer
    Dim 梁端力 As 杆端内力, 后缀名 As String
    Dim 荷载 As 单元荷载, a
    Dim qq As Single  '荷载大小
    loads.Add "梯形恒载内力"
    loads.Add "均布恒载内力"
    loads.Add "风荷载内力"
    loads.Add "地震作用内力"
    loads.Add "活荷载A内力"
    loads.Add "活荷载B内力"
    For Each file In loads
        n = InStr(file, "内")
        后缀名 = Left(file, n - 1)
        Open Fname & file For Random As #10 Len = Len(梁端力)
        Open Fname & 后缀名 For Random As #11 Len = Len(荷载)
        ii = 柱总数 + 1     '第一根梁的单元编号
        For i = ii To Ncell
            Get #10, i, 梁端力
            Get #11, i - 柱总数, 荷载
            M1 = 梁端力.M1
            M2 = 梁端力.M2
            Q1 = 梁端力.Q1
            Q2 = 梁端力.Q2
            qq = 荷载.s
            '梁单元端部柱单元编号=梁端结点号-柱总数(跨数+1)
            Lch = BH(NGN(i, 1) - Kuashu - 1, 2) / 1000 '梁左单元端柱截面高
            Rch = BH(NGN(i, 2) - Kuashu - 1, 2) / 1000 '梁右单元端柱截面高
            If 荷载.Pq = "T" Then           '梁端截面M,Q(V)
                a = 荷载.Po
                qq = qq * Lch / a / 2
                V1 = Q1 - qq * Lch / 4
                'M以上部受拉为负,Q以顺时针为正为正.
                M1 = -M1 + Q1 * Lch / 2 - qq * Lch ^ 2 / 24
                V2 = -Q2 + qq * Rch / 4
                M2 = M2 + Q2 * Rch / 2 - qq * Rch ^ 2 / 24
            Else
                V1 = Q1 - qq * Lch / 2
                M1 = -M1 + Q1 * Lch / 2 - qq * (Lch / 2) ^ 2 / 2
                V2 = -Q2 + qq * Rch / 2
                M2 = M2 + Q2 * Rch / 2 - qq * (Rch / 2) ^ 2 / 2
            End If
            梁端力.M1 = M1
            梁端力.M2 = M2
            梁端力.Q1 = V1
            梁端力.Q2 = V2
            Put #10, i, 梁端力
        Next i
        Close #10, #11
    Next file
End Sub


Sub 梁端M_恒12活14()   '1.2*恒载+1.4*活荷载
    Dim ii, i As Integer, M1 As Single, M2 As Single
    Dim M1_ As Single, M2_ As Single  '新得到的数
    Dim Q1 As Single, Q2 As Single, Q1_ As Single, Q2_ As Single
    Dim 梁端力 As 杆端内力
    Open Fname & "梯形恒载内力" For Random As #1 Len = Len(梁端力)  '计算跨中弯矩
    Open Fname & "均布恒载内力" For Random As #2 Len = Len(梁端力)
    Open Fname & "活荷载A内力" For Random As #3 Len = Len(梁端力)
    Open Fname & "活荷载B内力" For Random As #4 Len = Len(梁端力)
    Open Fname & "梁不利" For Random As #20 Len = Len(梁端力)
    
    ii = 柱总数 + 1
    For i = ii To Ncell
        With 梁端力
            Get #1, i, 梁端力
            M1 = .M1 * 1.2
            M2 = .M2 * 1.2
            Q1 = .Q1 * 1.2
            Q2 = .Q2 * 1.2
            
            Get #2, i, 梁端力
            M1 = M1 + .M1 * 1.2
            M2 = M2 + .M2 * 1.2
            Q1 = Q1 + .Q1 * 1.2
            Q2 = Q2 + .Q2 * 1.2
            
            Get #3, i, 梁端力
            M1_ = .M1 * 1.4
            M2_ = .M2 * 1.4
            Q1_ = .Q1 * 1.4
            Q2_ = .Q2 * 1.4
            If M1 * M1_ > 0 Then M1 = M1 + M1_
            If M2 * M2_ > 0 Then M2 = M2 + M2_
            If Q1 * Q1_ > 0 Then Q1 = Q1 + Q1_
            If Q2 * Q2_ > 0 Then Q2 = Q2 + Q2_
            
            Get #4, i, 梁端力
            M1_ = .M1 * 1.4
            M2_ = .M2 * 1.4
            Q1_ = .Q1 * 1.4
            Q2_ = .Q2 * 1.4
            If M1 * M1_ > 0 Then M1 = M1 + M1_
            If M2 * M2_ > 0 Then M2 = M2 + M2_
            If Q1 * Q1_ > 0 Then Q1 = Q1 + Q1_
            If Q2 * Q2_ > 0 Then Q2 = Q2 + Q2_
             .M1 = M1
             .M2 = M2
             .Q1 = Q1
             .Q2 = Q2
            Put #20, i - 柱总数, 梁端力
        End With
    Next i
    Close #1, #2, #3, #4, #20
End Sub
Sub 梁端M_恒12活风1485()       '1.2*恒载+(1.4*活载+1.4*风载)*0.85
    Dim ii, i As Integer, M1 As Single, M2 As Single
    Dim M1_ As Single, M2_ As Single  '新得到的数
    Dim Q1 As Single, Q2 As Single, Q1_ As Single, Q2_ As Single
    Dim 梁端力 As 杆端内力
    Open Fname & "梯形恒载内力" For Random As #1 Len = Len(梁端力)  '计算跨中弯矩
    Open Fname & "均布恒载内力" For Random As #2 Len = Len(梁端力)
    Open Fname & "活荷载A内力" For Random As #3 Len = Len(梁端力)
    Open Fname & "活荷载B内力" For Random As #4 Len = Len(梁端力)
    Open Fname & "风荷载内力" For Random As #5 Len = Len(梁端力)
    Open Fname & "梁不利" For Random As #20 Len = Len(梁端力)
    
    ii = 柱总数 + 1
    For i = ii To Ncell
        With 梁端力
            Get #1, i, 梁端力
            M1 = .M1 * 1.2
            M2 = .M2 * 1.2
            Q1 = .Q1 * 1.2
            Q2 = .Q2 * 1.2
            
            Get #2, i, 梁端力
            M1 = M1 + .M1 * 1.2
            M2 = M2 + .M2 * 1.2
            Q1 = Q1 + .Q1 * 1.2
            Q2 = Q2 + .Q2 * 1.2
            
            Get #3, i, 梁端力
            M1_ = .M1 * 1.19            '1.19=0.85*1.4
            M2_ = .M2 * 1.19
            Q1_ = .Q1 * 1.19
            Q2_ = .Q2 * 1.19
            If M1 * M1_ > 0 Then M1 = M1 + M1_
            If M2 * M2_ > 0 Then M2 = M2 + M2_
            If Q1 * Q1_ > 0 Then Q1 = Q1 + Q1_
            If Q2 * Q2_ > 0 Then Q2 = Q2 + Q2_
            
            Get #4, i, 梁端力
            M1_ = .M1 * 1.19             '1.19=0.85*1.4
            M2_ = .M2 * 1.19
            Q1_ = .Q1 * 1.19
            Q2_ = .Q2 * 1.19
            If M1 * M1_ > 0 Then M1 = M1 + M1_
            If M2 * M2_ > 0 Then M2 = M2 + M2_
            If Q1 * Q1_ > 0 Then Q1 = Q1 + Q1_
            If Q2 * Q2_ > 0 Then Q2 = Q2 + Q2_
            
            Get #5, i, 梁端力      '风载
            M1_ = .M1 * 1.19
            M2_ = .M2 * 1.19
            Q1_ = .Q1 * 1.19
            Q2_ = .Q2 * 1.19
            M1 = M1 + M1_ * Sgn(M1 * M1_) 'Sgn(number) 函数返回一个 Variant (Integer),指出参数的正负号
            M2 = M2 + M2_ * Sgn(M2 * M2_) '如果 number 为 Sgn 返回
            Q1 = Q1 + Q1_ * Sgn(Q1 * Q1_) '     大于 0          1
            Q2 = Q2 + Q2_ * Sgn(Q2 * Q2_) '     等于 0          0
                                          '     小于 0         - 1
            '与梁端M_恒12活14比较.Q,M
            Get #20, i - 柱总数, 梁端力
            If .M1 < M1 Then .M1 = M1
            If .M2 < M2 Then .M2 = M2
            If Abs(.Q1) < Abs(Q1) Then .Q1 = Q1
            If Abs(.Q2) < Abs(Q2) Then .Q2 = Q2
            Put #20, i - 柱总数, 梁端力
        End With
     Next i
     Close #1, #2, #3, #4, #5, #20
End Sub
Sub 梁端M_恒活12地震13()      '1.2*(恒载+0.5*活载)+1.3*水平地震
    Dim ii, i As Integer, M1 As Single, M2 As Single
    Dim M1_ As Single, M2_ As Single  '新得到的数
    Dim Q1 As Single, Q2 As Single, Q1_ As Single, Q2_ As Single
    Dim γRe As Single '考虑地震是一种偶然作用,时间短,对承载力作相应的调整。
    Dim 梁端力 As 杆端内力
    Open Fname & "梯形恒载内力" For Random As #1 Len = Len(梁端力)  '计算跨中弯矩
    Open Fname & "均布恒载内力" For Random As #2 Len = Len(梁端力)
    Open Fname & "活荷载A内力" For Random As #3 Len = Len(梁端力)
    Open Fname & "活荷载B内力" For Random As #4 Len = Len(梁端力)
    Open Fname & "地震作用内力" For Random As #5 Len = Len(梁端力)
    Open Fname & "梁不利" For Random As #20 Len = Len(梁端力)
    ii = 柱总数 + 1
    For i = ii To Ncell
        With 梁端力
            Get #1, i, 梁端力
            M1 = .M1 * 1.2
            M2 = .M2 * 1.2
            Q1 = .Q1 * 1.2
            Q2 = .Q2 * 1.2
            
            Get #2, i, 梁端力
            M1 = M1 + .M1 * 1.2
            M2 = M2 + .M2 * 1.2
            Q1 = Q1 + .Q1 * 1.2
            Q2 = Q2 + .Q2 * 1.2
            
            Get #3, i, 梁端力
            M1_ = .M1 * 0.6           '0.6=0.5*1.2
            M2_ = .M2 * 0.6
            Q1_ = .Q1 * 0.6
            Q2_ = .Q2 * 0.6
            If M1 * M1_ > 0 Then M1 = M1 + M1_
            If M2 * M2_ > 0 Then M2 = M2 + M2_
            If Q1 * Q1_ > 0 Then Q1 = Q1 + Q1_
            If Q2 * Q2_ > 0 Then Q2 = Q2 + Q2_
            
            Get #4, i, 梁端力
            M1_ = .M1 * 0.6            '0.6=0.5*1.2
            M2_ = .M2 * 0.6
            Q1_ = .Q1 * 0.6
            Q2_ = .Q2 * 0.6
            If M1 * M1_ > 0 Then M1 = M1 + M1_
            If M2 * M2_ > 0 Then M2 = M2 + M2_
            If Q1 * Q1_ > 0 Then Q1 = Q1 + Q1_
            If Q2 * Q2_ > 0 Then Q2 = Q2 + Q2_
            
            Get #5, i, 梁端力          '地震力
            M1_ = .M1 * 1.3
            M2_ = .M2 * 1.3
            Q1_ = .Q1 * 1.3
            Q2_ = .Q2 * 1.3
            γRe = 0.75                 '承载力抗震调正系数
            M1 = M1 + M1_ * Sgn(M1 * M1_) * γRe 'Sgn(number) 函数返回一个 Variant (Integer),指出参数的正负号
            M2 = M2 + M2_ * Sgn(M2 * M2_) * γRe '如果 number 为 Sgn 返回
            Q1 = Q1 + Q1_ * Sgn(Q1 * Q1_) * γRe '     大于 0          1
            Q2 = Q2 + Q2_ * Sgn(Q2 * Q2_) * γRe '     等于 0          0
                                                '     小于 0         - 1
            
            '与梁端M_恒12活14比较.Q,M
            Get #20, i - 柱总数, 梁端力
            If .M1 < M1 Then .M1 = M1
            If .M2 < M2 Then .M2 = M2
            If Abs(.Q1) < Abs(Q1) Then .Q1 = Q1
            If Abs(.Q2) < Abs(Q2) Then .Q2 = Q2
            Put #20, i - 柱总数, 梁端力
        End With
    Next i
    Close #1, #2, #3, #4, #5, #20
End Sub
Function 梁跨中主筋(弯矩M As Single, 单元号 As Integer)
    Dim H0 As Single, L As Single
    Dim ξb As Single, αsmax As Single, ξ As Single, αs As Single
    Dim n As Integer, M As Single, ii As Integer
    Dim D1 As Single, D2 As Single  'D保护层厚度
    Dim 梁端力 As 杆端内力, 梁不利 As 杆端内力
    Dim 抗震等级 As String, B As Integer, H As Integer
    Dim fcm As Single, fc As Single, fy As Single
    Dim 梁跨中As1 As Integer, 梁跨中As2 As Integer, 最小As As Integer
    Dim ρmin As Single
    Call 弯曲抗压及轴心抗压强度设计值表(混凝土标号(单元号), fcm, fc)
    Call 钢筋强度设计值表(grade(1), fy)
    抗震等级 = 求抗震等级()
    ρmin = 求ρmin("跨中", 抗震等级)
    B = BH(单元号, 1)
    H = BH(单元号, 2)
    M = 弯矩M * 10 ^ 6 'N*mm
    ξb = 0.544
    αsmax = 0.396
    D1 = 35   'mm
    D2 = 35
    H0 = H - D1
    αs = M / (fcm * B * H0 ^ 2)
    If αs <= αsmax Then
       ξ = 1 - Sqr(1 - 2 * αs)
       梁跨中As1 = ξ * (fcm / fy) * B * H0
       最小As = ρmin * B * H
'       最小As = 0.0025 * B * H
       If 最小As > 梁跨中As1 Then 梁跨中As1 = 最小As
    Else   '双筋梁
       梁跨中As2 = (M - αsmax * fcm * B * H0 ^ 2) / (fy * (H0 - D2))

⌨️ 快捷键说明

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