From cc0cdcf138bcbb71c6156df1ee4cb54b36b56ccd Mon Sep 17 00:00:00 2001 From: marioalexis Date: Sun, 15 Sep 2024 20:51:04 -0300 Subject: [PATCH] Fem: Replace old FemMesh Netgen object implementation --- src/Mod/Fem/Gui/Workbench.cpp | 12 ++++-------- src/Mod/Fem/ObjectsFem.py | 11 +++++++++-- src/Mod/Fem/femcommands/commands.py | 1 + src/Mod/Fem/femtest/app/test_object.py | 10 ++++------ 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/Mod/Fem/Gui/Workbench.cpp b/src/Mod/Fem/Gui/Workbench.cpp index e2ea74f046..adcdc7ad12 100644 --- a/src/Mod/Fem/Gui/Workbench.cpp +++ b/src/Mod/Fem/Gui/Workbench.cpp @@ -154,10 +154,8 @@ Gui::ToolBarItem* Workbench::setupToolBars() const Gui::ToolBarItem* mesh = new Gui::ToolBarItem(root); mesh->setCommand("Mesh"); -#ifdef FCWithNetgen - *mesh << "FEM_MeshNetgenFromShape"; -#endif - *mesh << "FEM_MeshGmshFromShape" + *mesh << "FEM_MeshNetgenFromShape" + << "FEM_MeshGmshFromShape" << "Separator" << "FEM_MeshBoundaryLayer" << "FEM_MeshRegion" @@ -311,10 +309,8 @@ Gui::MenuItem* Workbench::setupMenuBar() const Gui::MenuItem* mesh = new Gui::MenuItem; root->insertItem(item, mesh); mesh->setCommand("M&esh"); -#ifdef FCWithNetgen - *mesh << "FEM_MeshNetgenFromShape"; -#endif - *mesh << "FEM_MeshGmshFromShape" + *mesh << "FEM_MeshNetgenFromShape" + << "FEM_MeshGmshFromShape" << "Separator" << "FEM_MeshBoundaryLayer" << "FEM_MeshRegion" diff --git a/src/Mod/Fem/ObjectsFem.py b/src/Mod/Fem/ObjectsFem.py index 4c6042ad56..5148f2b891 100644 --- a/src/Mod/Fem/ObjectsFem.py +++ b/src/Mod/Fem/ObjectsFem.py @@ -525,8 +525,15 @@ def makeMeshGroup(doc, base_mesh, use_label=False, name="MeshGroup"): def makeMeshNetgen(doc, name="MeshNetgen"): """makeMeshNetgen(document, [name]): - makes a Fem MeshShapeNetgenObject object""" - obj = doc.addObject("Fem::FemMeshShapeNetgenObject", name) + makes a Netgen FEM mesh object""" + obj = doc.addObject("Fem::FemMeshShapeBaseObjectPython", name) + from femobjects import mesh_netgen + + mesh_netgen.MeshNetgen(obj) + if FreeCAD.GuiUp: + from femviewprovider import view_mesh_netgen + + view_mesh_netgen.VPMeshNetgen(obj.ViewObject) return obj diff --git a/src/Mod/Fem/femcommands/commands.py b/src/Mod/Fem/femcommands/commands.py index 8bd97dc065..bc41a058a4 100644 --- a/src/Mod/Fem/femcommands/commands.py +++ b/src/Mod/Fem/femcommands/commands.py @@ -830,6 +830,7 @@ class _MeshNetgenFromShape(CommandManager): self.selobj.Name ) ) + FreeCADGui.doCommand("FreeCAD.ActiveDocument.ActiveObject.Fineness = 'Moderate'") # Netgen mesh object could be added without an active analysis # but if there is an active analysis move it in there import FemGui diff --git a/src/Mod/Fem/femtest/app/test_object.py b/src/Mod/Fem/femtest/app/test_object.py index 31cc829fb9..57471886cb 100644 --- a/src/Mod/Fem/femtest/app/test_object.py +++ b/src/Mod/Fem/femtest/app/test_object.py @@ -240,9 +240,7 @@ class TestObjectType(unittest.TestCase): ) self.assertEqual("Fem::MeshGroup", type_of_obj(ObjectsFem.makeMeshGroup(doc, mesh))) self.assertEqual("Fem::MeshRegion", type_of_obj(ObjectsFem.makeMeshRegion(doc, mesh))) - self.assertEqual( - "Fem::FemMeshShapeNetgenObject", type_of_obj(ObjectsFem.makeMeshNetgen(doc)) - ) + self.assertEqual("Fem::FemMeshNetgen", type_of_obj(ObjectsFem.makeMeshNetgen(doc))) self.assertEqual("Fem::MeshResult", type_of_obj(ObjectsFem.makeMeshResult(doc))) self.assertEqual("Fem::ResultMechanical", type_of_obj(ObjectsFem.makeResultMechanical(doc))) solverelmer = ObjectsFem.makeSolverElmer(doc) @@ -409,7 +407,7 @@ class TestObjectType(unittest.TestCase): ) self.assertTrue(is_of_type(ObjectsFem.makeMeshGroup(doc, mesh), "Fem::MeshGroup")) self.assertTrue(is_of_type(ObjectsFem.makeMeshRegion(doc, mesh), "Fem::MeshRegion")) - self.assertTrue(is_of_type(ObjectsFem.makeMeshNetgen(doc), "Fem::FemMeshShapeNetgenObject")) + self.assertTrue(is_of_type(ObjectsFem.makeMeshNetgen(doc), "Fem::FemMeshNetgen")) self.assertTrue(is_of_type(ObjectsFem.makeMeshResult(doc), "Fem::MeshResult")) self.assertTrue(is_of_type(ObjectsFem.makeResultMechanical(doc), "Fem::ResultMechanical")) solverelmer = ObjectsFem.makeSolverElmer(doc) @@ -745,7 +743,7 @@ class TestObjectType(unittest.TestCase): # FemMeshShapeNetgenObject mesh_netgen = ObjectsFem.makeMeshNetgen(doc) self.assertTrue(is_derived_from(mesh_netgen, "App::DocumentObject")) - self.assertTrue(is_derived_from(mesh_netgen, "Fem::FemMeshShapeNetgenObject")) + self.assertTrue(is_derived_from(mesh_netgen, "Fem::FemMeshShapeBaseObjectPython")) # MeshResult mesh_result = ObjectsFem.makeMeshResult(doc) @@ -972,7 +970,7 @@ class TestObjectType(unittest.TestCase): self.assertTrue(ObjectsFem.makeMeshGroup(doc, mesh).isDerivedFrom("Fem::FeaturePython")) self.assertTrue(ObjectsFem.makeMeshRegion(doc, mesh).isDerivedFrom("Fem::FeaturePython")) self.assertTrue( - ObjectsFem.makeMeshNetgen(doc).isDerivedFrom("Fem::FemMeshShapeNetgenObject") + ObjectsFem.makeMeshNetgen(doc).isDerivedFrom("Fem::FemMeshShapeBaseObjectPython") ) self.assertTrue(ObjectsFem.makeMeshResult(doc).isDerivedFrom("Fem::FemMeshObjectPython")) self.assertTrue(