516x
002411
05.03.2021

[FR] FAQ 004961 | Comment supprimer, par exemple, tous les nœuds ou barres d’un modèle ...

Question :
Comment supprimer, par exemple, tous les nœuds ou barres d’un modèle à l’aide de l’interface COM ?

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.



;