807x
004961
08.04.2021

Question

Comment puis-je utiliser l'interface COM pour supprimer par exemple tous les nœuds ou barres d'un modèle ?


Réponse:

La fonction « DeleteObjects() » est disponible dans l'interface de données du modèle et permet d'en supprimer des éléments. Les barres sont alors supprimées comme suit :

Sub test_delete_objects()

Dim iApp As RFEM5.Application
Set iApp = GetObject(, "RFEM5.Application")

iApp.LockLicense

Dim iMod As RFEM5.IModel3
Set iMod = iApp.GetActiveModel


On Error GoTo e

    '   get interface for model data
Dim iModData As RFEM5.IModelData2
Set iModData = iMod.GetModelData
    
    '   get all members
    Dim mems() As RFEM5.Member
    mems() = iModData.GetMembers
    
    '   create member list
    Dim mem_list As String
    Dim i As Integer
    For i = 0 To UBound(mems, 1)
        mem_list = mem_list & mems(i).no & ","
    Next
    
    '   delete members
    iModData.PrepareModification
    iModData.DeleteObjects MemberObject, mem_list
    iModData.FinishModification
    
e:

If Err.Number <> 0 Then MsgBox Err.description, vbCritical, Err.Source

iMod.GetApplication.UnlockLicense
Set iMod = Nothing

End Sub


Veuillez noter que la fonction « DeleteObjects » ne fonctionne qu'avec le numéro d'objet et non avec l'index d'objet. Ces numéros sont transférés sous forme de chaîne et séparés par des virgules.

Pour cette raison, toutes les barres doivent d'abord être récupérées. Le champ des barres est ensuite exécuté dans une boucle et tous les numéros de barre sont entrés dans la chaîne.