Interfaccia COM in VBA | 4.1 Ottimizzazione del frame

Articolo tecnico

Le parti 4.1 e 4.2 della serie riguardano l'ottimizzazione di un telaio con l'aiuto del modulo aggiuntivo RF- / STEEL EC3. La quinta parte riguarda la connessione del modulo e il recupero delle barre pertinenti. Gli elementi che sono già stati spiegati nelle parti precedenti non saranno discussi di nuovo.

Figura 01 - Sistema

Filtra le barre pertinenti

Lo scopo dovrebbe essere quello di prendere in considerazione solo le aste di una certa sezione trasversale nel dimensionamento del modulo EC3. Per il seguente esempio, tutte le barre con la sezione trasversale "IPE 300" devono essere filtrate. A tal fine, vengono recuperate prima tutte le sezioni trasversali del programma principale:

' Zeichenkette des gewünschten Querschnitts anlegen
Dim crsc_desc As String
crsc_desc = "IPE 300"

' Alle Querschnitte aus RFEM holen
Dim crscs() As RFEM5.CrossSection
crscs = iModelData.GetCrossSections

' Schleife über alle Querschnitte
Dim crsc_no As Long
crsc_no = -1
DimAs Long
For i = 0 To UBound(crscs, 1)
' Wenn die Querschnittsbezeichung stimmt, Querschnittsnummer speichern
If InStr(LCase(crscs(i).Description), LCase(crsc_desc)) > 0 Then
crsc_no = crscs(i).No
Exit For
End If
Next i

' Programm beenden, wenn der gewünschte Querschnitt nicht gefunden wurde
If crsc_no = -1 Then
Err.Raise 513, "Get cross-section number" , "No cross-section with "" " & crsc_desc & " "" within its description found!"
End If

La regolazione della designazione trasversale deve essere il più generale possibile. A tale scopo, la designazione della sezione trasversale e la stringa di caratteri da cercare vengono dapprima impostate in lettere minuscole tramite "LCase" e quindi ricercate la stringa di caratteri nella designazione della sezione trasversale. Se non è stata trovata alcuna sezione trasversale corrispondente, il numero della sezione trasversale rimane a -1, che può quindi essere interrogato e confermato con una interruzione.

Dopo questo passaggio, il numero della sezione trasversale è noto e le barre con questo numero di sezione trasversale possono essere cercate. Devono essere prese solo le barre che hanno questa sezione all'inizio e alla fine:

' Zeichenkette für Stabliste anlegen und zu null setzen
Dim mems_str As String
mems_str = vbanullstr

' Alle Stäbe aus RFEM holen
Dim mems() As RFEM5.Member
mems = iModelData.GetMembers

' Schleife über alle Stäbe
For i = 0 To UBound(mems, 1)
' Wenn ein Stab diese Querschnittsnummer am Anfang und am Ende hat,
' dann wird dessen Nummer in die Zeichenkette übernommen
If mems(i).EndCrossSectionNo = crsc_no Then
If mems(i).EndCrossSectionNo = mems(i).StartCrossSectionNo Then
mems_str = mems_str & mems(i).No & ","
End If
End If
Next i

' Programm beenden, wenn kein Stab gefunden wurde
If mems_str = vbanullstr Then
Err.Raise 514, "Get members" , "No member with cross-section "" " & crsc_desc & " "" found!"
End If

Ottieni l'interfaccia del modulo aggiuntivo

La connessione a un modulo è come la connessione a RFEM o RSTAB. L'unica differenza è che non esiste alcuna distinzione tra l'apertura di un'istanza già aperta o l'apertura di una nuova istanza, poiché esiste sempre un'istanza già aperta:

' Interface für Modul holen
Dim iStec3 As STEEL_EC3.Module
Set iStec3 = iModel.GetModule( "STEEL_EC3" )

Als nächstes werden alle vorhandenen Modulfälle gelöscht:

' Anzahl der vorhandenen Modulfälle holen
Dim count As Long
count = iStec3.moGetCaseCount

' Falls Fälle vorhanden sind, immer den ersten in der Tabelle löschen
If count > 0 Then
For i = 0 To count - 1
iStec3.moDeleteCase i, AT_INDEX
Next i
End If

Quindi è possibile creare il caso desiderato e inserire le barre per il disegno tramite la stringa creata in precedenza:

' Modulfall "Optimization" anlegen
Dim iStec3Case As STEEL_EC3.ICase
Set iStec3Case = iStec3.moSetCase(1, "Optimization" )

' Stäbe für Bemessung setzen
iStec3Case.moSetMemberList mems_str

Infine, vengono aggiunte le combinazioni di carico desiderate:

' Lastkombinationen setzen
Dim iStec3_uls_loads(0 To 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.moSetULSLoads iStec3_uls_loads

Riepilogo e Outlook

Le procedure presentate qui sono rappresentative di tutti i moduli che possono essere controllati con COM. Il codice sorgente e il file Excel aiutano a capire meglio l'argomento. Nel prossimo articolo andremo più in profondità e creeremo il collegamento tra gli elementi nel modulo e nel programma principale.

Scarica

Link

Contattaci

Contattaci

Hai domande o hai bisogno di un consiglio?
Contattaci tramite il nostro supporto gratuito via email, chat o forum oppure trova soluzioni e consigli utili nella nostra pagina 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