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

📄 柱配筋.bas

📁 钢筋混凝土框架结构设计计算源程序
💻 BAS
📖 第 1 页 / 共 3 页
字号:
            
            Get #6, i, 柱端力   '柱端力中的数全为正
            If .Q1 < Abs(Q10) Then .Q1 = Abs(Q10)
            If .Q2 < Abs(Q20) Then .Q2 = Abs(Q20)
            If .N1 < Abs(N10) Then .N1 = Abs(N10)
            If .N2 < Abs(N20) Then .N2 = Abs(N20)
            Put #6, i, 柱端力
        End With
    Next i
    Close #1, #12, #3, #4, #5, #6
End Sub
'柱端力应进行调整,因为计算间图层高取为梁中到梁中的距离,在计算柱端弯矩时,因算到减去梁高度的一半的柱高.
'原正负号的规定为:'弯矩逆时针为正,顺时针为负,剪力轴力x、y正方向为正,负方向为负。经调整后的正负号规定为:轴力压为正,拉为负.
Sub 柱端力调整()
    Dim i As Integer, j 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 BBh As Integer, ABh As Integer, L As Single
    Dim 柱端力 As 杆端内力
    Dim qq As Single  '荷载大小
    loads.Add "梯形恒载内力"
    loads.Add "均布恒载内力"
    loads.Add "风荷载内力"
    loads.Add "地震作用内力"
    loads.Add "活荷载A内力"
    loads.Add "活荷载B内力"
    For Each file In loads
        Open Fname & file For Random As #10 Len = Len(柱端力)
        N1 = (Kuashu + 1) * Cengshu     '最后一根柱的单元编号
        j = Kuashu + 1
        For i = 1 To N1
            L = Length(i)
            Get #10, i, 柱端力
            With 柱端力
                If i <= j Then  '一层柱没有始点梁号
                    ABh = BH(i + N1, 2)  '柱单元上端梁截面高
                    If i = j Then ABh = BH(i + N1 - 1, 2)
                    .M2 = .M2 + .Q2 * ABh / 2
                    柱有效长度(i) = L - ABh
                Else
                    If i Mod N1 <> 0 Then
                        '柱单元端部梁单元编号=柱端结点号+柱总数-(Kuashu+1)
                        BBh = BH(NGN(i, 1) + N1 - Kuashu - 1, 2) '柱单元下端梁截面高
                        ABh = BH(NGN(i, 2) + N1 - Kuashu - 1, 2) '柱单元上端梁截面高
                    Else
                        BBh = BH(NGN(i, 1) + N1 - Kuashu, 2)  '柱单元下端梁截面高
                        ABh = BH(NGN(i, 2) + N1 - Kuashu, 2)  '柱单元上端梁截面高
                    End If
                    .M1 = .M1 - .Q1 * BBh / 2
                    .M2 = .M2 + .Q2 * ABh / 2
                    柱有效长度(i) = L - BBh - ABh
                End If
                .N2 = -.N2   '压为正
                柱λ(i) = 柱有效长度(i) / (2 * BH(i, 2))
            End With
            Put #10, i, 柱端力
        Next i
        Close #10
    Next file
End Sub
'对称配筋计算     计算弯矩 N*m   计算轴力 N
Function 柱端主筋(M As Single, n As Single, 单元号 As Integer)
    Dim D1 As Single, D2 As Single  '梁上下端保护层厚度
    Dim B As Integer, H As Integer, H0 As Integer, L0 As Single
    Dim fy As Single, fcm As Single, fc As Single
    Dim ξb As Single, ξ As Single, ζ1 As Single, ζ2 As Single
    Dim e0 As Single, ei As Single, ea As Single, e As Single, e1 As Single
    Dim X As Single, x1 As Single, 柱筋As As Integer  ' area As Single
    Dim σs As Single, η As Single, L As Single
    
    D1 = 35
    D2 = 35
    B = BH(单元号, 1)
    H = BH(单元号, 2)
    H0 = H - D1  'mm
    L = Length(单元号)
    L0 = L * 1000 'mm
    Call 弯曲抗压及轴心抗压强度设计值表(混凝土标号(单元号), fcm, fc)
    Call 钢筋强度设计值表(grade(2), fy)
    ξb = 0.544
    
    '下面各主要参数计算取值参见混凝土结构上册136页-138页
    e0 = (M * 1000 / n) 'mm     轴力对截面中心的偏心剧
    
    '考虑施工误差和计算误差的综合印象系数——附加偏心距
    If ea > 0.3 * H0 Then
        ea = 0
    Else
        ea = 0.12 * (0.3 * H0 - e0)
    End If
    
    ei = e0 + ea            '初始偏心距
    
    ζ1 = 0.2 + 2.7 * ei / H0   '截面修正系数
    If ζ1 > 1 Then ζ1 = 1
    
    If L0 / H0 < 15 Then
        ζ2 = 1
    Else
        ζ2 = 1.15 - 0.01 * L0 / H
    End If
    If ζ2 < 1 Then ζ2 = 1
    
    If L0 / H > 8 Then
        η = 1 + (L0 / H) * ζ1 * ζ2 / (1400 * (ei / H0))
    Else
        η = 1
    End If
    e = η * ei + H / 2 - D1  '对受拉筋而言的轴力作用点至受拉钢筋合力点的距离
    e1 = η * ei - H / 2 + D2 '对受压筋
    X = n / (fcm * B)         '受压区计算高度
    
    '参154页当x < 2 * a'时,可按不对称配筋计算方法计算
    If X < 2 * D2 Then
        柱筋As = n * e1 / (fy * (H0 - D2))
    ElseIf X <= ξb * H0 And X >= 2 * D2 Then  '大偏心
        柱筋As = (n * e - fcm * B * X * (H0 - X / 2)) / (fy * (H0 - D2))
    Else      'x > ξb * h0 小偏心  用牛顿迭代法解题可参见154页最后一行“简化方法一 用迭代法求解”
        X = (X + ξb * H0) / 2
        Do
            x1 = X
            柱筋As = (n * e - fcm * B * X * (H0 - X / 2)) / (fy * (H0 - D2))
            σs = (X / H0 - 0.8) * fy / (ξb - 0.8)
            X = (n - (fy - σs) * 柱筋As) / fcm / B
        Loop Until Abs(X - x1) < 1
    End If
    If 柱筋As < 0.007 * B * H / 2 Then 柱筋As = 0.007 * B * H / 2
    柱端主筋 = 柱筋As
End Function
'根据两端力找到最大配筋
Function 柱配筋(M10 As Single, N10 As Single, M20 As Single, _
                N20 As Single, 单元号 As Integer)
    Dim Asmax As Integer, As22 As Integer
    Asmax = 柱端主筋(Abs(M10), Abs(N10), 单元号)
    As_M = Abs(M10): As_N = Abs(N10)
    As22 = 柱端主筋(Abs(M20), Abs(N20), 单元号)
    If Asmax < As22 Then Asmax = As22: As_M = Abs(M20): As_N = Abs(N20)
    柱配筋 = Asmax
End Function
Function 柱端配箍(计算V As Single, 单元号 As Integer)
       '设计剪力     ' 极限剪力
    Dim Vc As Single, Vu As Single
    Dim B As Single, H As Single, H0 As Single, D1 As Single
    Dim fc As Single, fyv As Single, fy As Single
    Dim γRe As Single, temp As Single
    Dim Asv As Integer, Asv1 As Integer
    Dim s As Integer, D As Integer
       '剪跨比       轴压比        框架柱轴向力设计值,
    Dim λ As Single, μ As Single, n As Single, λ1 As Single
    '钢筋包围的混凝土核心面积的两边长. 钢箍总厂    钢箍单肢面积
    Dim L1 As Single, L2 As Single, Lsh As Single, ash As Single
    Dim 钢筋直径D As Variant, 柱端力 As 杆端内力
    Dim Dmax As Integer '纵筋最大直径.
    Dim 肢数N As Integer, 肢数 As String   '钢筋肢数
       '体积配箍率    最小体积配箍率     计算配箍率
    Dim ρv As Single, ρvmin As Single, ρsv As Single
    Dim Smax As Integer       '箍筋最大间距 8d,100mm中取小.
    Dim i As Integer, Ne As Integer '单元号
    Dim π As Single, fg1 As Single
    Dim fg As Integer, fcm As Single
    Dim St As String, Str1 As String

    Ne = 单元号
    钢筋直径D = Array("Φ8@", "Φ10@")
    B = BH(单元号, 1)
    H = BH(单元号, 2)
    D1 = 30
    H0 = H - D1  'mm
    Call 弯曲抗压及轴心抗压强度设计值表(混凝土标号(单元号), fcm, fc)
    Call 钢筋强度设计值表(grade(4), fy)
    fyv = fy                'N/mm^2  Ⅰ级钢。
    D1 = 35
    H0 = H - D1
    L1 = B - 2 * 45 'mm
    L2 = H - 2 * 45 'mm
    
    λ = 柱λ(Ne)
    λ1 = 柱λ(Ne)
    '规范
    If λ > 3 Then λ = 3
    
    Open Fname & "柱端力" For Random As #1 Len = Len(柱端力)
       Get #1, Ne, 柱端力
       n = Abs(柱端力.N1) * 1000 'N
    Close #1
    
    '规范
    If n > 0.3 * fc * B * H0 Then n = 0.3 * fc * B * H0
    
    μ = Val(Form8.Grid2.TextMatrix(Ne, 4))
    
    '根据轴压比选择最小体积配筋率
    If μ < 0.4 Then
        ρvmin = 0.007
    ElseIf μ >= 0.4 And μ <= 0.6 Then
        ρvmin = 0.01
    ElseIf μ > 0.6 Then
        ρvmin = 0.013
    End If
    '短柱
    If λ1 <= 2 And ρvmin < 0.01 Then ρvmin = 0.01
    
    Dmax = Val(Right(Form8.Grid2.TextMatrix(Ne, 2), 2))
    Vc = 计算V  'N
    Call 梁中箍筋最大间距(temp, Vc, Smax, 单元号)
    γRe = 0.85   '斜截面抗剪
    Vu = (1 / γRe) * 0.2 * fc * B * H0
    fg1 = 0
    If Vu < Vc Then
       fg = 0
       GoTo L
    Else
       fg = 1
    End If
    '抗剪公式 Vc<=(0.8/γRe)*((0.2/(λ+1.5))*fc*b*h0+1.25*fyv*(Asv/s)*h0
    '              +0.07)
    ρsv = Abs(Vc * (γRe / 0.8) - 0.2 * fc * B * H0 / (λ + 1.5) - 0.007 * n) / (1.25 * fyv * H0 * B)
    π = 3.1415926
    If ρsv <= 0 Then ρsv = 0.0000001
    '选筋
    肢数N = 2
k:
    For i = 0 To 1
       D = Val(Mid(钢筋直径D(i), 2))
       Asv1 = π * D ^ 2 / 4
       ash = Asv1
       Asv = 肢数N * Asv1
       s = Asv / (ρsv * B)        'ρsv = Asv / (S * b)
       s = Int(s / 10) * 10 '将S调整为整数。
       If 肢数N = 2 Then    '计算箍筋长度
         Lsh = 2 * (B + H - 140)  'mm
       ElseIf 肢数N = 4 Then
         Lsh = 2 * (B + H - 140) + 4 * Sqr((B - 70) ^ 2 / 4 + (H - 70) ^ 2 / 4) 'mm
       End If
M:
       ρv = ash * Lsh / (L1 * L2 * s)
       If s >= 50 And ρv >= ρvmin Then
          GoTo L
       ElseIf s >= 50 And ρv < ρvmin Then  '调间距
          s = s - 10
          fg1 = 1
          GoTo M
       End If
       If i = 1 And D = 10 And 肢数N = 4 Then GoTo L
       If i = 1 And D = 10 Then 肢数N = 4: GoTo k
    Next i
L:
    If fg = 0 Then
       柱端配箍 = "加大截面"
    Else
       If 肢数N = 2 Then 肢数 = "双肢"
       If 肢数N = 4 Then 肢数 = "四肢"
       If s >= Smax Then s = Smax
       If (肢数N = 2 And s = Smax And i = 0) Or fg1 = 1 Then
          Str1 = "构造 "
       Else
          Str1 = ""
       End If
       柱端配箍 = Str1 + 肢数 + 钢筋直径D(i) + Mid(Str(s), 2)    '+ "  " + Str(Asv / (b * S))
       柱端ρ(Ne) = Asv / (B * s)
    End If
End Function
Function 柱配筋后可承载极限剪力(单元号 As Integer)
   Dim Ne As Integer, Mu As Single
   Dim γRe As Single
   Dim H0 As Single
   γRe = 0.75
   Ne = 单元号
   H0 = 柱有效长度(Ne)
   Mu = 2 * 柱配筋后可承载极限弯矩(Ne)
   柱配筋后可承载极限剪力 = (1.1 / γRe) * (Mu / H0)  'N
End Function
Function 柱配筋后可承载极限弯矩(单元号 As Integer)
    Dim i As Integer, Ne As Integer '1,2,3...
    Dim 柱端力 As 杆端内力, n As Single
    Dim γRe As Single, fyk As Integer, fek As Single, fcmk As Single  'N/mm^2
    Dim 柱As As Single 'mm^2
    Dim B As Single, H0 As Single, H As Single
    Dim D1 As Single, D2 As Single, X As Single

    γRe = 0.75
    Ne = 单元号
    Call 钢筋强度标准值表(grade(2), fyk)
    Call 弯曲抗压及轴心抗压强度标准值表(混凝土标号(单元号), fcmk, fek)
    B = BH(Ne, 1)
    H = BH(Ne, 2)
    D1 = 35: D2 = 35
    H0 = H - D1
    柱As = Val(Form8.Grid2.TextMatrix(Ne, 3)) / 2 '.TextMatrix(0, 3) = "实配"

    Open Fname & "重力荷载代表值_N" For Random As #1 Len = Len(柱端力)
        Get #1, Ne, 柱端力
        n = 柱端力.N1
        If n < Abs(柱端力.N2) Then n = Abs(柱端力.N2)
        X = n / (fcmk * B)
        柱配筋后可承载极限弯矩 = (fcmk * B * X * (H0 - 0.5 * X) + fyk * 柱As * (H0 - D2) _
                   - n * (H0 / 2 - D1)) / (γRe * 1000) 'N*m
    Close #1
End Function

Sub 重力荷载代表值_活载内力() '50%
    Dim 柱端力 As 杆端内力
    Dim i As Integer
    Dim N1 As Single, N2 As Single
    
    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(柱端力)
    
    For i = 1 To 柱总数
        With 柱端力
            Get #3, i, 柱端力
            N1 = .N1 * 0.5
            N2 = .N2 * 0.5
                
            Get #4, i, 柱端力
            N1 = N1 + .N1 * 0.5
            N2 = N2 + .N2 * 0.5
            
            Put #5, i, 柱端力
            .N1 = N1
            .N2 = N2
        End With
    Next i
End Sub

Sub 计算重力荷载代表值下的N() '100%恒载和50%的活载.用于强柱弱梁的校和 Mc=1.1Mb
    Dim 柱端力 As 杆端内力
    Dim 重力荷载代表值类型 As String
    Dim i As Integer, j As Integer
    Dim N1 As Single, N2 As Single '迭加用
    
    Open Fname & "梯形恒载内力" For Random As #1 Len = Len(柱端力)  '计算跨中弯矩
    Open Fname & "均布恒载内力" For Random As #12 Len = Len(柱端力)
    Open Fname & "重力荷载代表值_活载内力" For Random As #3 Len = Len(柱端力)
    Open Fname & "重力荷载代表值_N" For Random As #22 Len = Len(柱端力)
    
    For i = 1 To 柱总数
        N1 = 0: N2 = 0
        With 柱端力
            Get #1, i, 柱端力
            N1 = N1 + .N1
            N2 = N2 + .N2
            Get #12, i, 柱端力
            N1 = N1 + .N1
            N2 = N2 + .N2
            Get #3, i, 柱端力
            .N1 = N1 + .N1
            .N2 = N2 + .N2
            Put #22, i, 柱端力
      End With
    Next i
    Close #1, #12, #3, #22

⌨️ 快捷键说明

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