690x
001807
2020-09-01

[IT] FAQ 004688 | Come posso modificare le impostazioni della mesh EF tramite l'interfaccia COM?

Domanda:
Come posso modificare le impostazioni della mesh EF tramite l'interfaccia COM?

Risposta:
Le impostazioni generali della mesh EF possono essere modificate utilizzando l'interfaccia IFeMeshSettings. Questa interfaccia si trova sotto IModel > IModelData > ICalculation. La Figura 01 mostra quali elementi possono essere modificati / visualizzati.

Ecco un esempio di codice in cui la lunghezza obiettivo degli elementi EF è impostata su 100 mm. Inoltre, viene attivata la divisione delle aste con la stessa grandezza di elemento ed la divisione minima è impostata su 3 elementi:

Sub mesh_params()

Dim iApp As RFEM5.Application

' get interface for model data
Dim iModel As RFEM5.model
Set iModel = GetObject(, "RFEM5.Model")

On Error GoTo e

If Not iModel Is Nothing Then

    ' ottieni l'interfaccia per l'applicazione e blocca la licenza
    Imposta iApp = iModel.GetApplication()
    iApp.LockLicense

    ' ottieni l'interfaccia per i dati del modello
    Dim iModdata As RFEM5.IModelData2
    Imposta iModdata = iModel.GetModelData

    ' ottieni l'interfaccia per il calcolo
    Dim iCalc As RFEM5.ICalculation2
    Imposta iCalc = iModel.GetCalculation()

    ' ottieni l'interfaccia per le impostazioni della mesh
    Dim iMeshSet As RFEM5.IFeMeshSettings
    Imposta iMeshSet = iCalc.GetFeMeshSettings

    ' ottieni le impostazioni generali della mesh
    Dim meshGen As RFEM5.FeMeshGeneralSettings
    meshGen = iMeshSet.GetGeneral

    meshGen.ElementLength = 0.1

    ' imposta nuove impostazioni generali della mesh
    iModdata.PrepareModification
    iMeshSet.SetGeneral meshGen
    iModdata.FinishModification

    ' ottieni le impostazioni dei membri della mesh
    Dim meshMem As RFEM5.FeMeshMembersSettings
    meshMem = iMeshSet.GetMembers

    meshMem.DivideStraightMembers = True
    meshMem.ElementLength = 0.1
    meshMem.MinStraightMemberDivisions = 3

    ' imposta le nuove impostazioni dell'asta della mesh
    iModdata.PrepareModification
    iMeshSet.SetMembers meshMem
    iModdata.FinishModification

    iApp.UnlockLicense
End If

e:  Se Err.Number 0 Allora
    MsgBox Err.description, , Err.Source
    End If
    iApp.UnlockLicense
    Set iApp = Nothing
    Imposta iModel = Niente

End Sub

La subroutine è completata anche da una routine di intercettazione di errore (On Error GoTo e) ed è necessario il blocco Prepare-/FinishModification come nel caso della modifica di altri elementi. Qui, il blocco viene creato tramite l'interfaccia IFeMeshSettings.