FEM FemMesh2Mesh/fr: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
 
(22 intermediate revisions by 2 users not shown)
Line 2: Line 2:


{{Docnav/fr
{{Docnav/fr
|[[FEM_CreateNodesSet/fr|Ensemble de nœuds]]
|[[FEM_MeshGroup/fr|Groupe de maillage FEM]]
|[[FEM_SolverCalculixCxxtools/fr|Solveur Calculix standard]]
|[[FEM_SolverCalculixCxxtools/fr|Solveur Calculix standard]]
|[[FEM_Workbench/fr|Atelier FEM]]
|[[FEM_Workbench/fr|Atelier FEM]]
|IconL=FEM_CreateNodesSet.svg
|IconL=FEM_MeshGroup.svg
|IconR=FEM_SolverCalculixCxxtools.svg
|IconR=FEM_SolverCalculixCxxtools.svg
|IconC=Workbench_FEM.svg
|IconC=Workbench_FEM.svg
Line 20: Line 20:
== Description ==
== 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.
Cet outil convertit les surfaces des éléments 3D d'un maillage FEM sélectionné en maillage ou convertit un maillage FEM 2D en maillage. En pratique, il sélectionne les faces des éléments d'un maillage FEM qui sont uniques (non partagées par deux éléments) et les utilise pour créer les faces d'un maillage. En outre, il peut être utilisé pour sauvegarder un maillage déformé. Cela se fait en ajoutant le déplacement des résultats FEM aux nœuds du maillage (l'échelle du déplacement peut être définie à l'aide de Python).

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.


<span id="Usage"></span>
==Utilisation==
==Utilisation==


# Sélectionnez un objet FEM maillage.
# Sélectionnez un objet FEM maillage.
# Si vous le souhaitez, vous pouvez également sélectionner les résultats FEM.
# Vous pouvez également sélectionner les résultats FEM.
# Il existe plusieurs façons de lancer la commande:
# Il existe plusieurs façons de lancer la commande :
#* Appuyez sur le bouton {{Button|[[Image:FEM_FemMesh2Mesh.svg|16px]] [[FEM_FemMesh2Mesh/fr|Maillage FEM à maillage]]}}.
#* Appuyez sur le bouton {{Button|[[Image:FEM_FemMesh2Mesh.svg|16px]] [[FEM_FemMesh2Mesh/fr|Maillage FEM à maillage]]}}.
#* Sélectionnez l'option {{MenuCommand|Maillage → [[Image:FEM_FemMesh2Mesh.svg|16px]] Maillage FEM à maillage}} dans le menu.
#* Sélectionnez l'option {{MenuCommand|Maillage → [[Image:FEM_FemMesh2Mesh.svg|16px]] Maillage FEM à maillage}} du menu.


<span id="Scripting"></span>
==Script==
==Script==


'''Remarque''' : le paramètre ''scale'' est {{Version/fr|0.21}}. Pour les anciennes versions de FreeCAD, il faut l'omettre de votre code.
Exemple : Téléchargez l'exemple 3D FEM de FreeCAD à partir de l'atelier Start et exécutez le code suivant.


L'exemple du cantilever :
{{Code|code=
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 :


{{Code|code=
{{Code|code=
from os.path import join
import FreeCAD as App
import Mesh
import Mesh
from femmesh import femmesh2mesh


path = join(App.getResourceDir(), "examples", "FemCalculixCantilever3D.FCStd")
def extend_by_triangle(i, j, k):
doc = App.openDocument(path)
triangle = [input_mesh.getNodeById(element_nodes[i]),
fem_mesh = doc.Box_Mesh.FemMesh
input_mesh.getNodeById(element_nodes[j]),
result = doc.CCX_Results
input_mesh.getNodeById(element_nodes[k])]
scale = 1 # displacement scale factor
return output_mesh.extend(triangle)
out_mesh = femmesh2mesh.femmesh_2_mesh(fem_mesh, result, scale)

Mesh.show(Mesh.Mesh(out_mesh))
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)
}}
}}




{{Docnav/fr
{{Docnav/fr
|[[FEM_CreateNodesSet/fr|Ensemble de nœuds]]
|[[FEM_MeshGroup/fr|Groupe de maillage FEM]]
|[[FEM_SolverCalculixCxxtools/fr|Solveur Calculix standard]]
|[[FEM_SolverCalculixCxxtools/fr|Solveur Calculix standard]]
|[[FEM_Workbench/fr|Atelier FEM]]
|[[FEM_Workbench/fr|Atelier FEM]]
|IconL=FEM_CreateNodesSet.svg
|IconL=FEM_MeshGroup.svg
|IconR=FEM_SolverCalculixCxxtools.svg
|IconR=FEM_SolverCalculixCxxtools.svg
|IconC=Workbench_FEM.svg
|IconC=Workbench_FEM.svg

Latest revision as of 11:21, 2 March 2024

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 ou convertit un maillage FEM 2D en maillage. En pratique, il sélectionne les faces des éléments d'un maillage FEM qui sont uniques (non partagées par deux éléments) et les utilise pour créer les faces d'un maillage. En outre, il peut être utilisé pour sauvegarder un maillage déformé. Cela se fait en ajoutant le déplacement des résultats FEM aux nœuds du maillage (l'échelle du déplacement peut être définie à l'aide de Python).

Utilisation

  1. Sélectionnez un objet FEM maillage.
  2. Vous pouvez également sélectionner les résultats FEM.
  3. Il existe plusieurs façons de lancer la commande :

Script

Remarque : le paramètre scale est introduit dans la version 0.21. Pour les anciennes versions de FreeCAD, il faut l'omettre de votre code.

L'exemple du cantilever :

from os.path import join
import FreeCAD as App
import Mesh
from femmesh import femmesh2mesh

path = join(App.getResourceDir(), "examples", "FemCalculixCantilever3D.FCStd")
doc = App.openDocument(path)
fem_mesh = doc.Box_Mesh.FemMesh
result = doc.CCX_Results
scale = 1  # displacement scale factor
out_mesh = femmesh2mesh.femmesh_2_mesh(fem_mesh, result, scale)
Mesh.show(Mesh.Mesh(out_mesh))