FEM FemMesh2Mesh/fr: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
Line 47: Line 47:
== Convertir 2D éléments ==
== Convertir 2D éléments ==


Sélectionnez un maillage et lancez le code suivant dans la fenêtre Python de FreeCAD
Sélectionnez un maillage et lancez le script Python suivant :


{{Code|code=
{{Code|code=

Revision as of 12:49, 16 September 2022

FEM Maillage FEM à maillage

Emplacement du menu
Maillage → Maillage FEM à maillage
Ateliers
FEM
Raccourci par défaut
Aucun
Introduit dans la version
-
Voir aussi
FEM Tutoriel

Description

Cet outil convertit les surfaces des éléments 3D d'un maillage FEM sélectionné en maillage. En interne, il choisit les faces des éléments du maillage FEM qui sont uniques (non partagées par deux éléments) et les utilise pour créer les faces d'un maillage. En option, il permet de créer un maillage déformé par l'action des forces définies. Ceci est fait en ajoutant le déplacement des résultats FEM aux nœuds du maillage.

Les éléments bidimensionnels du maillage FEM ne sont pas pris en compte. Si vous devez les convertir, vous pouvez utiliser le script Python ci-dessous.

Utilisation

  1. Sélectionnez un objet maillage FEM.
  2. Si vous le souhaitez, vous pouvez également sélectionner les résultats FEM.
  3. Il existe plusieurs façons de lancer la commande:
    • Appuyez sur le bouton Maillage FEM à maillage.
    • Sélectionnez l'option Maillage → Maillage FEM à maillage dans le menu.

Script

Exemple : Téléchargez l'exemple 3D FEM de FreeCAD à partir de l'atelier Start et exécutez le code suivant.

femmesh_obj = App.ActiveDocument.getObject("Result_mesh").FemMesh
result = App.ActiveDocument.getObject("CalculiX_static_results")
import femmesh.femmesh2mesh
out_mesh = femmesh.femmesh2mesh.femmesh_2_mesh(femmesh_obj, result)
import Mesh
Mesh.show(Mesh.Mesh(out_mesh))

Convertir 2D éléments

Sélectionnez un maillage et lancez le script Python suivant :

import Mesh

def extend_by_triangle(i, j, k):
    triangle = [input_mesh.getNodeById(element_nodes[i]),
                input_mesh.getNodeById(element_nodes[j]),
                input_mesh.getNodeById(element_nodes[k])]
    return output_mesh.extend(triangle) 

selection = FreeCADGui.Selection.getSelection()
input_mesh = App.ActiveDocument.getObject(selection[0].Name).FemMesh
output_mesh = []
for element in input_mesh.Faces:
    element_nodes = input_mesh.getElementNodes(element)
    if len(element_nodes) in [3, 6]:  # tria3 or tria6 (ignoring mid-nodes)
        extend_by_triangle(0, 1, 2)
    elif len(element_nodes) in [4, 8]:  # quad4 or quad8 (ignoring mid-nodes)
        extend_by_triangle(0, 1, 2)
        extend_by_triangle(2, 3, 0)

obj = Mesh.Mesh(output_mesh)
Mesh.show(obj)