Dim SapObject As SAP2000.SapObject
Dim SapModel As SAP2000.cSapModel
Dim ret As Long
Dim i As Long
Dim ModValue() As Double
Dim PointLoadValue() As Double
Dim Restraint() As Boolean
Dim FrameName() As String
Dim PointName() As String
Dim NumberResults As Long
Dim Obj() As String
Dim Elm() As String
Dim LoadCase() As String
Dim StepType() As String
Dim StepNum() As Double
Dim U1() As Double
Dim U2() As Double
Dim U3() As Double
Dim R1() As Double
Dim R2() As Double
Dim R3() As Double
Dim SapResult() As Double
Dim IndResult() As Double
Dim PercentDiff() As Double
Dim SapResultString() As String
Dim IndResultString() As String
Dim PercentDiffString() As String
Dim msg As String
'create Sap2000 object
SapObject = New SAP2000.SapObject
'start Sap2000 application
SapObject.ApplicationStart()
'create SapModel object
SapModel = SapObject.SapModel
'initialize model
ret = SapModel.InitializeNewModel
'create new blank model
ret = SapModel.File.NewBlank
'define material property
ret = SapModel.PropMaterial.SetMaterial("CONC", SAP2000.eMatType.MATERIAL_CONCRETE)
'assign isotropic mechanical properties to material
ret = SapModel.PropMaterial.SetMPIsotropic("CONC", 3600, 0.2, 0.0000055)
'define rectangular frame section property
ret = SapModel.PropFrame.SetRectangle("R1", "CONC", 12, 12)
'define frame section property modifiers
ReDim ModValue(7)
For i = 0 To 7
ModValue(i) = 1
Next i
ModValue(0) = 1000
ModValue(1) = 0
ModValue(2) = 0
ret = SapModel.PropFrame.SetModifiers("R1", ModValue)
'switch to k-ft units
ret = SapModel.SetPresentUnits(SAP2000.eUnits.kip_ft_F)
'add frame object by coordinates
ReDim FrameName(2)
ret = SapModel.FrameObj.AddByCoord(0, 0, 0, 0, 0, 10, FrameName(0), "R1", "1")
ret = SapModel.FrameObj.AddByCoord(0, 0, 10, 8, 0, 16, FrameName(1), "R1", "2")
ret = SapModel.FrameObj.AddByCoord(-4, 0, 10, 0, 0, 10, FrameName(2), "R1", "3")
'assign point object restraint at base
ReDim PointName(1)
ReDim Restraint(5)
For i = 0 To 3
Restraint(i) = True
Next i
For i = 4 To 5
Restraint(i) = False
Next i
ret = SapModel.FrameObj.GetPoints(FrameName(0), PointName(0), PointName(1))
ret = SapModel.PointObj.SetRestraint(PointName(0), Restraint)
'assign point object restraint at top
For i = 0 To 1
Restraint(i) = True
Next i
For i = 2 To 5
Restraint(i) = False
Next i
ret = SapModel.FrameObj.GetPoints(FrameName(1), PointName(0), PointName(1))
ret = SapModel.PointObj.SetRestraint(PointName(1), Restraint)
'refresh view, update (initialize) zoom
ret = SapModel.View.RefreshView(0, False)
'add load patterns
ret = SapModel.LoadPatterns.Add("1", SAP2000.eLoadPatternType.LTYPE_OTHER, 1)
ret = SapModel.LoadPatterns.Add("2", SAP2000.eLoadPatternType.LTYPE_OTHER)
ret = SapModel.LoadPatterns.Add("3", SAP2000.eLoadPatternType.LTYPE_OTHER)
ret = SapModel.LoadPatterns.Add("4", SAP2000.eLoadPatternType.LTYPE_OTHER)
ret = SapModel.LoadPatterns.Add("5", SAP2000.eLoadPatternType.LTYPE_OTHER)
ret = SapModel.LoadPatterns.Add("6", SAP2000.eLoadPatternType.LTYPE_OTHER)
ret = SapModel.LoadPatterns.Add("7", SAP2000.eLoadPatternType.LTYPE_OTHER)
'assign loading for load pattern 2
ret = SapModel.FrameObj.GetPoints(FrameName(2), PointName(0), PointName(1))
ReDim PointLoadValue(5)
PointLoadValue(2) = -10
ret = SapModel.PointObj.SetLoadForce(PointName(0), "2", PointLoadValue)
ret = SapModel.FrameObj.SetLoadDistributed(FrameName(2), "2", 1, 10, 0, 1, 1.8, 1.8)
'assign loading for load pattern 3
ret = SapModel.FrameObj.GetPoints(FrameName(2), PointName(0), PointName(1))
ReDim PointLoadValue(5)
PointLoadValue(2) = -17.2
PointLoadValue(4) = -54.4
ret = SapModel.PointObj.SetLoadForce(PointName(1), "3", PointLoadValue)
'assign loading for load pattern 4
ret = SapModel.FrameObj.SetLoadDistributed(FrameName(1), "4", 1, 11, 0, 1, 2, 2)
'assign loading for load pattern 5
ret = SapModel.FrameObj.SetLoadDistributed(FrameName(0), "5", 1, 2, 0, 1, 2, 2, "Local")
ret = SapModel.FrameObj.SetLoadDistributed(FrameName(1), "5", 1, 2, 0, 1, -2, -2, "Local")
'assign loading for load pattern 6
ret = SapModel.FrameObj.SetLoadDistributed(FrameName(0), "6", 1, 2, 0, 1, 0.9984, 0.3744, "Local")
ret = SapModel.FrameObj.SetLoadDistributed(FrameName(1), "6", 1, 2, 0, 1, -0.3744, 0, "Local")
'assign loading for load pattern 7
ret = SapModel.FrameObj.SetLoadPoint(FrameName(1), "7", 1, 2, 0.5, -15, "Local")
'switch to k-in units
ret = SapModel.SetPresentUnits(SAP2000.eUnits.kip_in_F)
'save model
ret = SapModel.File.Save("C:\SapAPI\API_1-001.sdb")
'run model (this will create the analysis model)
ret = SapModel.Analyze.RunAnalysis
'initialize for Sap2000 results
ReDim SapResult(6)
ret = SapModel.FrameObj.GetPoints(FrameName(1), PointName(0), PointName(1))
'get Sap2000 results for load patterns 1 through 7
ReDim Obj(0)
ReDim Elm(0)
ReDim LoadCase(0)
ReDim StepType(0)
ReDim StepNum(0)
ReDim U1(0)
ReDim U2(0)
ReDim U3(0)
ReDim R1(0)
ReDim R2(0)
ReDim R3(0)
For i = 0 To 6
ret = SapModel.Results.Setup.DeselectAllCasesAndCombosForOutput
ret = SapModel.Results.Setup.SetCaseSelectedForOutput(Format(i + 1))
If i <= 3 Then
ret = SapModel.Results.JointDispl(PointName(1), SAP2000.eItemTypeElm.ObjectElm, NumberResults, Obj, Elm, LoadCase, StepType, StepNum, U1, U2, U3, R1, R2, R3)
SapResult(i) = U3(0)
Else
ret = SapModel.Results.JointDispl(PointName(0), SAP2000.eItemTypeElm.ObjectElm, NumberResults, Obj, Elm, LoadCase, StepType, StepNum, U1, U2, U3, R1, R2, R3)
SapResult(i) = U1(0)
End If
Next i
'close Sap2000
SapObject.ApplicationExit(False)
SapModel = Nothing
SapObject = Nothing
'fill Sap2000 result strings
ReDim SapResultString(6)
For i = 0 To 6
SapResultString(i) = Format(SapResult(i), "0.00000")
If Microsoft.VisualBasic.Left(SapResultString(i), 1) <> "-" Then
SapResultString(i) = " " & SapResultString(i)
End If
Next i
'fill independent results (hand calculated)
ReDim IndResult(6)
ReDim IndResultString(6)
IndResult(0) = -0.02639
IndResult(1) = 0.06296
IndResult(2) = 0.06296
IndResult(3) = -0.2963
IndResult(4) = 0.3125
IndResult(5) = 0.11556
IndResult(6) = 0.00651
For i = 0 To 6
IndResultString(i) = Format(IndResult(i), "0.00000")
If Microsoft.VisualBasic.Left(IndResultString(i), 1) <> "-" Then
IndResultString(i) = " " & IndResultString(i)
End If
Next i
'fill percent difference
ReDim PercentDiff(6)
ReDim PercentDiffString(6)
For i = 0 To 6
PercentDiff(i) = (SapResult(i) / IndResult(i)) - 1
PercentDiffString(i) = Format(PercentDiff(i), "0%")
If Microsoft.VisualBasic.Left(PercentDiffString(i), 1) <> "-" Then
PercentDiffString(i) = " " & PercentDiffString(i)
End If
Next i
'display message box comparing results
msg = ""
msg = msg & "LC Sap2000 Independent %Diff" & vbCr & vbLf
For i = 0 To 5
msg = msg & Format(i + 1) & " " & SapResultString(i) & " " & IndResultString(i) & " " & PercentDiffString(i) & vbCr & vbLf
Next i
msg = msg & Format(i + 1) & " " & SapResultString(i) & " " & IndResultString(i) & " " & PercentDiffString(i)
MsgBox(msg)
Release Notes
vb.rar_SAP2000_sap2000 vb_计算分析
版权申诉
5星 · 超过95%的资源 83 浏览量
2022-09-24
05:03:14
上传
评论
收藏 2KB RAR 举报
我虽横行却不霸道
- 粉丝: 75
- 资源: 1万+
最新资源
- (大赛作品)STM32实现的F072RB NUCLEO智能家居控制.zip
- STM32实现的数字示波器源码+数字信号处理教程、配套实例.zip
- 【cookie续续】【cookie续续】【cookie续续】
- 低功耗STM32实现的F411开发板(原理图+PCB源文件+官方例程+驱动等).zip
- 基于stm32实现的 nucleo-L476的智能灯(操作说明+源码).zip
- 基于STM32实现的 NUCLEO板设计彩色LED照明灯(纯cubeMX开发).zip
- 基于STM32实现的 的联合调试侦听设备解决方案(原理图、PCB源文件、调试工具、视频).zip
- 基于STM32实现的 人群定位、调速智能风扇设计(程序、设计报告、视频演示).zip
- 哔哩下载姬(DownKyi)
- 千纬认字app再次更新,增加部首、笔画动画功能
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈