diff --git a/src/Mod/Fem/App/CMakeLists.txt b/src/Mod/Fem/App/CMakeLists.txt index 7186e3cb33..e590abf760 100644 --- a/src/Mod/Fem/App/CMakeLists.txt +++ b/src/Mod/Fem/App/CMakeLists.txt @@ -71,10 +71,7 @@ SOURCE_GROUP("Module" FILES ${Mod_SRCS}) SET(FemScripts_SRCS Init.py InitGui.py - FemGmshTools.py FemInputWriter.py - FemMesh2Mesh.py - FemMeshTools.py FemResultTools.py FemToolsCcx.py ObjectsFem.py @@ -122,6 +119,13 @@ SET(FemInterfaces_SRCS feminterface/writeFenicsXML.py ) +SET(FemMesh_SRCS + femmesh/__init__.py + femmesh/femmesh2mesh.py + femmesh/gmshtools.py + femmesh/meshtools.py +) + SET(FemSolver_SRCS femsolver/__init__.py femsolver/solverbase.py @@ -389,6 +393,7 @@ fc_target_copy_resource(Fem ${FemScripts_SRCS} ${FemObjectsScripts_SRCS} ${FemInterfaces_SRCS} + ${FemMesh_SRCS} ${FemGuiScripts_SRCS} ${FemTests_SRCS} ${FemTestsElmer_SRCS} diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index 8c9680027d..ba0c135b0a 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -19,10 +19,7 @@ INSTALL( FILES Init.py InitGui.py - FemGmshTools.py FemInputWriter.py - FemMesh2Mesh.py - FemMeshTools.py FemResultTools.py FemToolsCcx.py ObjectsFem.py @@ -77,6 +74,16 @@ INSTALL( Mod/Fem/feminterface ) +INSTALL( + FILES + femmesh/__init__.py + femmesh/femmesh2mesh.py + femmesh/gmshtools.py + femmesh/meshtools.py + DESTINATION + Mod/Fem/femmesh +) + INSTALL( FILES femsolver/__init__.py diff --git a/src/Mod/Fem/FemInputWriter.py b/src/Mod/Fem/FemInputWriter.py index e887a353ea..37beb4630d 100644 --- a/src/Mod/Fem/FemInputWriter.py +++ b/src/Mod/Fem/FemInputWriter.py @@ -28,7 +28,7 @@ __url__ = "http://www.freecadweb.org" # @{ import FreeCAD -import FemMeshTools +import femmesh.meshtools as FemMeshTools import os diff --git a/src/Mod/Fem/FemToolsCcx.py b/src/Mod/Fem/FemToolsCcx.py index c20ccaa97f..c6368f3a0b 100644 --- a/src/Mod/Fem/FemToolsCcx.py +++ b/src/Mod/Fem/FemToolsCcx.py @@ -803,7 +803,7 @@ def get_refshape_type(fem_doc_object): # in GUI defined material_obj could have no RefShape and RefShapes could be different type # we're going to need the RefShapes to be the same type inside one fem_doc_object # TODO: check if all RefShapes inside the object really have the same type - import FemMeshTools + import femmesh.meshtools as FemMeshTools if hasattr(fem_doc_object, 'References') and fem_doc_object.References: first_ref_obj = fem_doc_object.References[0] first_ref_shape = FemMeshTools.get_element(first_ref_obj[0], first_ref_obj[1][0]) diff --git a/src/Mod/Fem/PyGui/_CommandFemMesh2Mesh.py b/src/Mod/Fem/PyGui/_CommandFemMesh2Mesh.py index 8a39898b14..377e9eb203 100644 --- a/src/Mod/Fem/PyGui/_CommandFemMesh2Mesh.py +++ b/src/Mod/Fem/PyGui/_CommandFemMesh2Mesh.py @@ -50,8 +50,8 @@ class _CommandFemMesh2Mesh(FemCommands): if (len(sel) == 1): if(sel[0].isDerivedFrom("Fem::FemMeshObject")): FreeCAD.ActiveDocument.openTransaction("Create Mesh from FEMMesh") - FreeCADGui.addModule("FemMesh2Mesh") - FreeCADGui.doCommand("out_mesh = FemMesh2Mesh.femmesh_2_mesh(App.ActiveDocument." + sel[0].Name + ".FemMesh)") + FreeCADGui.addModule("femmesh.femmesh2mesh") + FreeCADGui.doCommand("out_mesh = femmesh.femmesh2mesh.femmesh_2_mesh(App.ActiveDocument." + sel[0].Name + ".FemMesh)") FreeCADGui.addModule("Mesh") FreeCADGui.doCommand("Mesh.show(Mesh.Mesh(out_mesh))") FreeCADGui.doCommand("App.ActiveDocument." + sel[0].Name + ".ViewObject.hide()") @@ -68,8 +68,8 @@ class _CommandFemMesh2Mesh(FemCommands): res = sel[0] if femmesh and res: FreeCAD.ActiveDocument.openTransaction("Create Mesh from FEMMesh") - FreeCADGui.addModule("FemMesh2Mesh") - FreeCADGui.doCommand("out_mesh = FemMesh2Mesh.femmesh_2_mesh(App.ActiveDocument." + femmesh.Name + ".FemMesh, App.ActiveDocument." + res.Name + ")") + FreeCADGui.addModule("femmesh.femmesh2mesh") + FreeCADGui.doCommand("out_mesh = femmesh.femmesh2mesh.femmesh_2_mesh(App.ActiveDocument." + femmesh.Name + ".FemMesh, App.ActiveDocument." + res.Name + ")") FreeCADGui.addModule("Mesh") FreeCADGui.doCommand("Mesh.show(Mesh.Mesh(out_mesh))") FreeCADGui.doCommand("App.ActiveDocument." + femmesh.Name + ".ViewObject.hide()") diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py b/src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py index 667a3ab984..3e91f05309 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemMaterial.py @@ -148,7 +148,7 @@ class _TaskPanelFemMaterial: self.references.append((ref[0], elem)) def has_equal_references_shape_types(self): - import FemMeshTools + import femmesh.meshtools as FemMeshTools ref_shty = '' for ref in self.references: r = FemMeshTools.get_element(ref[0], ref[1]) # the method getElement(element) does not return Solid elements diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemMeshGmsh.py b/src/Mod/Fem/PyGui/_TaskPanelFemMeshGmsh.py index 37679460db..54fb1a9156 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemMeshGmsh.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemMeshGmsh.py @@ -137,8 +137,8 @@ class _TaskPanelFemMeshGmsh: self.gmsh_runs = True self.console_log("We are going to start ...") self.get_active_analysis() - import FemGmshTools - gmsh_mesh = FemGmshTools.FemGmshTools(self.obj, self.analysis) + import femmesh.gmshtools as gmshtools + gmsh_mesh = gmshtools.GmshTools(self.obj, self.analysis) self.console_log("Start Gmsh ...") error = '' try: diff --git a/src/Mod/Fem/feminterface/importZ88Mesh.py b/src/Mod/Fem/feminterface/importZ88Mesh.py index 63d6f4641d..ef8c4ac911 100644 --- a/src/Mod/Fem/feminterface/importZ88Mesh.py +++ b/src/Mod/Fem/feminterface/importZ88Mesh.py @@ -71,7 +71,7 @@ def export(objectslist, filename): FreeCAD.Console.PrintError("No FEM mesh object selected.\n") return femnodes_mesh = obj.FemMesh.Nodes - import FemMeshTools + import femmesh.meshtools as FemMeshTools femelement_table = FemMeshTools.get_femelement_table(obj.FemMesh) z88_element_type = get_z88_element_type(obj.FemMesh, femelement_table) f = pyopen(filename, "wb") @@ -399,7 +399,7 @@ def write_z88_mesh_to_file(femnodes_mesh, femelement_table, z88_element_type, f) # Helper def get_z88_element_type(femmesh, femelement_table=None): - import FemMeshTools + import femmesh.meshtools as FemMeshTools if not femmesh: print("Error: No femmesh!") if not femelement_table: diff --git a/src/Mod/Fem/femmesh/__init__.py b/src/Mod/Fem/femmesh/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/Mod/Fem/FemMesh2Mesh.py b/src/Mod/Fem/femmesh/femmesh2mesh.py similarity index 98% rename from src/Mod/Fem/FemMesh2Mesh.py rename to src/Mod/Fem/femmesh/femmesh2mesh.py index feaad9a241..e846ef08d4 100644 --- a/src/Mod/Fem/FemMesh2Mesh.py +++ b/src/Mod/Fem/femmesh/femmesh2mesh.py @@ -38,8 +38,8 @@ load FreeCADs 3D FEM example from Start Workbench femmesh = App.ActiveDocument.getObject("Box_Mesh").FemMesh result = App.ActiveDocument.getObject("CalculiX_static_results") -import FemMesh2Mesh -out_mesh = FemMesh2Mesh.femmesh_2_mesh(femmesh, result) +import femmesh.femmesh2mesh +out_mesh = femmesh.femmesh2mesh.femmesh_2_mesh(femmesh, result) import Mesh Mesh.show(Mesh.Mesh(out_mesh)) diff --git a/src/Mod/Fem/FemGmshTools.py b/src/Mod/Fem/femmesh/gmshtools.py similarity index 99% rename from src/Mod/Fem/FemGmshTools.py rename to src/Mod/Fem/femmesh/gmshtools.py index 90c74c982e..814a174f7b 100644 --- a/src/Mod/Fem/FemGmshTools.py +++ b/src/Mod/Fem/femmesh/gmshtools.py @@ -29,14 +29,14 @@ __url__ = "http://www.freecadweb.org" import FreeCAD import Fem -import FemMeshTools +from . import meshtools as FemMeshTools from FreeCAD import Units import subprocess import tempfile from platform import system -class FemGmshTools(): +class GmshTools(): def __init__(self, gmsh_mesh_obj, analysis=None): self.mesh_obj = gmsh_mesh_obj if analysis: diff --git a/src/Mod/Fem/FemMeshTools.py b/src/Mod/Fem/femmesh/meshtools.py similarity index 100% rename from src/Mod/Fem/FemMeshTools.py rename to src/Mod/Fem/femmesh/meshtools.py diff --git a/src/Mod/Fem/femsolver/calculix/tasks.py b/src/Mod/Fem/femsolver/calculix/tasks.py index 95acdcbdc7..aef238c595 100644 --- a/src/Mod/Fem/femsolver/calculix/tasks.py +++ b/src/Mod/Fem/femsolver/calculix/tasks.py @@ -251,7 +251,7 @@ class _Container(object): # in GUI defined material_obj could have no RefShape and RefShapes could be different type # we gone need the RefShapes to be the same type inside one fem_doc_object # TODO here: check if all RefShapes inside the object really have the same type - import FemMeshTools + import femmesh.meshtools as FemMeshTools if hasattr(fem_doc_object, 'References') and fem_doc_object.References: first_ref_obj = fem_doc_object.References[0] first_ref_shape = FemMeshTools.get_element(first_ref_obj[0], first_ref_obj[1][0]) diff --git a/src/Mod/Fem/femsolver/calculix/writer.py b/src/Mod/Fem/femsolver/calculix/writer.py index f52c3291ec..74a4f9c7a4 100644 --- a/src/Mod/Fem/femsolver/calculix/writer.py +++ b/src/Mod/Fem/femsolver/calculix/writer.py @@ -32,7 +32,7 @@ import FreeCAD import os import sys import time -import FemMeshTools +import femmesh.meshtools as FemMeshTools import FemInputWriter import six diff --git a/src/Mod/Fem/femsolver/elmer/writer.py b/src/Mod/Fem/femsolver/elmer/writer.py index 8d3f8f7d73..ece37dc380 100644 --- a/src/Mod/Fem/femsolver/elmer/writer.py +++ b/src/Mod/Fem/femsolver/elmer/writer.py @@ -34,7 +34,7 @@ import tempfile from FreeCAD import Units import Fem import FemUtils -import FemGmshTools +import femmesh.gmshtools as gmshtools from .. import settings from . import sifio @@ -149,7 +149,7 @@ class Writer(object): os.close(geoFd) os.close(unvGmshFd) - tools = FemGmshTools.FemGmshTools(mesh) + tools = gmshtools.GmshTools(mesh) tools.group_elements = {g: [g] for g in groups} tools.group_nodes_export = False tools.ele_length_map = {} diff --git a/src/Mod/Fem/femsolver/z88/tasks.py b/src/Mod/Fem/femsolver/z88/tasks.py index d4cec31727..2fe0fcf941 100644 --- a/src/Mod/Fem/femsolver/z88/tasks.py +++ b/src/Mod/Fem/femsolver/z88/tasks.py @@ -249,7 +249,7 @@ class _Container(object): # in GUI defined material_obj could have no RefShape and RefShapes could be different type # we gone need the RefShapes to be the same type inside one fem_doc_object # TODO here: check if all RefShapes inside the object really have the same type - import FemMeshTools + import femmesh.meshtools as FemMeshTools if hasattr(fem_doc_object, 'References') and fem_doc_object.References: first_ref_obj = fem_doc_object.References[0] first_ref_shape = FemMeshTools.get_element(first_ref_obj[0], first_ref_obj[1][0]) diff --git a/src/Mod/Fem/femsolver/z88/writer.py b/src/Mod/Fem/femsolver/z88/writer.py index eb3dc5a2ab..22754f88f9 100644 --- a/src/Mod/Fem/femsolver/z88/writer.py +++ b/src/Mod/Fem/femsolver/z88/writer.py @@ -28,7 +28,7 @@ __url__ = "http://www.freecadweb.org" # @{ import FreeCAD -import FemMeshTools +import femmesh.meshtools as FemMeshTools import feminterface.importZ88Mesh as importZ88Mesh import FemInputWriter