731x
004585
2020-08-04

Pergunta

Como é que posso ler a distribuição de carga de uma carga em linha de uma caixa de combinação no RF-COM?


Resposta:

A distribuição de carga de uma carga em linha é definida pelo atributo "Distribution". O atributo "Distribution" é do tipo "LoadDistributionType", e as entradas da lista da caixa de combinação são do tipo "String", de modo que seja necessária uma conversão de tipos. A função "GetLoadDistributionType" converte uma entrada de lista do tipo "String" numa do tipo "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

O procedimento "SetLineLoad" cria uma carga de linha na linha 1. A distribuição de carga é lida a partir da caixa de combinação "LoadDistribution" da folha de cálculo "LineLoad" do Excel.

'--------------------------------------------------------------------------------------------------
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

O código fonte pode ser encontrado em Downloads.

Autor

A Eng.ª von Bloh fornece apoio técnico a clientes e também é responsável pelo desenvolvimento do programa RSECTION e pelas estruturas de aço e alumínio.