698x
004585
4. August 2020

Frage

Wie kann mit RF-COM der Lastverlauf einer Linienlast aus einem Kombinationsfeld ausgelesen werden?


Antwort:

Der Lastverlauf einer Linienlast wird über das Attribut "Distribution" definiert. Das Attribut "Distribution" ist vom Typ "LoadDistributionType" und die Listeneinträge des Kombinationsfeldes sind vom Typ "String", so dass eine Typkonvertierung erforderlich ist. Die Funktion "GetLoadDistributionType" wandelt einen Listeneintrag vom Typ String in einen LoadDistributionType.

'--------------------------------------------------------------------------------------------------
Function GetLoadDistributionType(sType As String) As LoadDistributionType
'--------------------------------------------------------------------------------------------------
    
    If sType = "Concentrated2x2QType" Then
      GetLoadDistributionType = Concentrated2x2QType
    ElseIf sType = "Concentrated2xQType" Then
      GetLoadDistributionType = Concentrated2xQType
    ElseIf sType = "ConcentratedNxQType" Then
      GetLoadDistributionType = ConcentratedNxQType
    ElseIf sType = "ConcentratedType" Then
      GetLoadDistributionType = ConcentratedType
    ElseIf sType = "ConcentratedUserDefinedType" Then
      GetLoadDistributionType = "ConcentratedUserDefinedType"
    ElseIf sType = "LinearType" Then
      GetLoadDistributionType = LinearType
    ElseIf sType = "LinearXType" Then
      GetLoadDistributionType = LinearXType
    ElseIf sType = "LinearYType" Then
      GetLoadDistributionType = LinearYType
    ElseIf sType = "LinearZType" Then
      GetLoadDistributionType = LinearZType
    ElseIf sType = "ParabolicType" Then
      GetLoadDistributionType = ParabolicType
    ElseIf sType = "RadialType" Then
      GetLoadDistributionType = RadialType
    ElseIf sType = "TaperedType" Then
      GetLoadDistributionType = TaperedType
    ElseIf sType = "TrapezoidalType" Then
      GetLoadDistributionType = TrapezoidalType
    ElseIf sType = "UniformType" Then
      GetLoadDistributionType = UniformType
    ElseIf sType = "VaryingType" Then
      GetLoadDistributionType = VaryingType
    End If

End Function

Die Prozedur "SetLineLoad" erzeugt eine Linielast an Linie 1. Der Lastverlauf wird aus dem Kombinationsfeld "LoadDistribution" des Excel-Arbeitsblattes "LineLoad" ausgelesen.

'--------------------------------------------------------------------------------------------------
Sub SetLineLoads()
'--------------------------------------------------------------------------------------------------
Dim model As RFEM5.model
Dim load As RFEM5.ILoadCase
Dim data(0) As RFEM5.LineLoad
    'Get interface for model
    Set model = GetObject(, "RFEM5.Model")
    
    'Block COM licence and program access
    model.GetApplication.LockLicense
    On Error GoTo e
   'Get interface for loads
    Set load = model.GetLoads.GetLoadCase(0, AtIndex)
    'Set parameters for lineload
    data(0).No = 1
    data(0).LineList = "1"
    data(0).Type = ForceType
    'Load Distribution from combo box
    data(0).Distribution = GetLoadDistributionType(Worksheets("LineLoad").DropDowns("LoadDistribution").List(Worksheets("LineLoad").DropDowns("LoadDistribution").ListIndex))
    data(0).Direction = LocalZType
    data(0).DistanceA = 11
    data(0).DistanceB = 22
    data(0).RelativeDistances = True
    data(0).Magnitude1 = 4000
    data(0).Magnitude2 = 5000
    data(0).Magnitude3 = 6000
    data(0).OverTotalLength = False
    data(0).Comment = "line load 1"
    'Transfer lineload
    load.PrepareModification
    load.SetLineLoads data
    load.FinishModification
    
e:  If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source
    Set load = Nothing
    'COM licence is unlocked, program access possible again
    model.GetApplication.UnlockLicense
    Set model = Nothing


End Sub

Der Quellcode kann unter den Downloads heruntergeladen werden.

Autor

Frau von Bloh bietet im Kundensupport Hilfestellung für unsere Anwender und ist zudem für die Entwicklung des Programms RSECTION sowie für den Stahl- und Aluminiumbau zuständig.