⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 梁配筋.bas

📁 钢筋混凝土框架结构设计计算源程序
💻 BAS
📖 第 1 页 / 共 4 页
字号:
Attribute VB_Name = "Module7"
Option Explicit
DefInt I-N
DefSng X-Y
Public 是否加3列 As Integer
Public 抗震等级 As String
Public ρmax As Single  '最大配筋率
Public 是否排序过 As Integer
Public 配筋组合(1000) As String, 钢筋面积(1000) As Integer
'分别调幅
Sub 弯矩调幅() '原理参多高层138页
    Dim i, N1, M1 As Single, M2 As Single, file As Variant
    Dim loads As New Collection
    'Collection 对象提供了简便方法,直截了当将一组相关的项目视为单一对象来引用。集合中的项目或成员被这样一个事实联系起来:它们都属于这个集合。集合的成员不一定都是同一种数据类型的。
    '一旦建立集合之后,就可以用 Add 方法添加成员,用 Remove 方法删除成员。在用 For Each...Next 语句重复整个集合时,可以用 Item 方法从集合返回特定成员。
    Dim 梁端力 As 杆端内力
    loads.Add "梯形恒载内力"
    loads.Add "均布恒载内力"
    loads.Add "活荷载A内力"
    loads.Add "活荷载B内力"
    loads.Add "风荷载内力"
    loads.Add "地震作用内力"
    For Each file In loads
        Open Fname & file For Random As #10 Len = Len(梁端力)
        For i = 1 To Ncell - 柱总数
            Get #10, i, 梁端力
            With 梁端力
                .M1 = .M1 * 0.85      '弯矩调幅
                .M2 = .M2 * 0.85
            End With
            Put #10, i, 梁端力
        Next i
        Close #10
    Next
End Sub
Function 跨内Mmax(M1 As Single, M2 As Single, qq As Single, qt As Single, a As Single, L As Single)
    Dim Mx As Single, X As Single, x2 As Single
    Dim Mmax As Single, Q1 As Single, Q2 As Single
    Q1 = (M1 + M2) / L + qq * L / 2 + qt * L / 2 - qt * a / 2 '将简支梁上的力全部叠加叠加
    Q2 = (qq + qt) * L - qt * a - Q1
    Mmax = 0
    '通过"十等分"梁计算跨内最大弯矩的近似值
    For X = 0 To L Step L / 10
        If X < a Then
            Mx = Q1 * X - M1 - qq * X ^ 2 / 2
            Mx = Mx - qt * X ^ 2 / 6
        ElseIf X > a Then
            Mx = Q1 * X - M1 - (qq + qt) * X ^ 2 / 2
            Mx = Mx + qt * a / 2 * (X - a / 3)
        Else
            x2 = L - X
            Mx = Q2 * x2 + M2 - (qq + qt) * x2 ^ 2 / 2
            Mx = Mx - qt * x2 ^ 2 / 6
        End If
        If Mx > Mmax Then Mmax = Mx
    Next X
    跨内Mmax = Mmax
End Function
Sub 跨中M_恒12活14() '1.2*恒载+1.4*活荷载
    Dim ii, i As Integer, M1 As Single, M2 As Single, qt As Single, qq As Single, a As Single, L As Single
    Dim M1_ As Single, M2_ As Single, Mmax1 As Single, Mmax2 As Single
    Dim qtA As Single, qtB As Single
    Dim 荷载 As 单元荷载
    Dim 梁端力 As 杆端内力, 梁不利 As 杆端内力
    '读内力
    Close #2
    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(梁端力)
    '读Ld
    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(荷载)
    '放入Mmax
    Open Fname & "梁不利" For Random As #20 Len = Len(梁不利)
    
    ii = 柱总数 + 1
    For i = ii To Ncell
        With 梁端力
            Get #1, i, 梁端力
            Get #11, i - 柱总数, 荷载
            M1 = .M1 * 1.2
            M2 = .M2 * 1.2
            qt = 荷载.s * 1.2             '梯形恒载
            a = 荷载.Po                   'T形荷载的位置
            L = Length(i)
            
            Get #2, i, 梁端力
            Get #12, i - 柱总数, 荷载
            M1 = M1 + .M1 * 1.2
            M2 = M2 + .M2 * 1.2
            qq = Ld(i).s * 1.2            ' 均布恒载
            Mmax1 = 跨内Mmax(M1, M2, qq, qt, a, L)
            
            Get #3, i, 梁端力
            Get #13, i - 柱总数, 荷载
            M1_ = M1 + .M1 * 1.4
            M2_ = M2 + .M2 * 1.4
            qtA = 荷载.s * 1.4                '梯形活载A
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt + qtA, a, L)
            If Mmax2 > Mmax1 Then
                Mmax1 = Mmax2
                M1 = M1_
                M2 = M2_
                qt = qt + qtA   '为便于后面作满载布置而变qt
            End If
            
            Get #4, i, 梁端力
            Get #14, i - 柱总数, 荷载
            M1_ = M1 + .M1 * 1.4
            M2_ = M2 + .M2 * 1.4
            qtB = 荷载.s * 1.4                  '梯形活载B
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt + qtB, a, L)  '这时的qt+qtB相当于最初的qt + qtA+qtB即满载
            If Mmax2 > Mmax1 Then Mmax1 = Mmax2     '最终完成 1.2*恒载+1.4*活荷载 的组合
        End With
        梁不利.N1 = Mmax1
        Put #20, i - 柱总数, 梁不利
    Next i
    Close #1, #2, #3, #4, #11, #12, #13, #14, #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, qt As Single, qq As Single, a As Single, L As Single
    Dim M1_ As Single, M2_ As Single, Mmax1 As Single, Mmax2 As Single
    Dim qtA As Single, qtB As Single
    Dim 荷载 As 单元荷载
    Dim 梁端力 As 杆端内力, 梁不利 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(梁端力)
    '读Ld
    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 #15 Len = Len(荷载)
    '放入Mmax
    Open Fname & "梁不利" For Random As #20 Len = Len(梁不利)
    
    ii = 柱总数 + 1
    For i = ii To Ncell
        With 梁端力
            Get #1, i, 梁端力
            Get #11, i - 柱总数, 荷载
            M1 = .M1 * 1.2
            M2 = .M2 * 1.2
            qt = 荷载.s * 1.2             '梯形恒载
            a = 荷载.Po                   'T形荷载的位置
            L = Length(i)
            
            Get #2, i, 梁端力
            Get #12, i - 柱总数, 荷载
            M1 = M1 + .M1 * 1.2
            M2 = M2 + .M2 * 1.2
            qq = Ld(i).s * 1.2            ' 均布恒载
            Mmax1 = 跨内Mmax(M1, M2, qq, qt, a, L)
            
            Get #3, i, 梁端力
            Get #13, i - 柱总数, 荷载
            M1_ = M1 + .M1 * 1.19               '1.19=0.85*1.4
            M2_ = M2 + .M2 * 1.19
            qtA = 荷载.s * 1.19                '梯形活载A
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt + qtA, a, L)
            If Mmax2 > Mmax1 Then
                Mmax1 = Mmax2
                M1 = M1_
                M2 = M2_
                qt = qt + qtA               '为便于后面作满载布置而变qt
            End If

            Get #4, i, 梁端力
            Get #14, i - 柱总数, 荷载
            M1_ = M1 + .M1 * 1.19                 '1.19=0.85*1.4
            M2_ = M2 + .M2 * 1.19
            qtB = 荷载.s * 1.19                  '梯形活载B
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt + qtB, a, L)  '这时的qt+qtB相当于最初的qt + qtA+qtB即满载
            If Mmax2 > Mmax1 Then
                Mmax1 = Mmax2     '完成 1.2*恒载+1.4*活荷载*0.85 的组合
                M1 = M1_
                M2 = M2_
                qt = qt + qtB
            End If

           
            Get #5, i, 梁端力
            Get #15, i - 柱总数, 荷载
            M1_ = M1 + .M1 * 1.19      '左风顺坐标轴X方向所以取+号
            M2_ = M2 + .M2 * 1.19
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt, a, L)
            If Mmax2 > Mmax1 Then
                Mmax1 = Mmax2
            End If
           
            M1_ = M1 - .M1 * 1.19       '右风逆坐标轴X方向所以取-号
            M2_ = M2 - .M2 * 1.19
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt, a, L)
            If Mmax2 > Mmax1 Then
                Mmax1 = Mmax2     '最终完成 1.2*恒载+(1.4*活载+1.4*风载)*0.85
            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, #11, #12, #13, #14, #15, #20
End Sub
Sub 跨中M_恒活12地震13() '1.2*(恒载+0.5*活载)+1.3*水平地震
    Dim ii, i As Integer, M1 As Single, M2 As Single, qt As Single, qq As Single, a As Single, L As Single
    Dim M1_ As Single, M2_ As Single, Mmax1 As Single, Mmax2 As Single
    Dim qtA As Single, qtB As Single
    Dim 荷载 As 单元荷载
    Dim 梁端力 As 杆端内力, 梁不利 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 #6 Len = Len(梁端力)
    '读Ld
    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 #15 Len = Len(荷载)
    Open Fname & "地震作用" For Random As #16 Len = Len(荷载)
    '放入Mmax
    Open Fname & "梁不利" For Random As #20 Len = Len(梁不利)
    
    ii = 柱总数 + 1
    For i = ii To Ncell
        With 梁端力
            Get #1, i, 梁端力
            Get #11, i - 柱总数, 荷载
            M1 = .M1 * 1.2
            M2 = .M2 * 1.2
            qt = 荷载.s * 1.2             '梯形恒载
            a = 荷载.Po                   'T形荷载的位置
            L = Length(i)
            
            Get #2, i, 梁端力
            Get #12, i - 柱总数, 荷载
            M1 = M1 + .M1 * 1.2
            M2 = M2 + .M2 * 1.2
            qq = Ld(i).s * 1.2            ' 均布恒载
            Mmax1 = 跨内Mmax(M1, M2, qq, qt, a, L)
            
            Get #3, i, 梁端力
            Get #13, i - 柱总数, 荷载
            M1_ = M1 + .M1 * 0.6           '0.6=1.2*0.5
            M2_ = M2 + .M2 * 0.6
            qtA = 荷载.s * 0.6             '梯形活载A
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt + qtA, a, L)
            If Mmax2 > Mmax1 Then
                Mmax1 = Mmax2
                M1 = M1_
                M2 = M2_
                qt = qt + qtA               '为便于后面作满载布置而变qt
            End If
     
            Get #4, i, 梁端力
            Get #14, i - 柱总数, 荷载
            M1_ = M1 + .M1 * 0.6            '0.6=1.2*0.5
            M2_ = M2 + .M2 * 0.6
            qtB = 荷载.s * 0.6              '梯形活载B
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt + qtB, a, L)
            If Mmax2 > Mmax1 Then
                Mmax1 = Mmax2
                M1 = M1_
                M2 = M2_
                qt = qt + qtB               '这时的qt+qtB相当于最初的qt + qtA+qtB即满载
            End If
           
            Get #5, i, 梁端力
            Get #15, i - 柱总数, 荷载
            M1_ = M1 + .M1 * 1.3            '左地震力坐标轴X方向所以取+号
            M2_ = M2 + .M2 * 1.3
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt, a, L)
            If Mmax2 > Mmax1 Then
                Mmax1 = Mmax2
            End If
 
            M1_ = M1 - .M1 * 1.3            '右地震力坐标轴X方向所以取-号
            M2_ = M2 - .M2 * 1.3
            Mmax2 = 跨内Mmax(M1_, M2_, qq, qt, a, L)
            If Mmax2 > Mmax1 Then

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -