828x
004688
2020-09-01

Pregunta

¿Cómo puedo modificar la configuración de la malla de EF a través de la interfaz COM?


Respuesta:

La configuración general de la malla de EF se puede modificar utilizando la interfaz IFeMeshSettings. Esta interfaz se encuentra en IModel> IModelData> ICalculation. La imagen 01 muestra qué elementos se pueden modificar/mostrar.

Aquí hay un ejemplo de código donde la longitud objetivo de los elementos de EF se establece en 100 mm. Además, se activa la división de las barras con el mismo tamaño de elemento y se establece la división mínima en 3 elementos:

Sub mesh_params ()

Dim iApp As RFEM5.Application

' obtener la interfaz para los datos del modelo
Dim iModel As RFEM5.model
Set iModel = GetObject(, "RFEM5.Model")

On Error GoTo e

Si no es iModel entonces
    
' obtener interfaz para la aplicación y bloquear la licencia
Set iApp = iModel.GetApplication()
iApp.LockLicense
    
' obtener la interfaz para los datos del modelo
Atenuar iModdata como RFEM5.IModelData2
Establecer iModdata = iModel.GetModelData
    
' get interface for calculationv
Dim iCalc As RFEM5.ICalculation2
Establecer iCalc = iModel.GetCalculation ()
    
' obtener interfaz para la configuración de la malla
Dim iMeshSet como RFEM5.IFeMeshSettings
Establecer iMeshSet = iCalc.GetFeMeshSettings
    
' obtener la configuración general de la malla
Dim meshGen As RFEM5.FeMeshGeneralSettings
meshGen = iMeshSet.GetGeneral
    
meshGen.ElementLength = 0.1
    
' establecer una nueva configuración general de la malla
iModdata.PrepareModification
iMeshSet.SetGeneral meshGen
iModdata.FinishModification
    
' obtener la configuración de la barra de la malla
Dim meshMem como RFEM5.FeMeshMembersSettings
meshMem = iMeshSet.GetMembers
    
meshMem.DivideStraightMembers = True
meshMem.ElementLength = 0.1
meshMem.MinStraightMemberDivisions = 3
    
' establecer una nueva configuración de barra de malla
iModdata.PrepareModification
iMeshSet.SetMembers meshMem
iModdata.FinishModification
    
    
iApp.UnlockLicense
End If

e: Si Err.Number <> 0 entonces
MsgBox Err.description`` Err.Source
End If
iApp.UnlockLicense
Establecer iApp = Nada
iModel.GetApplication.UnlockLicense

End Sub


La subrutina también se completa con una rutina de intercepción de errores (On Error GoTo e) y se requiere el bloque Prepare-/FinishModification como en el caso de modificar otros elementos. Aquí, el bloque se crea a través de la interfaz IFeMeshSettings.


Autor

El Sr. Günthel proporciona soporte técnico para los clientes de Dlubal Software y se ocupa de sus solicitudes.