From 97d90d53edcb9a5da8a58ec0241405b5e7025b4f Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Fri, 27 Mar 2020 05:56:36 +0100 Subject: [PATCH] FEM: z88 some small code improvements --- src/Mod/Fem/feminout/importZ88Mesh.py | 18 +++++++++--------- src/Mod/Fem/femsolver/z88/writer.py | 16 ++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/Mod/Fem/feminout/importZ88Mesh.py b/src/Mod/Fem/feminout/importZ88Mesh.py index 0a189e1833..7388ff9bc0 100644 --- a/src/Mod/Fem/feminout/importZ88Mesh.py +++ b/src/Mod/Fem/feminout/importZ88Mesh.py @@ -30,9 +30,12 @@ __url__ = "http://www.freecadweb.org" # \brief FreeCAD Z88 Mesh reader and writer for FEM workbench import os + import FreeCAD from FreeCAD import Console +from femmesh import meshtools + # ************************************************************************************************ # ********* generic FreeCAD import and export methods ******************************************** # names are fix given from FreeCAD, these methods are called from FreeCAD @@ -86,8 +89,7 @@ def export( Console.PrintError("No FEM mesh object selected.\n") return femnodes_mesh = obj.FemMesh.Nodes - import femmesh.meshtools as FemMeshTools - femelement_table = FemMeshTools.get_femelement_table(obj.FemMesh) + femelement_table = meshtools.get_femelement_table(obj.FemMesh) z88_element_type = get_z88_element_type(obj.FemMesh, femelement_table) f = pyopen(filename, "wb") write_z88_mesh_to_file(femnodes_mesh, femelement_table, z88_element_type, f) @@ -429,8 +431,7 @@ def write( Console.PrintError("Not a FemMesh was given as parameter.\n") return femnodes_mesh = fem_mesh.Nodes - import femmesh.meshtools as FemMeshTools - femelement_table = FemMeshTools.get_femelement_table(fem_mesh) + femelement_table = meshtools.get_femelement_table(fem_mesh) z88_element_type = get_z88_element_type(fem_mesh, femelement_table) f = pyopen(filename, "w") write_z88_mesh_to_file(femnodes_mesh, femelement_table, z88_element_type, f) @@ -554,18 +555,17 @@ def get_z88_element_type( femmesh, femelement_table=None ): - import femmesh.meshtools as FemMeshTools if not femmesh: Console.PrintError("Error: No femmesh.\n") if not femelement_table: Console.PrintError("The femelement_table need to be calculated.\n") - femelement_table = FemMeshTools.get_femelement_table(femmesh) + femelement_table = meshtools.get_femelement_table(femmesh) # in some cases lowest key in femelement_table is not [1] for elem in sorted(femelement_table): elem_length = len(femelement_table[elem]) Console.PrintLog("Node count of first element: {}\n".format(elem_length)) break # break after the first elem - if FemMeshTools.is_solid_femmesh(femmesh): + if meshtools.is_solid_femmesh(femmesh): if femmesh.TetraCount == femmesh.VolumeCount: if elem_length == 4: return 17 @@ -583,7 +583,7 @@ def get_z88_element_type( return 0 else: Console.PrintError("no tetra, no hexa or Mixed Volume Elements.\n") - elif FemMeshTools.is_face_femmesh(femmesh): + elif meshtools.is_face_femmesh(femmesh): if femmesh.TriangleCount == femmesh.FaceCount: if elem_length == 3: Console.PrintError("tria3mesh, not supported by Z88.\n") @@ -605,7 +605,7 @@ def get_z88_element_type( else: Console.PrintError("no tria, no quad\n") return 0 - elif FemMeshTools.is_edge_femmesh(femmesh): + elif meshtools.is_edge_femmesh(femmesh): Console.PrintMessage("Edge femmesh will be exported as 3D truss element nr 4.\n") return 4 else: diff --git a/src/Mod/Fem/femsolver/z88/writer.py b/src/Mod/Fem/femsolver/z88/writer.py index ba4f4a73ed..f433c05f64 100644 --- a/src/Mod/Fem/femsolver/z88/writer.py +++ b/src/Mod/Fem/femsolver/z88/writer.py @@ -32,12 +32,12 @@ import time import FreeCAD -from .. import writerbase as FemInputWriter +from .. import writerbase from feminout import importZ88Mesh -from femmesh import meshtools as FemMeshTools +from femmesh import meshtools -class FemInputWriterZ88(FemInputWriter.FemInputWriter): +class FemInputWriterZ88(writerbase.FemInputWriter): def __init__( self, analysis_obj, @@ -46,7 +46,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter): member, dir_name=None ): - FemInputWriter.FemInputWriter.__init__( + writerbase.FemInputWriter.__init__( self, analysis_obj, solver_obj, @@ -68,7 +68,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter): if not self.femnodes_mesh: self.femnodes_mesh = self.femmesh.Nodes if not self.femelement_table: - self.femelement_table = FemMeshTools.get_femelement_table(self.femmesh) + self.femelement_table = meshtools.get_femelement_table(self.femmesh) self.element_count = len(self.femelement_table) self.set_z88_elparam() self.write_z88_mesh() @@ -193,7 +193,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter): def write_z88_elements_properties(self): element_properties_file_path = self.file_name + "elp.txt" elements_data = [] - if FemMeshTools.is_edge_femmesh(self.femmesh): + if meshtools.is_edge_femmesh(self.femmesh): if len(self.beamsection_objects) == 1: beam_obj = self.beamsection_objects[0]["Object"] width = beam_obj.RectWidth.getValueAs("mm") @@ -207,7 +207,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter): ) else: FreeCAD.Console.PrintError("Multiple beamsections for Z88 not yet supported!\n") - elif FemMeshTools.is_face_femmesh(self.femmesh): + elif meshtools.is_face_femmesh(self.femmesh): if len(self.shellthickness_objects) == 1: thick_obj = self.shellthickness_objects[0]["Object"] thickness = str(thick_obj.Thickness.getValueAs("mm")) @@ -218,7 +218,7 @@ class FemInputWriterZ88(FemInputWriter.FemInputWriter): FreeCAD.Console.PrintError( "Multiple thicknesses for Z88 not yet supported!\n" ) - elif FemMeshTools.is_solid_femmesh(self.femmesh): + elif meshtools.is_solid_femmesh(self.femmesh): elements_data.append("1 " + str(self.element_count) + " 0 0 0 0 0 0 0") else: FreeCAD.Console.PrintError("Error!\n")