430x
001660
2020-08-04

[EN] FAQ 004585 | Como é que posso ler a distribuição de carga de uma carga em linha a partir de uma caixa de combinação no RF-COM ...

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

    Se sType = "Concentrated2x2QType" então
      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" Então
      GetLoadDistributionType = LinearType
    ElseIf sType = "LinearXType" Então
      GetLoadDistributionType = LinearXType
    ElseIf sType = "LinearYType" Então
      GetLoadDistributionType = LinearYType
    ElseIf sType = "LinearZType" Então
      GetLoadDistributionType = LinearZType
    ElseIf sType = "ParabolicType" Então
      GetLoadDistributionType = ParabolicType
    ElseIf sType = "RadialType" Então
      GetLoadDistributionType = RadialType
    ElseIf sType = "TaperedType" Então
      GetLoadDistributionType = TaperedType
    ElseIf sType = "TrapezoidalType" Então
      GetLoadDistributionType = TrapezoidalType
    ElseIf sType = "UniformType" Então
      GetLoadDistributionType = UniformType
    ElseIf sType = "VaryingType" Então
      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
    ' Obter interface para o modelo
    Set model = GetObject(, "RFEM5.Model")

    ' Bloquear licença COM e acesso ao programa
    model.GetApplication.LockLicense
    On Error GoTo e
   ' Obter interface para cargas
    Defina load = model.GetLoads.GetLoadCase (0, AtIndex)
    ' Definir parâmetros para carga de linha
    dados (0) .Não = 1
    dados (0) .LineList = "1"
    data (0) .Type = ForceType
    ' Distribuição de carga da caixa de combinação
    data (0) .Distribution = GetLoadDistributionType (Worksheets ("LineLoad"). DropDowns ("LoadDistribution"). List (Worksheets ("LineLoad"). DropDowns ("LoadDistribution"). ListIndex))
    data (0) .Direction = LocalZType
    dados (0). DistânciaA = 11
    dados (0). DistânciaB = 22
    data (0) .RelativeDistances = True
    dados (0). Magnitude1 = 4000
    dados (0). Magnitude2 = 5000
    dados (0). Magnitude3 = 6000
    data (0) .OverTotalLength = False
    dados (0). Comentário = "carga de linha 1"
    ' Transferir carga de linha
    load.PrepareModification
    load.SetLineLoads data
    load.FinishModification

e:  If Err.Number 0 Then MsgBox Err.Description,, Err.Source
    Definir carga = Nada
    A licença ' COM está desbloqueada, é possível novamente aceder ao programa
    model.GetApplication.UnlockLicense
    Set model = Nothing

End Sub

O código fonte pode ser encontrado em Downloads.