Buen día, ¿Cómo se podría mostrar los diagramas de fuerza cortante y momento flector, para un caso de carga especifico mediante el API?
1 Respuesta
Aún no existe una función disponible para la visualización gráfica de los diagramas (en API Sap2000 hasta la versión 23). Lo que se tiene por ahora es un método que le permite obtener los resultados de las fuerzas en las estaciónes definidas en los elementos Frame para un caso de carga especifico; con estos valores podria recrear los diagramas de forma manual.
FrameForce
Syntax
SapObject.SapModel.Results.FrameForce
VB6 Procedure
Function FrameForce(ByVal Name As String, ByVal ItemTypeElm As eItemTypeElm, ByRef NumberResults As Long, ByRef Obj() As String, ByRef ObjSta() As Double, ByRef Elm() As String, ByRef ElmSta() As Double, ByRef LoadCase() As String, ByRef StepType() As String, ByRef StepNum() As Double, ByRef P() As Double, ByRef V2() As Double, ByRef V3() As Double, ByRef T() As Double, ByRef M2() As Double, ByRef M3() As Double) As Long
VBA Example
Sub GetFrameForces()
'dimension variables
Dim SapObject as cOAPI
Dim SapModel As cSapModel
Dim ret As Long
Dim NumberResults As Long
Dim Obj() As String
Dim ObjSta() As Double
Dim Elm() As String
Dim ElmSta() As Double
Dim LoadCase() As String
Dim StepType() As String
Dim StepNum() As Double
Dim P() As Double
Dim V2() As Double
Dim V3() As Double
Dim T() As Double
Dim M2() As Double
Dim M3() As Double
'create Sap2000 object
Set SapObject = CreateObject("CSI.SAP2000.API.SapObject")
'start Sap2000 application
SapObject.ApplicationStart
'create SapModel object
Set SapModel = SapObject.SapModel
'initialize model
ret = SapModel.InitializeNewModel
'create model from template
ret = SapModel.File.New2DFrame(PortalFrame, 3, 124, 3, 200)
'run analysis
ret = SapModel.File.Save("C:\SapAPI\x.sdb")
ret = SapModel.Analyze.RunAnalysis
'clear all case and combo output selections
ret = SapModel.Results.Setup.DeselectAllCasesAndCombosForOutput
'set case and combo output selections
ret = SapModel.Results.Setup.SetCaseSelectedForOutput("DEAD")
'get frame forces for line object "1"
ret = SapModel.Results.FrameForce("1", Object, NumberResults, Obj, ObjSta, Elm, ElmSta, LoadCase, StepType, StepNum, P, V2, V3, T, M2, M3)
'close Sap2000
SapObject.ApplicationExit False
Set SapModel = Nothing
Set SapObject = Nothing
End Sub