Odpowiedź:
Rozkład obciążenia liniowego jest definiowany przez atrybut „Rozkład”. 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