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