0人已收藏
0人已打赏
免费0人已点赞
分享
SAP2000
返回版块3.12 万条内容 · 172 人订阅
阅读下一篇
《结构有限元分析》(Sap2000 V11.0)http://lib.verycd.com/2007/05/13/0000149672.html中文名称:结构有限元分析英文名称:Csi Sap2000 V11.0 MAGNiTUDE资源类型:Bin发行时间:2007年制作发行:csiberkeley地区:美国语言:英语简介:注:此链接下载转自:ShareVirus未通过安全和安装测试,使用后果自负与本论坛无关软件版权归原作者及原软件公司所有,如果你喜欢,请购买正版软件
回帖成功
经验值 +10
全部回复(86 )
只看楼主 我来说两句回复 举报
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
回复 举报