2097x
001379
2016-12-20

Interfaccia COM in VBA | 2.1 Creazione dell'asta

Im ersten Teil der Serie ging es um das Öffnen und Erstellen eines Modells in RFEM. Im zweiten Teil soll es am Beispiel eines Stabes um das Anlegen und Verändern von Elementen gehen. Die Elemente aus Teil 1 werden daher nicht erneut angesprochen.

Base

Un elemento in RFEM è costituito da diversi elementi che sono più o meno dipendenti l'uno dall'altro. Se manca uno di questi elementi, non è possibile creare l'asta. La seguente struttura deve essere rispettata.

Per poter creare questo tipo di elemento, è necessario disporre dell'interfaccia per i dati strutturali:

'Ottieni l'interfaccia per i dati del modello.
Dim iModelData As iModelData

Imposta iModelData = iModel.GetModelData ()

Questa interfaccia consente di trasferire finalmente i dati a RFEM.

Modalità di modifica

Una volta che i dati in RFEM devono essere modificati o creati, RFEM deve essere commutato alla modalità di modifica. Ad esempio, è impossibile eseguire alcun calcolo in questa modalità e i dati trasferiti sono disponibili solo dopo essere usciti dalla modalità. È necessario utilizzare il metodo PrepareModification () per passare alla modalità di modifica e FinishModification () per uscire dalla modalità:

'Trasferisci gli elementi in modalità di modifica.
iModelData.PrepareModification
'...
iModelData.FinishModification

Creazione di elementi

Lo scopo è quello di creare un'asta con sezione trasversale IPE 100 e acciaio strutturale S235 dal punto P0 (0,0,0) al punto P1 (1,0,0). Innanzitutto, è necessario creare nodi. Nel seguente esempio, viene utilizzato un array, in quanto rappresenta la massima flessibilità per ulteriori modifiche al programma:

'Crea nodi.
Dim nodeList (0 To 1)As RFEM5.Node
nodeList (0) .RefObjectNo = 0
nodeList (0) .No = 1
nodeList (0) .X = 0 #
nodeList (0) .Y = 0 #
nodeList (0) .Z = 0 #

nodeList (1) .RefObjectNo = 0
nodeList (1) .No = 2
nodeList (1) .X = 1 #
nodeList (1) .Y = 0 #
nodeList (1) .Z = 0 #

iModelData.PrepareModification
Elenco nodi iModelData.SetNodes
iModelData.FinishModification

Come accennato in precedenza, l'array che include i dati del nodo viene trasferito utilizzando i metodi PrepareModification() e FinishModification(). Per la numerazione, è importante il seguente fatto: Quando si deve trasferire un nuovo elemento che include già i numeri di riferimento, gli elementi esistenti non vengono sovrascritti, ma l'elemento viene aggiunto alla fine della lista. Se si inserisce uno zero, l'elemento viene automaticamente impostato sulla posizione libera successiva.

Il processo di creazione delle linee è simile, con la piccola differenza di riferirsi ai nodi, ovviamente. L'elenco dei nodi viene trasferito come una stringa esattamente come in RFEM:

'Crea linee.
Dim lineList (0 To 0) As RFEM5.Line
lineList (0) .nodeList = "1,2"
lineList (0) .Type = LineType.PolylineType

'Trasferisci gli elementi in modalità di modifica.
iModelData.PrepareModification
LineList iModelData.SetLines
iModelData.FinishModification

Elementi di modifica

Per creare una sezione trasversale, è necessario prima creare un materiale. In un nuovo modello RFEM, i materiali del modello creato in precedenza vengono sempre utilizzati per primi. Al fine di garantire che venga utilizzato il materiale pertinente, è necessario eliminare o modificare tutti i materiali esistenti. In questo caso, l'eliminazione di tutti i materiali esistenti e la creazione di un nuovo materiale è il modo più semplice. Contrariamente alla creazione di nuovi elementi, l'interfaccia dei singoli elementi deve essere attivata in caso di cancellazione o modifica. I passaggi sono i seguenti:

'Ottieni il numero di materiali esistenti.
Dim num Come intero
num = iModelData.GetMaterialCount

'Passa sopra i materiali esistenti.
iModelData.PrepareModification
Dim iCome intero
Per i = 0 To num - 1
'Ottieni l'interfaccia con il materiale.
Dim iMat As RFEM5.Materiale
Imposta iMat = iModelData.GetMaterial (i, AtIndex)
'Elimina materiale.
iMat.Delete
Successivo i
iModelData.FinishModification

È possibile ottenere l'interfaccia di un materiale tramite il numero del materiale pertinente (AtNo) o tramite l'indice nell'elenco di tutti i materiali. Contrariamente al numero del materiale, l'indice inizia da zero e non ha spazi vuoti.

Completamento dell'asta

Dopo aver eliminato tutti i materiali, è possibile creare un nuovo materiale. Proprio come in RFEM, anche qui è possibile trasferire il materiale direttamente dalla libreria dei materiali utilizzando il suo nome. Per fare ciò, la stringa corrispondente viene inserita utilizzando la proprietà TextID (per maggiori dettagli, vedere RF ‑ COM 5.chm in SDK):

'Crea nuovo materiale dalla libreria dei materiali.
Dim tappetini (0 To 0) As RFEM5.Materiale
mats (0) .TextID = "NameID | Steel S 235 @ TypeID | STEEL @ StandardID | DIN EN 1993-1-1-10"
tappetini (0) .No = 1

'Trasferisci gli elementi in modalità di modifica.
iModelData.PrepareModification
Tappetini iModelData.SetMaterials
iModelData.FinishModification
Una sezione trasversale viene creata allo stesso modo del materiale. Inoltre, viene specificato il numero del materiale:
'Crea una nuova sezione trasversale dalla libreria.
Dim crs (0 To 0) As RFEM5.CrossSection
crs (0) .TextID = "IPE 100"
crs (0) .MaterialeNo = 1
crs (0) .No = 1

'Trasferisci gli elementi in modalità di modifica.
iModelData.PrepareModification
iModelData.SetCrossSections crs
iModelData.FinishModification
Poiché tutti gli elementi dell'asta sono stati creati, l'asta può essere trasferita ora:
'Crea nuovo membro.
Dim mems (0 To 0) As RFEM5.Member
mems (0) .LineNo = 1
mems (0) .StartCrossSectionNo = 1
mems (0) .No = 1

'Trasferisci gli elementi in modalità di modifica.
iModelData.PrepareModification
Mems iModelData.SetMembers
iModelData.FinishModification

Proprio come in RFEM, anche qui è sufficiente specificare la sezione trasversale all'inizio dell'asta. Non è necessario creare uno svincolo di estremità dell'asta, poiché si presume automaticamente che sia rigido.

Ottimizzazione

Finora, la modalità di modifica è stata recuperata per ogni singolo elemento. Per aumentare la velocità di elaborazione dei dati, è possibile trasferire tutti gli elementi in un'unica modalità di modifica, Le eccezioni sono l'eliminazione di materiali e la creazione di nuovi materiali. In questo caso, devi usare due blocchi separati, poiché è impossibile eliminare e creare elementi all'interno di un blocco:

'Elimina gli elementi in modalità di modifica.
iModelData.PrepareModification
Dim iCome intero
Per i = 0 To num - 1
'Ottieni l'interfaccia con il materiale.
Dim iMat As RFEM5.Materiale
Imposta iMat = iModelData.GetMaterial (i, AtIndex)
'Elimina materiale.
iMat.Delete
Successivo i
iModelData.FinishModification

'Trasferisci gli elementi in modalità di modifica.
iModelData.PrepareModification

Elenco nodi iModelData.SetNodes
LineList iModelData.SetLines
Tappetini iModelData.SetMaterials
iModelData.SetCrossSections crs
Mems iModelData.SetMembers

iModelData.FinishModification

Riepilogo e panoramica

Le procedure spiegate in questo articolo costituiscono la base per tutti gli elementi strutturali che possono essere trasferiti tramite COM. Fanno eccezione i rilasci delle aste non lineari o i vincoli nodali, che includono annidamenti aggiuntivi. Questi elementi saranno spiegati nei seguenti articoli di questa serie.


Autore

Il signor Günthel fornisce supporto tecnico per i clienti di Dlubal Software e si prende cura delle loro richieste.

Link
Download