📄 梁配筋.bas
字号:
梁跨中As1 = 梁跨中As2 + ξb * (fcm / fy) * B * H0
End If
梁跨中主筋 = Str(梁跨中As1) + "|" + Str(梁跨中As2)
End Function
Function 梁端主筋(弯矩M As Single, 单元号 As Integer, 跨中主筋面积 As Integer)
Dim ξ As Single, αs As Single
Dim SD1 As Single, SD2 As Single, X As Single
Dim B As Integer, H As Integer, H0 As Integer
Dim fy As Single, fcm As Single, fc As Single, M As Single
Dim 抗震等级 As String
Dim ρmin As Single
'拉区钢筋
Dim 梁端As1 As Integer, 梁端As2 As Integer, 最小As As Integer
抗震等级 = 求抗震等级()
ρmin = 求ρmin("支座", 抗震等级)
B = BH(单元号, 1)
H = BH(单元号, 2)
Call 弯曲抗压及轴心抗压强度设计值表(混凝土标号(单元号), fcm, fc)
Call 钢筋强度设计值表(grade(1), fy)
SD1 = 35 '保护层厚度 mm
SD2 = 35 '保护层厚度
H0 = H - SD1
M = Abs(弯矩M * 10 ^ 6) 'N*mm
ξ = 0.35
αs = ξ * (1 - 0.5 * ξ)
'计算As
梁端As2 = (M - αs * fcm * B * H0 ^ 2) / (fy * (H0 - SD2))
If 梁端As2 < 0 Then
梁端As2 = 0
X = H0 - Sqr(H0 ^ 2 - 2 * M / (fcm * B))
梁端As1 = fcm * B * X / fy
Else
梁端As1 = 梁端As2 + ξ * (fcm / fy) * B * H0
End If
If 梁端As2 < 跨中主筋面积 Then 梁端As2 = 跨中主筋面积
最小As = 0.003 * B * H0
If 最小As > 梁端As1 + 梁端As2 Then 梁端As1 = 最小As - 梁端As2
梁端主筋 = Str(梁端As1) + "|" + Str(梁端As2)
End Function
Function 梁跨中配箍筋(计算V As Single, 单元号 As Integer)
'N 设计剪力 'N 极限剪力 '构造要求
Dim Vb As Single, Vu As Single, V As Single
Dim B As Integer, H As Integer, H0 As Integer, SD As Integer
Dim fc As Single, fyv As Single, fcm As Single, fy As Single
Dim γRe As Single '考虑地震是一种偶然作用,时间短,对承载力作相应的调整。
Dim Asv As Integer, Asv1 As Integer
Dim s As Integer, D As Integer
Dim 钢筋直径D As Variant
Dim 肢数N As Integer '箍筋肢数
'配箍率
Dim ρsv As Single, 计算ρsv As Single, ρsvmin As Single
Dim i As Integer
Dim π As Single
Dim fg As Integer
Dim 肢数 As String, St As String, temp As String
钢筋直径D = Array("Φ8@", "Φ10@")
B = BH(单元号, 1)
H = BH(单元号, 2)
Call 弯曲抗压及轴心抗压强度设计值表(混凝土标号(单元号), fcm, fc)
Call 钢筋强度设计值表(grade(3), fy)
fyv = fy
SD = 35 '保护层厚度
H0 = H - SD
ρsvmin = 0.03 * fc / fyv
γRe = 0.85 '斜截面抗剪
Vb = 计算V 'N
Vu = (0.8 / γRe) * 0.2 * fc * B * H0
V = (0.8 / γRe) * (0.07 * fc * B * H0)
If Vu < Vb Then
fg = 0
GoTo L
Else
fg = 2
End If
'抗剪公式 V <= (0.8 / γRe) * (0.07 * fc * b * h0 + 1.5 * fyv * (Asv / s) * h0)
ρsv = (Vb * (γRe / 0.8) - (0.07 * fc * B * H0)) / ((1.5 * fyv * H0) * B)
If ρsv < ρsvmin Then
ρsv = ρsvmin
temp = "构造 "
Else
temp = ""
End If
π = 3.1415926
'选筋
肢数N = 2
k:
For i = 0 To 1
D = Val(Mid(钢筋直径D(i), 2))
Asv1 = π * D ^ 2 / 4
Asv = 肢数N * Asv1
s = Asv / (ρsv * B) 'ρsv = Asv / (S * b)
s = Int(s / 10) * 10 '将S调整为整数。
If s >= 50 Then GoTo L
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 肢数 = "四肢"
梁跨中配箍筋 = temp + 肢数 + 钢筋直径D(i) + Mid(Str(s), 2)
End If
End Function
Function 梁端斜截面配箍(计算V As Single, 单元号 As Integer)
'设计剪力 '极限剪力 '构造要求
Dim Vb As Single, Vu As Single, V As Single
Dim B As Integer, H As Integer, H0 As Integer, as1 As Integer
Dim fc As Single, fyv As Single, fcm As Single, fy As Single
Dim γRe As Single '考虑地震是一种偶然作用,时间短,对承载力作相应的调整。
Dim Asv As Integer, Asv1 As Integer, temp As Single
Dim s As Integer, D As Integer, SD As Integer
Dim 钢筋直径D As Variant
Dim Dmax As Integer '纵筋最大直径.
Dim 肢数N As Integer '钢筋肢数
'配箍率
Dim ρsv As Single, 计算ρsv As Single, ρsvmin As Single
Dim Smax As Integer '箍筋最大间距
Dim i As Integer
Dim π As Single
Dim fg As Integer
Dim 肢数 As String, St As String, Str1 As String
钢筋直径D = Array("Φ8@", "Φ10@")
B = BH(单元号, 1)
H = BH(单元号, 2)
Call 弯曲抗压及轴心抗压强度设计值表(混凝土标号(单元号), fcm, fc)
Call 钢筋强度设计值表(grade(3), fy)
fyv = fy
SD = 35 '保护层厚度
H0 = H - SD
ρsvmin = 0.03 * fc / fyv
γRe = 0.85 '斜截面抗剪
Vb = 计算V 'N
Vu = (0.8 / γRe) * 0.2 * fc * B * H0
V = (0.8 / γRe) * (0.07 * fc * B * H0)
temp = 0.07 * fc * B * H0
Call 梁中箍筋最大间距(temp, Vb, Smax, 单元号)
If Vu < Vb Then
fg = 0
GoTo L
ElseIf V >= Vb Then
fg = 1
GoTo L
Else
fg = 2
End If
'抗剪公式 V <= (0.8 / γRe) * (0.07 * fc * b * h0 + 1.5 * fyv * (Asv / s) * h0)
ρsv = (Vb * (γRe / 0.8) - (0.07 * fc * B * H0)) / ((1.5 * fyv * H0) * B)
π = 3.1415926
'选筋
肢数N = 2
k:
For i = 0 To 1
D = Val(Mid(钢筋直径D(i), 2))
Asv1 = π * D ^ 2 / 4
Asv = 肢数N * Asv1
s = Asv / (ρsv * B) 'ρsv = Asv / (S * b)
s = Int(s / 10) * 10 '将S调整为整数。
If s >= 50 Then GoTo L
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
梁端斜截面配箍 = "加大截面尺寸"
ElseIf fg = 1 Then
梁端斜截面配箍 = "构造 " + "双肢" + 钢筋直径D(0) + Mid(Str(Smax), 2)
Else
If 肢数N = 2 Then 肢数 = "双肢"
If 肢数N = 4 Then 肢数 = "四肢"
If s >= Smax Then s = Smax
If 肢数N = 2 And s = Smax And i = 0 Then
Str1 = "构造 "
Else
Str1 = ""
End If
梁端斜截面配箍 = Str1 + 肢数 + 钢筋直径D(i) + Mid(Str(s), 2) '+ " " + Str(Asv / (b * S))
End If
End Function
Function 选配筋组合(计算As As Integer)
Dim 配筋组合面积 As Single, k As Integer
Dim i As Integer, j As Integer, ii As Integer
Dim 可选配筋组合表 As Variant
Dim temp As String, 实配钢筋面积 As Integer
Dim N1 As Integer, N2 As Integer
'第一次调用时需要排序配筋组合
If 是否排序过 = 0 Then
可选配筋组合表 = Array("2Φ10", "4Φ10", "4Φ12", "2Φ12", "2Φ14", "2Φ16", _
"2Φ18", "2Φ20", "2Φ22", "2Φ25", "2Φ16+1Φ12", "2Φ20+1Φ16", _
"2Φ25+1Φ20", "2Φ25+Φ16", "3Φ14", "3Φ16", "3Φ18", "3Φ20", _
"3Φ22", "2Φ25+1Φ22", "3Φ25", "4Φ25", "4Φ20", "4Φ28", "end")
'取出组合
ii = 0
For i = 1 To 100
配筋组合(i) = 可选配筋组合表(i - 1)
If 配筋组合(i) = "end" Then Exit For
ii = ii + 1
Next i
'计算面积
ii = i - 1
For i = 1 To ii
配筋组合面积 = 0
temp = 配筋组合(i)
Do
N1 = InStr(temp, "Φ")
N2 = InStr(temp, "+")
配筋组合面积 = 配筋组合面积 + Val(temp) * (Val(Mid$(temp, N1 + 1)) / 2) ^ 2 * 3.1416
If N2 > 0 Then
temp = Mid$(temp, N2 + 1)
Else
钢筋面积(i) = 配筋组合面积
Exit Do
End If
Loop
Next i
'气泡排序法,结果为从小到大排列。
For i = 1 To ii - 1
For j = ii - 1 To i Step -1
If 钢筋面积(j) > 钢筋面积(j + 1) Then
k = 钢筋面积(j + 1)
钢筋面积(j + 1) = 钢筋面积(j)
钢筋面积(j) = k
temp = 配筋组合(j + 1)
配筋组合(j + 1) = 配筋组合(j)
配筋组合(j) = temp
End If
Next j
Next i
是否排序过 = 1
End If
'通过比擂台选筋
For i = 1 To 100
If 计算As <= 钢筋面积(i) Then
选配筋组合 = 配筋组合(i)
实配钢筋面积 = 钢筋面积(i)
Exit For
End If
Next i
选配筋组合 = 选配筋组合 + "=" + Mid(Str(实配钢筋面积), 2)
End Function
'必须先计算梁跨中的剪力再计算梁端剪力,因为本过程改变了原来的"梁不利"中
' 经过荷载组合保留的剪力,是用梁端剪力覆盖了他们.
Sub 计算一级抗震梁_Vb()
Dim i As Integer, j As Integer, flag As Integer, ii As Integer
Dim 荷载 As 单元荷载
Dim 梁端力 As 杆端内力
Dim qq As Single, qt As Single, a As Single
Dim Vgb As Single '简支梁产生的剪力
'左端剪力 右端剪力 左端最大 右端最大
Dim VbL As Single, VbR As Single, VbmaxL As Single, VbmaxR As Single
Dim Lch As Single, Rch As Single
Dim L As Single '梁跨
Dim Ln As Single '梁净跨
Dim 拉筋As1 As Integer, 压筋As2 As Integer
'梁左端M 梁右端M
Dim LM As Single, RM As Single
Dim γRe As Single, 系数 As Single
Open Fname & "梯形恒载" For Random As #11 Len = Len(荷载)
Open Fname & "均布恒载" For Random As #12 Len = Len(荷载)
Open Fname & "活荷载A" For Random As #13 Len = Len(荷载)
Open Fname & "活荷载B" For Random As #14 Len = Len(荷载)
Open Fname & "跨中剪力" For Random As #17 Len = Len(梁端力)
Open Fname & "梁不利" For Random As 20 Len = Len(梁端力)
flag = 是否加3列
γRe = 0.75
系数 = 1.05 / γRe
ii = 柱总数 + 1
For i = ii To Ncell
j = i - 柱总数
'计算简支梁产生的剪力
Get #11, j, 荷载 '梯形恒载
qq = 荷载.s
Get #12, j, 荷载 '均布恒载
qt = 荷载.s
a = 荷载.Po
Get #13, j, 荷载 '活载A
qt = 荷载.s + qt
Get #14, j, 荷载 '活载B
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -