'--------------------------------------------------------------------------------------------------
Sub LoadModel()
  
' Interface zu RFEM wird geholt.
Dim iApp As RFEM5.Application
Set iApp = GetObject(, "RFEM5.Application")

' Fehlerbehandlungsroutine.
On Error GoTo e

' COM-Lizenz und Programmzugriff wird gesperrt.
iApp.LockLicense

' Interface fr erstes Modell holen.
Dim iModel As RFEM5.model
If iApp.GetModelCount > 0 Then
  Set iModel = iApp.GetModel(0)
Else
  Err.Raise vbObjectError, "LoadModel()", "iApp.GetModelCount < 1"
End If

' Interface fr Modelldaten holen.
Dim iModelData As RFEM5.iModelData
Set iModelData = iModel.GetModelData()

' Knotenlager anlegen.
Dim nodsups(0 To 1) As RFEM5.NodalSupport
nodsups(0).No = 1
nodsups(0).nodeList = "1"
nodsups(0).RestraintConstantX = -1
nodsups(0).RestraintConstantY = 0#
nodsups(0).RestraintConstantZ = -1
nodsups(0).SupportConstantX = -1
nodsups(0).SupportConstantY = -1
nodsups(0).SupportConstantZ = -1

nodsups(1).No = 2
nodsups(1).nodeList = "2"
nodsups(1).RestraintConstantX = -1
nodsups(1).RestraintConstantY = 0#
nodsups(1).RestraintConstantZ = -1
nodsups(1).SupportConstantX = 0#
nodsups(1).SupportConstantY = -1
nodsups(1).SupportConstantZ = -1

' Knotenlager bergeben.
iModelData.PrepareModification
iModelData.SetNodalSupports nodsups
iModelData.FinishModification


' Interface fr Lasten holen.
Dim iLoads As RFEM5.iLoads
Set iLoads = iModel.GetLoads

' Lastflle anlegen.
Dim loadcases(0 To 2) As RFEM5.LoadCase

loadcases(0).Loading.No = 1
loadcases(0).SelfWeight = True
loadcases(0).ToSolve = True
loadcases(0).SelfWeightFactor.X = 0
loadcases(0).SelfWeightFactor.Y = 0
loadcases(0).SelfWeightFactor.Z = 1
loadcases(0).ActionCategory = Permanent

loadcases(1).Loading.No = 2
loadcases(1).SelfWeight = False
loadcases(1).ToSolve = True
loadcases(1).ActionCategory = ShowHLowerThan1000

loadcases(2).Loading.No = 3
loadcases(2).SelfWeight = False
loadcases(2).ToSolve = True
loadcases(2).ActionCategory = ImposedCategoryA

' Lastflle bergeben.
iLoads.PrepareModification
iLoads.SetLoadCases loadcases
iLoads.FinishModification


' Lastkombinationen anlegen.
Dim loadcombs(0 To 0) As RFEM5.LoadCombination

loadcombs(0).Loading.No = 1
loadcombs(0).ToSolve = True
loadcombs(0).Definition = "1.35*lc1 + 1.5*lc2 + 1.05*lc3"

' Lastkombinationen bergeben.
iLoads.PrepareModification
iLoads.SetLoadCombinations loadcombs
iLoads.FinishModification

' Ergebniskombinationen anlegen.
Dim rescombs(0 To 0) As RFEM5.ResultCombination

rescombs(0).Loading.No = 1
rescombs(0).Definition = "1.35*lc1 + 0.75*lc2 + 1.5*lc3"

' Ergebniskombinationen bergeben.
iLoads.PrepareModification
iLoads.SetResultCombinations rescombs
iLoads.FinishModification


' Lasten anlegen.
' Lastfall 2.
Dim iLoadCase As RFEM5.iLoadCase
Set iLoadCase = iLoads.GetLoadCase(2, AtNo)

' Stablasten anlegen.
Dim memLoads() As RFEM5.MemberLoad
ReDim memLoads(0 To 0)
memLoads(0).No = 1
memLoads(0).ObjectList = "1"
memLoads(0).Distribution = TrapezoidalType
memLoads(0).Magnitude1 = 6000#
memLoads(0).Magnitude2 = 4000#
memLoads(0).RelativeDistances = False
memLoads(0).DistanceA = 0.2
memLoads(0).DistanceB = 0.9

' Stablasten bergeben.
iLoadCase.PrepareModification
iLoadCase.SetMemberLoads memLoads
iLoadCase.FinishModification

' Lastfall 3.
Set iLoadCase = iLoads.GetLoadCase(3, AtNo)

' Knotenlasten anlegen.
Dim nodalLoads(0 To 0) As NodalLoad
nodalLoads(0).No = 1
nodalLoads(0).nodeList = "2"
nodalLoads(0).Component.Force.X = -15000
nodalLoads(0).Component.Force.Y = 0
nodalLoads(0).Component.Force.Z = 0
nodalLoads(0).Component.Moment.X = 0
nodalLoads(0).Component.Moment.Y = 0
nodalLoads(0).Component.Moment.Z = 0

' Knotenlasten bergeben.
iLoadCase.PrepareModification
iLoadCase.SetNodalLoads nodalLoads
iLoadCase.FinishModification

' Stablasten anlegen.
ReDim memLoads(0 To 0)
memLoads(0).No = 1
memLoads(0).ObjectList = "1"
memLoads(0).Distribution = UniformType
memLoads(0).Magnitude1 = 5000#

' Stablasten bergeben.
iLoadCase.PrepareModification
iLoadCase.SetMemberLoads memLoads
iLoadCase.FinishModification


e: If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source

' COM-Lizenz wird freigegeben, Programmzugriff wieder mglich.
iModel.GetApplication.UnlockLicense

End Sub
'--------------------------------------------------------------------------------------------------