Interfaccia COM in VBA | 4.1 Ottimizzazione del telaio

Articolo tecnico

Questo articolo è stato tradotto da Google Traduttore Visualizza il testo originale

Le sezioni 4.1 e 4.2 di questa serie di articoli descrivono l'ottimizzazione di un telaio utilizzando il modulo aggiuntivo RF - STEEL EC3 . La quinta parte spiega come collegare il modulo e ottenere le aste pertinenti. Gli elementi già spiegati nelle parti precedenti non saranno più descritti.

Figura 01 - Sistema
Dim crsc_desc Come stringa
crsc_desc = "IPE 300"

'Ottieni tutte le sezioni trasversali da RFEM
Dim crscs () As RFEM5.CrossSection
crscs = iModelData.GetCrossSections

'Passa attraverso tutte le sezioni trasversali
Dim crsc_no Più a lungo
crsc_no = -1
Dim io Più a lungo
Per i = 0 A UBound (crscs, 1)
'Se la descrizione della sezione trasversale è corretta, salvare il numero della sezione trasversale
Se InStr (LCase (crscs (i) .Description), LCase (crsc_desc))> 0 Quindi
crsc_no = crscs (i) .No
Esci per
End If
Il prossimo i

'Uscire dal programma se la sezione trasversale desiderata non è stata trovata
Se crsc_no = -1 Quindi
Err.Raise 513, "Ottieni il numero della sezione trasversale", "Nessuna sezione trasversale con" "" & crsc_desc & "" trovato nella sua descrizione! "
End If

La descrizione della sezione trasversale deve essere confrontata nel modo più generale possibile. Per fare ciò, utilizzare prima "LCase" per impostare sia la descrizione della sezione trasversale che la stringa da cercare in lettere minuscole, quindi cercare la stringa nella descrizione della sezione trasversale. Se non viene trovata alcuna sezione trasversale adatta, il numero della sezione trasversale rimane su -1, che può quindi essere interrogato e cancellato.

Dopo questo passaggio, si conosce il numero della sezione trasversale e si possono cercare le aste con questo numero della sezione trasversale. Solo le aste con questa sezione trasversale all'inizio e alla fine devono essere trasferite:

'Crea una stringa per l'elenco dei membri e imposta a zero
Dim mems_str Come stringa
mems_str = vbanullstr

'Ottieni tutti i membri da RFEM
Dim mems () As RFEM5.Member
mems = iModelData.GetMembers

'Passa in rassegna tutti i membri
Per i = 0 A UBound (mems, 1)
"Se un membro ha questo numero di sezione trasversale all'inizio e alla fine,
'quindi il suo numero viene trasferito alla stringa
Se mems (i) .EndCrossSectionNo = crsc_no Quindi
Se mems (i) .EndCrossSectionNo = mems (i) .StartCrossSectionNo Quindi
mems_str = mems_str & mems (i) .No & ","
End If
End If
Il prossimo i

'Termina il programma se non viene trovato nessun membro
Se mems_str = vbanullstr Quindi
Err.Raise 514, "Ottieni membri", "Nessun elemento con sezione trasversale" "" & crsc_desc & "" "trovato!"
End If

Ottieni l'interfaccia del modulo aggiuntivo

La connessione a un modulo è uguale alla connessione a RFEM o RSTAB. L'unica differenza è che non c'è alcuna differenza tra l'apertura di un'istanza già aperta o l'apertura di una nuova istanza perché c'è sempre un'istanza già aperta:

'Ottieni l'interfaccia per il modulo
Dim iStec3 As STEEL_EC3.Moduli
Set iStec3 = iModel.GetModule ("STEEL_EC3")

Quindi, eliminiamo tutti i casi di moduli esistenti:

'Ottieni il numero di casi di moduli esistenti
Dim conta Più a lungo
count = iStec3.moGetCaseCount

'Se esistono casi, elimina sempre il primo nella tabella
Se conteggio> 0 Quindi
Per i = 0 A conteggio - 1
iStec3.moDeleteCase i, AT_INDEX
Il prossimo i
End If

Quindi, è possibile creare il caso desiderato e inserire i membri per il disegno usando la stringa precedentemente creata:

Modulo "Crea ottimizzazione" caso
Dim iStec3Case As STEEL_EC3.ICase
Set iStec3Case = iStec3.moSetCase (1, "Ottimizzazione")

'Imposta i membri per la progettazione
iStec3Case.moSetMemberList mems_str

Infine, inserisci le combinazioni di casi di carico desiderate:

'Imposta combinazioni di carico
Dim iStec3_uls_loads (0 A 2) As STEEL_EC3.ULS_LOAD

iStec3_uls_loads (0) .DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads (0) .No = 1
iStec3_uls_loads (0) .Type = ILOAD_GROUP

iStec3_uls_loads (1) .DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads (1) .No = 2
iStec3_uls_loads (1) .Type = ILOAD_GROUP

iStec3_uls_loads (2) .DesignSituation = DS_FUNDAMENTAL
iStec3_uls_loads (2) .No = 3
iStec3_uls_loads (2) .Type = ILOAD_GROUP

iStec3Case.moSetULSL ricarica iStec3_uls_loads

Riepilogo e Outlook

Le procedure mostrate qui sono rappresentative di tutti i moduli che possono essere controllati con COM. Il codice sorgente e il file Excel consentono di comprendere meglio l'argomento. Nel prossimo articolo, andrò più in profondità e creerò la connessione tra gli elementi nel modulo e nel programma principale.

Scarica

Link

Contattaci

Contattaci

Hai domande o bisogno di consigli?
Contattaci gratuitamente tramite e-mail, chat o il nostro forum di supporto o trova varie soluzioni e consigli utili nella nostra pagina delle FAQ.

+39 051 9525 443

info@dlubal.it

RFEM Programma principale
RFEM 5.xx

Programma principale

Software di progettazione strutturale per l'analisi con elementi finiti (FEA) di sistemi strutturali piani e spaziali costituiti da piastre, pareti, gusci, aste (travi), elementi solidi e di contatto

Prezzo della prima licenza
3.540,00 USD
RFEM Strutture in acciaio e alluminio
RF-STEEL EC3 5.xx

Modulo aggiuntivo

Progettazione delle aste di acciaio secondo Eurocodice 3

Prezzo della prima licenza
1.480,00 USD
RFEM Other
RF-COM 5.xx

Modulo aggiuntivo

Interfaccia programmabile (API) basata sulla tecnologia COM

Prezzo della prima licenza
580,00 USD