1021x
001571
2020-07-20

[IT] KB 001639 | Trasformazione della nervatura in modello di superficie con trave risultante utilizzando VBA

Soggetto:
Trasformazione della nervatura in modello di superficie con trave risultante utilizzando VBA

Note:
Se la nervatura fa parte di un progetto non lineare o è rigidamente collegata alle seguenti pareti, si dovrà utilizzare una superficie per la modellazione invece di un'asta. Comunque la nervatura possa ancora essere progettata come un asta, è richiesto un asta risultante con la corretta eccentricità, che trasforma le forze interne della superficie in forze interne dell'asta.

Descrizione:
Poiché la modellazione di una tale nervatura basata sulla superficie con l'asta risultante è molto più complicata rispetto della creazione di un'asta del tipo nervatura, il seguente programma in EXCEL-VBA convertirà la nervatura basata sull'asta in un modello di superficie incluso l'asta del risultato.

Per trasformare una nervatura in un modello di superficie, sono necessari i seguenti passaggi:

1.
Lettura dei parametri della nervatura (sezione trasversale, orientamento, ecc.)
2.
Crea superficie della nervatura
3.
crea trave risultante
4.
Elimina asta di nervatura

Nel testo seguente, mostreremo estratti dall'intero codice sorgente come esempi. È possibile scaricare il codice completo alla fine di questo articolo.

Leggi i parametri della nervatura

È possibile selezionare la nervatura da trasformare selezionandola dall'interfaccia del programma. Per fare ciò, è necessario lavorare con la funzione EnableSelections. Finché EnableSelections è attivato con true, solo gli elementi selezionati vengono letti da RFEM. La lettura dell'asta selezionata è simile a questa.

' ottieni l'interfaccia del modello attivo
Imposta iMod = iApp.GetActiveModel

' ottieni l'interfaccia dei dati del modello (strutturale).
Dim iModData come RFEM5.IModelData2
Imposta iModData = iMod.GetModelData

' ottiene l'asta selezionata
iModData.EnableSelections True

Dim mems() As RFEM5.Member
Dim selMem As RFEM5.Member
mems = iModData.GetMembers
selMem = mems(0)

iModData.EnableSelections False

I seguenti parametri sono necessari per la modellazione della nervatura:

Sezione trasversale della nervatura, numeri delle superfici e larghezze efficaci
Orientamento della nervatura
Materiale della nervatura

In RFEM, una nervatura è un tipo di asta. Quando si utilizza la programmazione tramite l'interfaccia COM, è necessario ottenere i dati di una nervatura tramite due diverse interfacce. Da un lato, c'è l'interfaccia per l'asta e dall'altro, c'è l'interfaccia per la nervatura. L'interfaccia con una nervatura può essere ottenuta tramite IModelData.GetRib. GetRib si aspetta il numero di nervatura contenuta nell'asta tramite Member.RibNo.

' ottiene i parametri della nervatura
' ########################
Dim iRb As RFEM5.IRib
Imposta iRb = iModData.GetRib(selMem.RibNo, AtNo)

Dim selRb As RFEM5.Rib
selRb = iRb.GetData

Dim rbCrsc As RFEM5.RibCrossSection
rbCrsc = iRb.GetRibCrossSection

L'interfaccia con la nervatura offre due diversi elementi: i dati generali della nervatura tramite la struttura della nervatura e i dati della sezione trasversale della nervatura tramite RibCrossSection. Nervatura contiene i numeri delle superfici, la posizione della nervatura e le larghezze efficaci. RibCrossSection contiene la descrizione e le dimensioni della sezione trasversale della nervatura interna, che è utilizzata anche da RF-CONCRETE Members (ITCU).

Inoltre, è richiesto l'orientamento, che è disponibile tramite il sistema di assi locale dell'asta. Si accede al sistema di assi tramite l'interfaccia con l'asta. La funzione IMemer.GetLocalCoordinateSystem restituisce la struttura CoordinateSystem.

Dim accogliente come RFEM5.CoordinateSystem
accogliente = iModData.GetMember(selMem.no, AtNo).GetLocalCoordinateSystem(0#).GetData

GetLocalCoordinateSystem si aspetta ancora la posizione x dell'asta, che è stata impostata su 0.0 o l'inizio qui. Oltre ai parametri menzionati, è richiesto anche il materiale dell'asta, che può essere ottenuto tramite la sezione trasversale dell'asta.

Dim selCrsc As RFEM5.CrossSection
selCrsc = iModData.GetCrossSection(selMem.StartCrossSectionNo, AtNo).GetData

Crea superficie della nervatura

Il programma è stato creato inizialmente solo per nervature diritte sul lato z positivo. Poiché la nervatura può essere anche su piani obliqui, è necessario creare la superficie utilizzando l'orientamento dell'asta. La variabile accogliente per il sistema di assi locale dell'asta include il vettore di direzione per l'asse locale z cosy.AxisZ con i suoi tre valori, x, y e z. Questo vettore è normalizzato in modo che, moltiplicato per l'altezza della nervatura, indichi la distanza e la direzione del bordo inferiore della nervatura. Per le linee di contorno della superficie della nervatura, questo vettore viene moltiplicato per l'altezza della nervatura e aggiunto ai nodi iniziali e finali. Ciò si traduce nei due nodi finali della linea del bordo inferiore della superficie della nervatura. Notare quanto segue: l'altezza della nervatura include anche metà dello spessore della superficie della larghezza efficace. Per semplificare, viene utilizzato solo lo spessore della superficie del primo lato (-y nel sistema di assi locale) dalla sezione trasversale della nervatura (UpperLeftFlangeThickness). Dopo che i nodi sono disponibili, è possibile generare il contorno...