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.