731x
004585
2020-08-04

Domanda

Come posso leggere la distribuzione del carico di un carico di linea da una casella combinata in RF‑COM?


Risposta:

La distribuzione del carico di una linea è definita dall'attributo "Distribuzione". L'attributo "Distribuzione" è del tipo "LoadDistributionType" e le voci dell'elenco della casella combinata sono del tipo "Stringa", quindi è necessaria la conversione del tipo. La funzione "GetLoadDistributionType" converte una voce dell'elenco di tipo String in un LoadDistributionType.

'-------------------------------------------------------------------------- --------------------------------------------------- -
Funzione GetLoadDistributionType (sType As String) As LoadDistributionType
'-------------------------------------------------------------------------- --------------------------------------------------- -
    
Se sType = "Concentrated2x2QType" Allora
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

Fine funzione

La procedura "SetLineLoad" crea un carico di linea sulla linea 1. La distribuzione del carico viene letta dalla casella combinata "LoadDistribution" del foglio di lavoro Excel "LineLoad".

'-------------------------------------------------------------------------- --------------------------------------------------- -
Sub SetLineLoads()
'-------------------------------------------------------------------------- --------------------------------------------------- -
Dim modello Come RFEM5.model
Carico debole come RFEM5.ILoadCase
Dim data(0) As RFEM5.LineLoad
'Ottieni l'interfaccia per il modello
Set model = GetObject(, "RFEM5.Model")
    
'Blocca la licenza COM e l'accesso al programma
model.GetApplication.LockLicense
On Error GoTo e
'Ottieni l'interfaccia per i carichi
Imposta carico = modello.GetLoads.GetLoadCase(0, AtIndex)
'Imposta i parametri per il carico lineare
data(0).No = 1
data(0).LineList = "1"
data(0).Type = ForceType
'Distribuzione del carico dalla casella combinata
data(0).Distribution = GetLoadDistributionType(Worksheets("LineLoad").DropDowns("LoadDistribution").List(Worksheets("LineLoad").DropDowns("LoadDistribution").ListIndex))
data(0).Direction = LocalZType
data(0).DistanzaA = 11
data(0).DistanzaB = 22
data(0).RelativeDistances = True
data(0).Magnitudo1 = 4000
data(0).Magnitudo2 = 5000
data(0).Magnitudo3 = 6000
data(0).OverTotalLength = False
data(0).Comment = "carico della linea 1"
'Trasferisci il carico della linea
load.PrepareModification
load.SetLineLoads data
load.FinishModification
    
e: Se Err.Number <> 0 allora MsgBox Err.Description, , Err.Source
Imposta carico = Niente
'La licenza COM è sbloccata, l'accesso al programma è di nuovo possibile
model.GetApplication.UnlockLicense
Set model = Nothing


End Sub

Il codice sorgente può essere trovato in Download.

Autore

La signora von Bloh fornisce supporto tecnico per i nostri clienti ed è responsabile dello sviluppo del programma SHAPE‑THIN e delle strutture in acciaio e alluminio.