📄 荷载计算.bas
字号:
Attribute VB_Name = "Module4"
Option Explicit
DefInt H-N
DefSng X-Y
Public h1 As Single, h2 As Single
Dim Ne, Nd
Dim sinA As Single, cosA As Single
Dim i, j, K, ii, Kk, L As Single
Dim X1, Y1, x2, y2
Sub 生成荷载Ld(荷载号 As Integer)
Select Case 荷载号 '梯形恒载
Case 0
Call 梯形恒载
当前荷载 = "梯形恒载"
Case 1
Call 均布恒载
当前荷载 = "均布恒载"
Case 3
Call 风荷载
当前荷载 = "风荷载"
Case 4
Call 地震作用
当前荷载 = "地震作用"
Case 6
Call 活荷载("A")
当前荷载 = "活荷载A"
Case 7
Call 活荷载("B")
当前荷载 = "活荷载B"
Case 8
Form4.Show
Form4.Left = MDIForm1.Width - Form4.Width - 200
If 击中构件号 = 0 Then 击中构件号 = 柱总数 + 1
i = 击中构件号
' For i = 柱总数 + 1 To Ncell
Call 逐跨活荷载(i)
当前荷载 = "逐跨活荷载" & Str(i)
' Call 计算内力
' Next i
End Select
Form1.command.Enabled = True
图 = "荷载"
Form1.Picture1.Cls
Call 杆件图(Form1.Picture1)
If 图 = "荷载" Then
Form1.Opt(0).Enabled = True
Form1.Opt(0).Value = True
Form1.Opt(1).Enabled = False
Form1.Opt(2).Enabled = False
Form1.Opt(3).Enabled = False
ElseIf 图 = "内力" Then
Form1.Opt(0).Enabled = False
Form1.Opt(1).Enabled = True
Form1.Opt(2).Enabled = True
Form1.Opt(3).Enabled = True
command.Caption = "退出"
End If
End Sub
'弯矩逆时针为正,顺时针为负,剪力轴力x、y正方向为正,负方向为负
Sub 梯形恒载() '板传给梁的自重及连梁传给柱的力
Dim 荷载 As 单元荷载, Ne As Integer, L As Single
Dim Focus As Single '集中力
Dim temp As Single
Dim B, H As Integer
Open Fname & "梯形恒载" For Random As #10 Len = Len(荷载)
Erase Ld()
For i = 1 To Ncell - 柱总数
Put #10, i, Ld(i)
Next i
Ne = 柱总数 + 1 '第一根梁的单元号
Call 节点力清空
For i = 1 To Cengshu
For j = 1 To Kuashu
Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
If i = Cengshu Then
temp = Val(屋面板附加重量)
Else
temp = Val(楼面板附加重量)
End If
Ld(Ne).Pq = "T"
If L > Val(相邻框架间距) / 1000 Then
Ld(Ne).s = Val(相邻框架间距) / 1000 * Val(钢筋混凝土楼板厚度) / 1000 * 25 + Val(相邻框架间距) / 1000 * temp '单位KN/m
Ld(Ne).Po = Val(相邻框架间距) / 2000 '单位米
Else
Ld(Ne).s = L * Val(钢筋混凝土楼板厚度) / 1000 * 25 + L * temp '注意单位KN/m
Ld(Ne).Po = L / 2
End If
Put #10, Ne - 柱总数, Ld(Ne)
Ne = Ne + 1
Next j
Next i
Close #10
'将柱的附加重量+联系梁传至结点的竖向集中荷载付给XMY
' Ne = Cengshu + 1 + 1 '下面为算结点力
Ne = Kuashu + 1 + 1
For i = 1 To Cengshu - 1
For j = 1 To Kuashu + 1
XYM(Ne, 2) = -Val(CATable(i, j)) - EAI(Ne, 2) * 25 * Ly(i) '单位为KN
Ne = Ne + 1
Next j
Next i
For j = 1 To Kuashu + 1
XYM(Ne, 2) = -Val(CATable(Cengshu, j)) '单位为KN
Ne = Ne + 1
Next j
'考虑板恒载通过连梁传递的集中力
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
XYM(NGN(i, 1), 2) = XYM(NGN(i, 1), 2) + Focus
XYM(NGN(i, 2), 2) = XYM(NGN(i, 2), 2) + Focus
Next i
End Sub
Sub 均布恒载() '即梁的自重+楼面框架梁附加重量
Dim 荷载 As 单元荷载
Open Fname & "均布恒载" For Random As #10 Len = Len(荷载)
Call 节点力清空
Erase Ld()
For i = 1 To Ncell - 柱总数
Put #10, i, Ld(i)
Next i
Ne = 柱总数 + 1 '第一根梁的单元号
For i = 1 To Cengshu
For j = 1 To Kuashu
Call SetT(Ne, L, sinA, cosA, X1, Y1, x2, y2)
Ld(Ne).Pq = "q"
If i < Cengshu Then
Ld(Ne).s = EAI(Ne, 2) * 25 + Val(楼面梁附加重量) + Val(BATable(i, j)) '注意单位是 kN/m
Else:
Ld(Ne).s = EAI(Ne, 2) * 25 + Val(屋面梁附加重量) + Val(BATable(i, j)) '注意单位是 kN/m
End If
Ld(Ne).Po = L
Put #10, Ne - 柱总数, Ld(Ne)
Ne = Ne + 1
Next j
Next i
Close #10
End Sub
Sub 风荷载() '原理参多高层18-22页
Dim 荷载 As 单元荷载, Ne As Integer
Dim h1 As Single, h2 As Single
Dim μz As Single, μz1 As Single, μz2 As Single '风压高度变化系数
Dim Wo As Single, B As Single
Dim βz As Single 'Z高度处的风振系数
Dim A As Single '迎风面积
Dim μs As Single '体型系数
Dim Y(1 To 20) As Single
Dim Luchu As Single
μs = 1.3 '体型系数,矩形平面查高层表2-2
Wo = Val(基本风压) '基本风压 kN/m2
βz = 1 'Z高度处的风振系数,因为高度小于三十米
B = Val(相邻框架间距) / 1000 '相邻框架间距(柱距)
Luchu = Ly(1) - Val(女儿墙墙高) / 1000
Call 节点力清空
Open Fname & "风荷载" For Random As #10 Len = Len(荷载)
Erase Ld()
For i = 1 To Ncell - 柱总数
Put #10, i, Ld(i)
Next i
For K = 1 To Cengshu
Ne = K * (Kuashu + 1) + 1
Y(K) = XY(Ne, 2) '每层顶点高度
Call 定限(Y(K), h1, h2, μz1, μz2) '用插值法求风压高度变化系数
If μz1 = μz2 Then
μz = 1
Else:
μz = μz1 + (μz2 - μz1) / (h2 - h1) * (Cengshu - h1)
End If
If K = 1 Then
XYM(Ne, 1) = Wo * βz * μs * Luchu * B * (Ly(1) - Luchu / 2) / Ly(1)
XYM(Ne, 1) = XYM(K, 1) + Wo * βz * μs * (0.5 * Ly(2)) * B
Else
If K = Cengshu Then
A = (0.5 * Ly(K)) * B + Val(女儿墙墙高) / 1000 * B '各层的迎风面积
Else:
A = (Ly(K) + Ly(K + 1)) * 0.5 * B
End If
XYM(Ne, 1) = Wo * βz * μs * A
End If
Next K
Close #10
End Sub
Sub 地震作用() '原理参多高层26页“底部剪力反应谱法”
Dim 荷载 As 单元荷载
Dim Hi(20) As Single '第i层离地面的高度
Dim Ne As Integer '单元号
Dim αl As Single '相应于结构基本周期Tl的地震影响系数α值
Dim αmax As Single '水平地震影响系数最大值
Dim Tl As Single '结构基本自振周期
Dim Tg As Single '特征周期值
Dim G(1 To 20) '结构各层重力荷载
Dim F(1 To 20) '各楼层除作用的等效地震力
Dim Ge As Single '计算地震作用时的总重力荷载
Dim Colume As Single '一层柱重
Dim fek As Single '结构总水平地震作用标准值
Dim δn As Single '顶点附加作用系数
Dim ∑GiHi As Single
Dim 结构总长 As Single
' Tl = 0.22 + 0.035 * Cengtot / (Kuatot ^ (1 / 3)) '经验公式
Tl = 0.25 + 0.53 / 1000 * Cengtot ^ 2 / Kuatot ^ (1 / 3)
Call 水平地震影响系数最大值表(Val(抗震设防烈度), 地震类型, αmax)
Call 特征周期值表(设计地震分组, 建筑场地类别, Tg)
Call 节点力清空
αl = ((Tg / Tl) ^ 0.9) * αmax
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -