土木在线论坛 \ 建筑结构 \ SAP2000 \ 为什么用sap2000?

为什么用sap2000?

发布于:2007-05-15 07:25:15 来自:建筑结构/SAP2000 [复制转发]
我用过一段时间sap2000,但理解不深,在此想问几个问题:
算框架:按规范1.楼面荷载折减系数怎么考虑;2.会不会考虑间隔加载,求得梁、板最大弯矩?3.它不可能根据中国规范给你算挠度吧?它的变形不知道理论是什么?完全弹性体?裂缝更不能算了吧。
最近看pkpm技术条件,学了不少东西。对比sap2000用起来感觉很吃力了。可能是我学得不够深吧。
它建模感觉比较方便。不过pkpm建模是一步步,这样不会把一些荷载漏掉(比如墙荷载,风荷载,露面装修……),这个是好事。

全部回复(86 )

只看楼主 我来说两句
  • 平面人
    平面人 沙发
    还是没人搞开发啊。
    2016-05-31 23:14:31

    回复 举报
    赞同0
  • 平面人
    平面人 板凳
    MyLoadType(2) = "Load"
    MyLoadName(2) = "DIXIASHUIFULI"
    MySF(2) = 0

    MyLoadType(3) = "Load"
    MyLoadName(3) = "WENDUHEZAI"
    MySF(3) = 0

    MyLoadType(4) = "Load"
    MyLoadName(4) = "ZIZHONG"
    MySF(4) = 1
    ret = SapModel.LoadCases.StaticLinear.SetLoads("WUNEISHUI", 5, MyLoadType, MyLoadName, MySF)

    ReDim Preserve MyLoadType(5)
    ReDim Preserve MyLoadName(5)
    ReDim Preserve MySF(5)

    MyLoadType(5) = "Load"
    MyLoadName(5) = "NEISHUIYALI"
    MySF(5) = 0

    ret = SapModel.LoadCases.StaticLinear.SetLoads("YOUNEISHUI", 5, MyLoadType, MyLoadName, MySF)
    ret = SapModel.LoadCases.Delete("DEAD")
    ret = SapModel.LoadPatterns.Delete("DEAD")
    'get load data
    'ret = SapModel.LoadCases.StaticLinear.GetLoads("LCASE1", NumberLoads, LoadType, LoadName, SF)
    ' 'add static linear load case
    ' ret = SapModel.LoadCases.StaticLinear.SetCase("LCASE1")

    '6.定义荷载组合:基本组合 特殊组合Ⅰ 特殊组合Ⅱ

    'add combo
    'ret = SapModel.RespCombo.Add("COMB1", 0) '0 = Linear Additive
    'add load case to combo
    'ret = SapModel.RespCombo.SetCaseList("COMB1", LoadCase, "DEAD", 1.4) 'LoadCase = 0 LoadCombo = 1

    '7.建立模型,同时确定截面
    'define new coordinate system
    ' ret = SapModel.CoordSys.SetCoordSys("CSys1", 1000, 1000, 0, 0, 0, 0)
    'add point object to model
    '1先通过柱坐标生成点;无法直接用柱坐标生成面?没提供这个功能
    Dim N As Integer
    N = Int(Application.Pi() * 2 * R0)
    z = 0
    Theta1 = 360 / N
    ReDim PointName(0 To N - 1) '!非常奇怪,必须是从0开始,否则后面AreaObj.AddByPoint无法生成面
    For i = 0 To N - 1
    Theta2 = Theta1 * i
    PointName(i) = "P" & i
    ret = SapModel.PointObj.AddCylindrical(R0, Theta2, z, Name, PointName(i))
    Next i
    '生成底板
    UserName = "A1"
    ret = SapModel.AreaObj.AddByPoint(N, PointName, Name, "DIBAN", UserName)

    ReDim FrameName(0 To N - 1)
    For i = 0 To N - 2
    'add frame object by points
    FrameName(i) = "F" & i
    ret = SapModel.FrameObj.AddByPoint(PointName(i), PointName(i + 1), FrameName(i))
    Next i
    FrameName(i) = "F" & i
    ret = SapModel.FrameObj.AddByPoint(PointName(0), PointName(i), FrameName(i))
    'linearly extrude frame to areas拉伸线成面
    For i = 0 To N - 1
    ret = SapModel.EditGeneral.ExtrudeFrameToAreaLinear(FrameName(i), "CEQIANG", 0, 0, 1, Int(H0), AreaName, True)
    Next i
    '!不能一次性将全部杆件拉伸成面,下行代码无效。
    'ret = SapModel.EditGeneral.ExtrudeFrameToAreaLinear("All", "CEQIANG", 0, 0, 1, Int(H0), AreaName, True)


    '2点生成面——每个面要赋名称A1~An
    'add area object by points
    ReDim Point(8)
    Point(0) = "P1"
    Point(1) = "P2"
    Point(2) = "P3"
    Point(3) = "P4"
    Point(4) = "P5"
    Point(5) = "P6"
    Point(6) = "P7"
    Point(7) = "P8"
    Point(8) = "P9"
    '生成底板
    'Dim m As Long
    'm = 63
    'UserName = "A1"
    ' ret = SapModel.AreaObj.AddByPoint(9, PointName, Name, "DIBAN", UserName)
    '3网格化——必须给每个面赋予名称B1~Bn,方便后面施加荷载divide area object
    'ret = SapModel.EditArea.Divide("1", 1, NumberAreas, AreaName, n1, n2)

    '4施加荷载assign area object surface pressure load
    '由于没有提供柱坐标下选择面的类,所以只能通过面的名称来选择面
    ret = SapModel.AreaObj.SetLoadSurfacePressure("Name", "DEAD", -1, 0.1, , , Object)












    '8.覆盖材料和厚度assign material overwrite
    ' ret = SapModel.AreaObj.SetMaterialOverwrite("3", "A992Fy50")
    '侧墙变厚度——用面厚度覆盖
    ' 'assign thickness overwrites
    ' ReDim Thickness(3)
    ' For i = 0 To 3
    ' Thickness(i) = 11
    ' Next i
    ' ret = SapModel.AreaObj.SetThickness("ALL", 2, "", 1, Thickness, Group)
    '9.添加面弹簧
    'assign springs to area objects面弹簧
    ReDim Vec(2)
    ret = SapModel.AreaObj.SetSpring("1", 1, K0, 1, "", -1, 2, 1, True, Vec, 0, True, , Object) '中括号的可以省略,其他似乎不可省略。
    'ret = SapModel.AreaObj.SetSpring("1", 1, K0, 1, -1, 2, 1, True, True, "Local", Object)
    'ret = SapModel.AreaObj.SetSpring("ALL", 1, 1, 1, "", -1, 1, 3, True, Vec, 0, False, "Local", Group)
    '.网格化 面单元推荐采用自动网格化,好处是不会产生很多节点以及很多面,方便施加荷载,或者施加荷载后再划分网格
    ' 'assign auto mesh options
    ' ret = SapModel.AreaObj.SetAutoMesh("ALL", 1, 3, 3, , , , , , , , , , , , , , , Group)
    ' 'refresh view
    ' ret = SapModel.View.RefreshView(0, False)
    '.添加约束:节点、面
    'Function SetSpring(ByVal Name As String,
    'ByVal MyType As Long,
    'ByVal s As Double,
    'ByVal SimpleSpringType As Long,
    'ByVal LinkProp As String,
    'ByVal Face as Long,
    'ByVal SpringLocalOneType As Long,
    'ByVal Dir As Long,
    'ByVal Outward As Boolean,
    'ByRef Vec() As Double,
    'ByVal Ang As Double,
    'ByVal Replace As Boolean,
    'Optional ByVal CSys As String = "Local",
    'Optional ByVal ItemType As eItemType = Object) As Long
    'assign point object restraints
    ' ReDim VALUE(5)
    ' For i = 0 To 5
    ' VALUE(i) = True
    ' Next i
    ' ret = SapModel.PointObj.SetRestraint("1", VALUE)
    '
    ' 'assign spring to a point
    ' ReDim k(5)
    ' k(2) = 10
    ' ret = SapModel.PointObj.SetSpring("3", k)
    '
    ' 'assign springs to area objects面弹簧
    ' ReDim Vec(2)
    ' ret = SapModel.AreaObj.SetSpring("ALL", 1, 1, 1, "", -1, 1, 3, True, Vec, 0, False, "Local", Group)
    '
    '10.对面单元施加面弹簧约束后,进行网格划分,
    '自动网格化很方便,好处是网格划分前后还是保持一个面,因此并未增加面标签。
    '划分网格前施加节点样式荷载,划分网格后会丢失!其他面荷载不受影响。所以节点荷载一定要在网格划分后再施加。
    'divide area object
    ret = SapModel.EditArea.Divide("1", 1, NumberAreas, AreaName, L0, B0)
    ret = SapModel.EditArea.Divide("2", 1, NumberAreas, AreaName, L0, H0)
    ret = SapModel.EditArea.Divide("3", 1, NumberAreas, AreaName, L0, H0)
    ret = SapModel.EditArea.Divide("4", 1, NumberAreas, AreaName, B0, H0)
    ret = SapModel.EditArea.Divide("5", 1, NumberAreas, AreaName, B0, H0)
    ' 'assign auto mesh options
    ' ret = SapModel.AreaObj.SetAutoMesh("1", 1, L0, B0)
    ' ret = SapModel.AreaObj.SetAutoMesh("2", 1, L0, H0)
    ' ret = SapModel.AreaObj.SetAutoMesh("3", 1, L0, H0)
    ' ret = SapModel.AreaObj.SetAutoMesh("4", 1, B0, H0)
    ' ret = SapModel.AreaObj.SetAutoMesh("5", 1, B0, H0)
    '11.添加节点样式数据
    'add joint pattern assignment
    ret = SapModel.PointObj.SetPatternByXYZ("ALL", "DIXIASHUI", 0, 0, -1, H0, Group, , True) '用“ALL”则必须对应Group啊!
    ret = SapModel.PointObj.SetPatternByXYZ("ALL", "TIANTU", 0, 0, -1, H0, Group, , True)
    'Value = ax + by + cz + d
    '水平面处压力为零,水平面以下各点的压力仅与水的重度和水深有关,即p = γ( H2 - Zj ).
    '因此,在定义节点样式V = Ax+By+Cz+D 时,由于压力梯度仅与Z 坐标有关,故A=B = O,C=-l,D = 高度(H2O)

    '12.添加荷载
    'assign area object surface pressure load设置节点样式荷载也是这个,输入乘数γ=9.81.
    '侧墙水压力
    'select in XY plane
    ret = SapModel.SelectObj.PlaneXZ("1")
    ret = SapModel.AreaObj.SetLoadSurfacePressure("2", "DIXIASHUIYALI", -2, 10, "DIXIASHUI", True, SelectedObjects)
    ret = SapModel.AreaObj.SetLoadSurfacePressure("2", "CETUYALI", -2, K1, "TIANTU", True, SelectedObjects) '注意,这里K1包含了土的浮容重!
    'clear selection
    ret = SapModel.SelectObj.ClearSelection

    ret = SapModel.SelectObj.PlaneXZ("4")
    ret = SapModel.AreaObj.SetLoadSurfacePressure("3", "DIXIASHUIYALI", -1, 10, "DIXIASHUI", True, SelectedObjects)
    ret = SapModel.AreaObj.SetLoadSurfacePressure("3", "CETUYALI", -1, K1, "TIANTU", True, SelectedObjects)
    'clear selection
    ret = SapModel.SelectObj.ClearSelection

    ret = SapModel.SelectObj.PlaneYZ("3")
    ret = SapModel.AreaObj.SetLoadSurfacePressure("4", "DIXIASHUIYALI", -2, 10, "DIXIASHUI", True, SelectedObjects)
    ret = SapModel.AreaObj.SetLoadSurfacePressure("4", "CETUYALI", -2, K1, "TIANTU", True, SelectedObjects)
    'clear selection
    ret = SapModel.SelectObj.ClearSelection

    ret = SapModel.SelectObj.PlaneYZ("1")
    ret = SapModel.AreaObj.SetLoadSurfacePressure("5", "DIXIASHUIYALI", -1, 10, "DIXIASHUI", True, SelectedObjects)
    ret = SapModel.AreaObj.SetLoadSurfacePressure("5", "CETUYALI", -1, K1, "TIANTU", True, SelectedObjects)
    '侧墙填土(浮容重)压力
    'clear selection
    ret = SapModel.SelectObj.ClearSelection

    '底板底部水浮力
    ret = SapModel.SelectObj.PlaneXY("1")
    ret = SapModel.AreaObj.SetLoadSurfacePressure("1", "DIXIASHUIFULI", -1, 10 * H0, , True, SelectedObjects)
    'clear selection
    ret = SapModel.SelectObj.ClearSelection
    ' 'assign area object gravity loads
    ' ret = SapModel.AreaObj.SetLoadGravity("ALL", "DEAD", 0, 0, -1, , , Group)
    ' 'assign area object wind pressure load
    ' ret = SapModel.AreaObj.SetLoadWindPressure("ALL", "DEAD", 1, 0.8, Group)
    ' 'assign area object temperature load
    ' ret = SapModel.AreaObj.SetLoadTemperature("All", "DEAD", 1, 50, , , Group)

    '13.分析

    'save model必须在运行前保存
    '保存模型
    ' SapModel.File.Save (ModelName)
    ret = SapModel.File.Save("C:\SapAPI\fajing.sdb")
    'create the analysis model
    ret = SapModel.Analyze.CreateAnalysisModel
    'set load case run flag
    ret = SapModel.Analyze.SetRunCaseFlag("MODAL", False)
    'set model solver options
    ret = SapModel.Analyze.SetSolverOption_1(1, 1, True, "")
    'run model (this will create the analysis model)
    ret = SapModel.Analyze.RunAnalysis

    '14.分析结果


    '15.设计配筋


    '16.关闭
    'close Sap2000
    ' SapObject.ApplicationExit False
    ' Set SapModel = Nothing
    ' Set SapObject = Nothing
    End Sub

    2016-01-05 22:26:05

    回复 举报
    赞同0
加载更多
这个家伙什么也没有留下。。。

SAP2000

返回版块

3.12 万条内容 · 160 人订阅

猜你喜欢

阅读下一篇

《结构有限元分析》(Sap2000 V11.0)

http://lib.verycd.com/2007/05/13/0000149672.html中文名称:结构有限元分析英文名称:Csi Sap2000 V11.0 MAGNiTUDE资源类型:Bin发行时间:2007年制作发行:csiberkeley地区:美国语言:英语简介:注:此链接下载转自:ShareVirus未通过安全和安装测试,使用后果自负与本论坛无关软件版权归原作者及原软件公司所有,如果你喜欢,请购买正版软件

回帖成功

经验值 +10