📄 荷载计算.bas
字号:
Ge = 0
Ne = 0
∑GiHi = 0
结构总长 = Val(相邻框架间距) / 1000 * (Val(框架总榀数 - 1))
For i = 1 To Cengshu
Hi(i) = Ly(i) + Hi(i - 1)
If i = 1 Then
G(i) = G(i) + Kuatot * 结构总长 * (25 * Val(钢筋混凝土楼板厚度) / 1000 + Val(楼面板附加重量) + Val(楼面均布活荷载) * 0.5) / Val(框架总榀数)
For j = 1 To Kuashu
G(i) = G(i) + Lx(j) * (EAI(柱总数 + j, 2) * 25 + Val(楼面梁附加重量) + Val(BATable(i, j)))
Next j
Ne = Kuashu + 1 + 1
For j = 1 To Kuashu + 1
G(i) = G(i) + Val(CATable(i, j)) + EAI(Ne, 2) * 25 * Ly(i) '单位为KN
G(i) = G(i) + Val(CATable(i, j)) / 2 + EAI(Ne + Kuashu + 1, 2) * 25 * Ly(i + 1) / 2
Ne = Ne + 1
Next j
ElseIf i = Cengshu Then
G(i) = G(i) + Kuatot * 结构总长 * (25 * Val(钢筋混凝土楼板厚度) / 1000 + Val(屋面板附加重量)) / Val(框架总榀数)
For j = 1 To Kuashu
G(i) = G(i) + Lx(j) * (EAI(柱总数 + (i - 1) * Kuashu + j, 2) * 25 + Val(屋面梁附加重量) + Val(BATable(i, j)))
Next j
Ne = (Kuashu + 1) * i + 1
For j = 1 To Kuashu + 1
G(i) = G(i) + Val(CATable(i, j)) / 2 + EAI(Ne, 2) * 25 * Ly(i) / 2 '单位为KN
Ne = Ne + 1
Next j
Else
G(i) = G(i) + Kuatot * 结构总长 * (25 * Val(钢筋混凝土楼板厚度) / 1000 + Val(楼面板附加重量) + Val(楼面均布活荷载) * 0.5) / Val(框架总榀数)
For j = 1 To Kuashu
G(i) = G(i) + Lx(j) * (EAI(柱总数 + (i - 1) * Kuashu + j, 2) * 25 + Val(楼面梁附加重量) + Val(BATable(i, j)))
Next j
Ne = (Kuashu + 1) * i + 1
For j = 1 To Kuashu + 1
G(i) = G(i) + Val(CATable(i, j)) / 2 + EAI(Ne, 2) * 25 * Ly(i) / 2 '单位为KN
G(i) = G(i) + Val(CATable(i + 1, j)) / 2 + EAI(Ne + Kuashu + 1, 2) * 25 * Ly(i + 1) / 2
Ne = Ne + 1
Next j
End If
tuxing1.command.Text = tuxing1.command.Text + "第" + Str(i) + "层地震g" + Str(G(i)) + "和 Hi(i)" + Str(Hi(i)) + "和 Hi(i) * G(i)" + Str(Hi(i) * G(i)) + vbCrLf
Ge = Ge + G(i)
∑GiHi = ∑GiHi + Hi(i) * G(i)
Next i
fek = 0.85 * αl * Ge '单榀框架所承受地震力
tuxing1.command.Text = tuxing1.command.Text + "单榀框架所承受地震力" + Str(fek) + vbCrLf
Open Fname & "地震作用" For Random As #10 Len = Len(荷载)
Erase Ld()
For i = 1 To Ncell - 柱总数
Put #10, i, Ld(i)
Next i
Call 顶点附加作用系数δn表(Tl, Tg, δn)
For i = 1 To Cengshu
Ne = i * (Kuashu + 1) + 1
XYM(Ne, 1) = G(i) * Hi(i) * fek * (1 - δn) / ∑GiHi
If i = Cengshu Then XYM(Ne, 1) = XYM(Ne, 1) + fek * δn
tuxing1.command.Text = tuxing1.command.Text + "第" + Str(i) + "层地震力" + Str(XYM(Ne, 1)) + vbCrLf
Next i
Close #10
End Sub
Sub 活荷载(AB As String) '布置原理参见"混凝土结构下册"123页"四、竖向活荷载的最不利布置"
Dim 荷载 As 单元荷载
Dim temp As Integer
Dim temp1 As Single
Dim Focus As Single '集中力
Dim F(200) As Single
If AB = "A" Then temp = 1 Else temp = 0
Call 节点力清空
Open Fname & "活荷载" & AB For Random As #10 Len = Len(荷载)
Erase Ld()
For i = 1 To Ncell - 柱总数
Put #10, i, Ld(i)
Next i
For i = 1 To Cengshu
If i = Cengshu Then
temp1 = Val(屋面均布活荷载)
Else
temp1 = Val(楼面均布活荷载)
End If
For j = temp + (i Mod 2) To Kuashu Step 2
Ne = 柱总数 + (i - 1) * Kuashu + j
Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
Ld(Ne).Pq = "T"
If L > Val(相邻框架间距) / 1000 Then
Ld(Ne).s = temp1 * Val(相邻框架间距) / 1000
Ld(Ne).Po = Val(相邻框架间距) / 2 / 1000 '单位:米
Else
Ld(Ne).s = temp1 * L
Ld(Ne).Po = L / 2
End If
Put #10, Ne - 柱总数, Ld(Ne)
Next j
Next i
Close #10
For i = 柱总数 + 1 To Ncell '考虑活载不利布置由连梁传递的集中力
Call SetT(i, L, sinA, cosA, X1, Y1, x2, y2)
If L > Val(相邻框架间距) / 1000 Then
'框架间距即柱距
Focus = (Ld(i).s / 2) * Val(相邻框架间距) / 1000 / 2
Else
Focus = (Ld(i).s / 2) * (Val(相邻框架间距) / 1000 - L / 2)
End If
F(NGN(i, 1)) = F(NGN(i, 1)) + Focus
F(NGN(i, 2)) = F(NGN(i, 2)) + Focus
Next i
For i = Kuashu + 2 To Nodg
XYM(i, 2) = -F(i)
Next i
End Sub
Sub 逐跨活荷载(Ne As Integer)
Dim 荷载 As 单元荷载
Dim temp1 As Single
Dim Focus As Single '集中力
Dim F(200) As Single
Call 节点力清空
Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
Open Fname & "逐跨活荷载" & Str(Ne) For Random As #10 Len = Len(荷载)
Erase Ld()
For j = 1 To Ncell - 柱总数
Put #10, i, Ld(i)
Next j
Ld(Ne).Pq = "T"
If Nodg - Ne < Kuashu Then
temp1 = Val(屋面均布活荷载)
Else
temp1 = Val(楼面均布活荷载)
End If
If L > Val(相邻框架间距) / 1000 Then
Ld(Ne).s = temp1 * Val(相邻框架间距) / 1000
Ld(Ne).Po = Val(相邻框架间距) / 2 / 1000 '单位:米
Else
Ld(Ne).s = temp1 * L
Ld(Ne).Po = L / 2
End If
Put #10, Ne - 柱总数, Ld(Ne)
Close #10
'考虑活载不利布置由连梁传递的集中力
If L > Val(相邻框架间距) / 1000 Then
'框架间距即柱距
Focus = -(Ld(i).s / 2) * Val(相邻框架间距) / 1000 / 2
Else
Focus = -(Ld(i).s / 2) * (Val(相邻框架间距 / 1000) - L / 2)
End If
XYM(NGN(i, 1), 2) = XYM(NGN(i, 1), 2) + Focus
XYM(NGN(i, 2), 2) = XYM(NGN(i, 2), 2) + Focus
End Sub
Sub 定限(H As Single, h1 As Single, h2 As Single, μz1 As Single, μz2 As Single)
If H <= 5 Then
μz1 = 0.8
μz2 = 1#
h1 = 0
ElseIf H <= 10 Then
μz1 = 1
μz2 = 1.14
h1 = 5
ElseIf H <= 20 Then
μz1 = 1.14
μz2 = 1.25
h1 = 10
ElseIf H <= 30 Then
μz1 = 1.25
μz2 = 1.42
h1 = 20
ElseIf H <= 40 Then
μz1 = 1.42
μz2 = 1.56
h1 = 40
ElseIf H <= 50 Then
μz1 = 1.56
μz2 = 1.67
h1 = 40
ElseIf H <= 60 Then
μz1 = 1.67
μz2 = 1.77
h1 = 50
Else: μz1 = 1
μz2 = 1
End If
h2 = H
End Sub
Sub 节点力清空()
Dim i, j
Erase XYM(), Ld(), A(), D()
For i = 1 To Kuashu + 1
For j = 1 To 3
XYM(i, j) = 0
Next j
Next i
End Sub
Sub 求梁高宽(i, j, B, H)
Dim temp As String, N, M, N1 As Integer
temp = BTable(i, j)
N = InStr(temp, "*")
M = InStr(temp, "C")
N1 = Len(temp)
B = Val(Left$(temp, N - 1))
H = Val(Mid$(temp, N + 1, M - N - 1))
End Sub
Sub 求柱高宽(i, j, B, H)
Dim temp As String, N, M, N1 As Integer
temp = CTable(i, j)
N = InStr(temp, "*")
M = InStr(temp, "C")
N1 = Len(temp)
B = Val(Left$(temp, N - 1))
H = Val(Mid$(temp, N + 1, M - N - 1))
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -