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.