Interface COM en VBA | 4.1 Optimisation de portique

Article technique

Ce texte a été traduit par Google Translate

Lire le texte source

Les parties 4.1 et 4.2 de cette série d'articles décrivent l'optimisation d'un portique à l'aide du module additionnel RF‑/STEEL EC3. La cinquième partie de cette série explique comment faire le lien avec ce module et sélectionner les barres adéquates. Les éléments évoqués dans les parties précédentes ne sont plus détaillés.

Figure 01 - Système
Faible crsc_desc As String
crsc_desc = «IPE 300»

'Obtenir toutes les sections de RFEM
Faible crscs () As RFEM5.
crscs = iModelData.GetCrossSections

«Parcourir toutes les sections
Faible crsc_no Tant que
crsc_no = -1
Faible je Tant que
Pour i = 0 À UBound (crscs, 1)
'Si la description de la section est correcte, enregistrez le numéro de la section
Si InStr (LCase (crscs (i) .Description), LCase (crsc_desc))> 0 Puis
crsc_no = crscs (i) .Non
Sortie pour
Fin si
Suivant I

'Quittez le programme si la section souhaitée n'est pas trouvée
Si crsc_no = -1 Puis
Err Élever 513, «Obtenir le numéro de la section», «Aucune section avec» «» & crsc_desc & "" dans la description trouvée! "
End If

La description de la section doit être comparée aussi généralement que possible. Pour ce faire, utilisez d'abord «LCase» pour définir la description de la section et la chaîne à rechercher en minuscules, puis recherchez la chaîne dans la description de la section. Si aucune section adéquate n'a été trouvée, le numéro de section reste à -1, ce qui peut être interrogé et annulé.

Après cette étape, le numéro de section est connu et les barres avec ce numéro de section peuvent être recherchées. Seuls les barres avec cette section en début et en fin doivent être transférées:

'Créer une chaîne pour la liste des membres et la définir à zéro
Faible mems_str As String
mems_str = vbanullstr

'Obtenir la participation de RFEM
Faible mems () As RFEM5.
mems = iModelData.GetMembers

'Parcourir tous les barres
Pour i = 0 À UBound (États-Unis, 1)
«Si une barre porte ce numéro de section en début et en fin de
'puis son numéro est transféré dans la chaîne de caractères
Si mems (i) .EndCrossSectionNo = crsc_no Puis
Si mems (i) .EndCrossSectionNo = mems (i) .StartCrossSectionNo Puis
mems_str = mems_str & mems (i) .Non & ","
Fin si
Fin si
Suivant I

'Terminer le programme si aucun membre n'a été trouvé
Si mems_str = vbanullstr Puis
Err Augmenter 514, «Obtenir des membres», «Aucun élément avec section» «» & crsc_desc & "" "trouvé!"
End If

Obtenir l'interface du module additionnel

La connexion à un module est la même que pour RFEM ou RSTAB. La seule différence est qu'il n'y a pas de différence entre l'ouverture d'une instance déjà ouverte et l'ouverture d'une nouvelle instance car il existe toujours une instance déjà ouverte:

'Obtenir l'interface pour le module
Faible iStec3 As STEEL_EC3.Modules
Ensemble iStec3 = iModel.GetModule ("STEEL_EC3")

Ensuite, nous supprimons tous les cas de module existants:

'Obtenir le nombre de cas de module existants
Faible compter Tant que
nombre = iStec3.moGetCaseCount

'Si des cas existent, supprimez toujours le premier du tableau
Si compter> 0 Puis
Pour i = 0 À nombre - 1
iStec3.moDeleteCase i, AT_INDEX
Suivant I
End If

Vous pouvez ensuite créer le cas souhaité et entrer les barres pour le calcul à l'aide de la chaîne précédemment créée:

Cas du module «Créer» l'optimisation
Faible iStec3Case As STEEL_EC3.ICase
Ensemble iStec3Case = iStec3.moSetCase (1, «Optimisation»)

'Définir les barres pour la vérification
iStec3Case.moSetMemberList mems_str

Enfin, entrez les combinaisons de cas de charge souhaitées:

'Définir les combinaisons de charges
Faible iStec3_uls_loads (0 À 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

Résumé et perspectives

Les procédures affichées ici sont représentatives de tous les modules pouvant être contrôlés avec COM. Le code source et le fichier Excel vous aident à mieux comprendre le sujet. Dans le prochain article, je vais approfondir et créer la connexion entre les éléments du module et du programme principal.

Téléchargements

Liens

Contactez-nous

Contactez-nous

Des questions sur nos produits ? Besoin de conseils sur un projet ?
Contactez notre assistance technique gratuite par e-mail, via le chat Dlubal ou sur notre forum international. N'hésitez pas à consulter les nombreuses solutions et astuces de notre FAQ.

+33 1 78 42 91 61

info@dlubal.fr

RFEM Logiciel principal
RFEM 5.xx

Programme de base

Logiciel de calcul de structures aux éléments finis (MEF) pour les structures 2D et 3D composées de plaques, voiles, coques, barres (poutres), solides et éléments d'assemblage

Prix de la première licence
3 540,00 USD
RFEM Structures en acier
RF-STEEL EC3 5.xx

Module additionnel

Vérification des barres en acier selon l'Eurocode 3

Prix de la première licence
1 480,00 USD
RFEM Autres
RF-COM 5.xx

Module additionnel

Interface programmable (API) basée sur la technologie COM

Prix de la première licence
580,00 USD