📄 柱配筋.bas
字号:
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 + -