From a5843cc7fdc27cfdfb0874794eadddf7ee1636a6 Mon Sep 17 00:00:00 2001 From: Markus Hovorka Date: Mon, 23 Sep 2019 21:16:51 +0200 Subject: [PATCH] FEM: in out modules, Replace print with Console.Print* calls --- src/Mod/Fem/feminout/convert2TetGen.py | 23 +++-- src/Mod/Fem/feminout/importCcxDatResults.py | 4 +- src/Mod/Fem/feminout/importCcxFrdResults.py | 18 ++-- src/Mod/Fem/feminout/importFenicsMesh.py | 13 +-- src/Mod/Fem/feminout/importInpMesh.py | 3 +- src/Mod/Fem/feminout/importToolsFem.py | 15 +-- src/Mod/Fem/feminout/importVTKResults.py | 13 +-- src/Mod/Fem/feminout/importYamlJsonMesh.py | 13 +-- src/Mod/Fem/feminout/importZ88Mesh.py | 85 ++++++++-------- src/Mod/Fem/feminout/importZ88O2Results.py | 8 +- src/Mod/Fem/feminout/readFenicsXDMF.py | 4 +- src/Mod/Fem/feminout/readFenicsXML.py | 32 +++--- src/Mod/Fem/feminout/writeFenicsXDMF.py | 24 +++-- src/Mod/Fem/feminout/writeFenicsXML.py | 13 +-- src/Mod/Fem/femmesh/gmshtools.py | 105 ++++++++++---------- src/Mod/Fem/femsolver/elmer/writer.py | 6 +- 16 files changed, 199 insertions(+), 180 deletions(-) diff --git a/src/Mod/Fem/feminout/convert2TetGen.py b/src/Mod/Fem/feminout/convert2TetGen.py index db4ab46aeb..c380f993af 100644 --- a/src/Mod/Fem/feminout/convert2TetGen.py +++ b/src/Mod/Fem/feminout/convert2TetGen.py @@ -32,18 +32,23 @@ __url__ = "http://www.freecadweb.org" # Make mesh of pn junction in TetGen format import FreeCAD +from FreeCAD import Console import Mesh + App = FreeCAD # shortcut if FreeCAD.GuiUp: import FreeCADGui Gui = FreeCADGui # shortcut +## \addtogroup FEM +# @{ + def exportMeshToTetGenPoly(meshToExport, filePath, beVerbose=1): """Export mesh to TetGen *.poly file format""" # ********** Part 1 - write node list to output file if beVerbose == 1: - FreeCAD.Console.PrintMessage("\nExport of mesh to TetGen file ...") + Console.PrintMessage("\nExport of mesh to TetGen file ...") (allVertices, allFacets) = meshToExport.Topology f = open(filePath, "w") f.write("# This file was generated from FreeCAD geometry\n") @@ -94,7 +99,7 @@ def exportMeshToTetGenPoly(meshToExport, filePath, beVerbose=1): EdgeKeys = EdgeFacets.keys() # disconnectedEdges = len(EdgeKeys) if beVerbose == 1: - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "\nBoundaryMarker:" + repr(BoundaryMarker) + " " + repr(len(EdgeFacets)) ) searchForPair = 1 @@ -146,7 +151,7 @@ def exportMeshToTetGenPoly(meshToExport, filePath, beVerbose=1): searchForPair = 0 # End of main loop if beVerbose == 1: - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "\nNew BoundaryMarker:" + repr(BoundaryMarker) + " " + repr(len(EdgeFacets)) ) @@ -185,7 +190,7 @@ def createMesh(): # ======================== Script beginning... ======================== beVerbose = 1 if beVerbose == 1: - FreeCAD.Console.PrintMessage("\n\n\n\n\n\n\n\nScript starts...") + Console.PrintMessage("\n\n\n\n\n\n\n\nScript starts...") # Geometry definition # Define objects names PyDocumentName = "pnJunction" @@ -199,7 +204,7 @@ def createMesh(): # Init objects if beVerbose == 1: - FreeCAD.Console.PrintMessage("\nInit Objects...") + Console.PrintMessage("\nInit Objects...") # closeDocument after restart of macro. Needs any ActiveDocument. # App.closeDocument(App.ActiveDocument.Label) AppPyDoc = App.newDocument(PyDocumentName) @@ -235,13 +240,13 @@ def createMesh(): ] if beVerbose == 1: if len(BoxList) != len(BoxMeshList): - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "\n ERROR! Input len() of BoxList and BoxMeshList is not the same! " ) # Set sizes in nanometers if beVerbose == 1: - FreeCAD.Console.PrintMessage("\nSet sizes...") + Console.PrintMessage("\nSet sizes...") tessellationTollerance = 0.05 ModelWidth = 300 BulkHeight = 300 @@ -303,7 +308,7 @@ def createMesh(): # Unite if beVerbose == 1: - FreeCAD.Console.PrintMessage("\nFuse objects...") + Console.PrintMessage("\nFuse objects...") fuseShape = BoxList[0].Shape for index in range(1, len(BoxList), 1): fuseShape = fuseShape.fuse(BoxList[index].Shape) @@ -342,6 +347,6 @@ def createMesh(): Gui.SendMsgToActiveView("ViewFit") if beVerbose == 1: - FreeCAD.Console.PrintMessage("\nScript finished without errors.") + Console.PrintMessage("\nScript finished without errors.") ## @} diff --git a/src/Mod/Fem/feminout/importCcxDatResults.py b/src/Mod/Fem/feminout/importCcxDatResults.py index 37f6e292f1..7c57fc5a41 100644 --- a/src/Mod/Fem/feminout/importCcxDatResults.py +++ b/src/Mod/Fem/feminout/importCcxDatResults.py @@ -29,6 +29,7 @@ __url__ = "http://www.freecadweb.org" # \brief FreeCAD Calculix DAT reader for FEM workbench import FreeCAD +from FreeCAD import Console import os @@ -71,7 +72,6 @@ def import_dat( Analysis=None ): r = readResult(filename) - # print("Results {}".format(r)) return r @@ -79,7 +79,7 @@ def import_dat( def readResult( dat_input ): - FreeCAD.Console.PrintMessage("Read ccx results from dat file: {}\n".format(dat_input)) + Console.PrintMessage("Read ccx results from dat file: {}\n".format(dat_input)) dat_file = pyopen(dat_input, "r") eigenvalue_output_section_found = False mode_reading = False diff --git a/src/Mod/Fem/feminout/importCcxFrdResults.py b/src/Mod/Fem/feminout/importCcxFrdResults.py index 2e182066bd..fc4a5cd4bf 100644 --- a/src/Mod/Fem/feminout/importCcxFrdResults.py +++ b/src/Mod/Fem/feminout/importCcxFrdResults.py @@ -31,6 +31,7 @@ __url__ = "http://www.freecadweb.org" # \brief FreeCAD Calculix FRD Reader for FEM workbench import FreeCAD +from FreeCAD import Console import os @@ -88,7 +89,7 @@ def importFrd( nodenumbers_for_compacted_mesh = [] number_of_increments = len(m["Results"]) - FreeCAD.Console.PrintLog( + Console.PrintLog( "Increments: " + str(number_of_increments) + "\n" ) if len(m["Results"]) > 0: @@ -175,7 +176,7 @@ def importFrd( "or if CalculiX returned no results because " "of nonpositive jacobian determinant in at least one element.\n" ) - FreeCAD.Console.PrintMessage(error_message) + Console.PrintMessage(error_message) if analysis: analysis_object.addObject(result_mesh_object) @@ -186,7 +187,7 @@ def importFrd( FreeCAD.ActiveDocument.recompute() else: - FreeCAD.Console.PrintError( + Console.PrintError( "Problem on frd file import. No nodes found in frd file.\n" ) return res_obj @@ -197,14 +198,14 @@ def importFrd( def read_frd_result( frd_input ): - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "Read ccx results from frd file: {}\n" .format(frd_input) ) inout_nodes = [] inout_nodes_file = frd_input.rsplit(".", 1)[0] + "_inout_nodes.txt" if os.path.exists(inout_nodes_file): - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "Read special 1DFlow nodes data form: {}\n".format(inout_nodes_file) ) f = pyopen(inout_nodes_file, "r") @@ -213,7 +214,7 @@ def read_frd_result( a = line.split(",") inout_nodes.append(a) f.close() - FreeCAD.Console.PrintMessage("{}\n".format(inout_nodes)) + Console.PrintMessage("{}\n".format(inout_nodes)) frd_file = pyopen(frd_input, "r") nodes = {} elements_hexa8 = {} @@ -370,7 +371,6 @@ def read_frd_result( nd8, nd5, nd6, nd7, nd4, nd1, nd2, nd3, nd20, nd17, nd18, nd19, nd12, nd9, nd10, nd11, nd16, nd13, nd14, nd15 ) - # print(elements_hexa20[elem]) elif elemType == 5 and input_continues is False: # first line # C3D15 Calculix --> penta15 FreeCAD @@ -719,11 +719,11 @@ def read_frd_result( if not inout_nodes: if results: if "mflow" in results[0] or "npressure" in results[0]: - FreeCAD.Console.PrintError( + Console.PrintError( "We have mflow or npressure, but no inout_nodes file.\n" ) if not nodes: - FreeCAD.Console.PrintError("FEM: No nodes found in Frd file.\n") + Console.PrintError("FEM: No nodes found in Frd file.\n") return { "Nodes": nodes, diff --git a/src/Mod/Fem/feminout/importFenicsMesh.py b/src/Mod/Fem/feminout/importFenicsMesh.py index c34bbb25b2..5f5a19b136 100644 --- a/src/Mod/Fem/feminout/importFenicsMesh.py +++ b/src/Mod/Fem/feminout/importFenicsMesh.py @@ -31,6 +31,7 @@ __url__ = "http://www.freecadweb.org" import os import FreeCAD +from FreeCAD import Console from . import importToolsFem from . import readFenicsXML from . import writeFenicsXML @@ -122,7 +123,7 @@ if FreeCAD.GuiUp: default_value = int(self.form.tableGroups.item(r, 3).text()) marked_value = int(self.form.tableGroups.item(r, 4).text()) except ValueError: - FreeCAD.Console.PrintError( + Console.PrintError( "ERROR: value conversion failed " "in table to dict: assuming 0 for default, " "1 for marked.\n" @@ -165,22 +166,22 @@ def export(objectslist, fileString, group_values_dict_nogui=None): of (marked_value (default=1), default_value (default=0)) """ if len(objectslist) != 1: - FreeCAD.Console.PrintError( + Console.PrintError( "This exporter can only export one object.\n") return obj = objectslist[0] if not obj.isDerivedFrom("Fem::FemMeshObject"): - FreeCAD.Console.PrintError("No FEM mesh object selected.\n") + Console.PrintError("No FEM mesh object selected.\n") return if fileString != "": fileName, fileExtension = os.path.splitext(fileString) if fileExtension.lower() == ".xml": - FreeCAD.Console.PrintWarning( + Console.PrintWarning( "XML is not designed to save higher order elements.\n") - FreeCAD.Console.PrintWarning( + Console.PrintWarning( "Reducing order for second order mesh.\n") - FreeCAD.Console.PrintWarning("Tri6 -> Tri3, Tet10 -> Tet4, etc.\n") + Console.PrintWarning("Tri6 -> Tri3, Tet10 -> Tet4, etc.\n") writeFenicsXML.write_fenics_mesh_xml(obj, fileString) elif fileExtension.lower() == ".xdmf": mesh_groups = importToolsFem.get_FemMeshObjectMeshGroups(obj) diff --git a/src/Mod/Fem/feminout/importInpMesh.py b/src/Mod/Fem/feminout/importInpMesh.py index c0dad0a730..a0792a518c 100644 --- a/src/Mod/Fem/feminout/importInpMesh.py +++ b/src/Mod/Fem/feminout/importInpMesh.py @@ -30,6 +30,7 @@ __date__ = "04/08/2016" # \brief FreeCAD INP file reader for FEM workbench import FreeCAD +from FreeCAD import Console import os @@ -211,7 +212,7 @@ def read_inp(file_name): elif line[:5].upper() == "*STEP": model_definition = False if error_seg3 is True: # to print "not supported" - FreeCAD.Console.PrintError("Error: seg3 (3-node beam element type) not supported, yet.\n") + Console.PrintError("Error: seg3 (3-node beam element type) not supported, yet.\n") f.close() # switch from the CalculiX node numbering to the FreeCAD node numbering diff --git a/src/Mod/Fem/feminout/importToolsFem.py b/src/Mod/Fem/feminout/importToolsFem.py index b16a74ec43..d5e8558707 100644 --- a/src/Mod/Fem/feminout/importToolsFem.py +++ b/src/Mod/Fem/feminout/importToolsFem.py @@ -29,6 +29,7 @@ __url__ = "http://www.freecadweb.org" # \brief FreeCAD FEM import tools import FreeCAD +from FreeCAD import Console def get_FemMeshObjectMeshGroups( @@ -69,7 +70,7 @@ def get_FemMeshObjectOrder( else: presumable_order = [el - 1 for el in edges_length_set] else: - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "Found no edges in mesh: Element order determination does not work without them.\n" ) @@ -212,7 +213,7 @@ def make_femmesh( for i in elms_seg3: e = elms_seg3[i] mesh.addEdge([e[0], e[1], e[2]], i) - FreeCAD.Console.PrintLog( + Console.PrintLog( "imported mesh: {} nodes, {} HEXA8, {} PENTA6, {} TETRA4, {} TETRA10, {} PENTA15" .format( len(nds), @@ -223,7 +224,7 @@ def make_femmesh( len(elms_penta15) ) ) - FreeCAD.Console.PrintLog( + Console.PrintLog( "imported mesh: {} HEXA20, {} TRIA3, {} TRIA6, {} QUAD4, {} QUAD8, {} SEG2, {} SEG3" .format( len(elms_hexa20), @@ -236,9 +237,9 @@ def make_femmesh( ) ) else: - FreeCAD.Console.PrintError("No Elements found!\n") + Console.PrintError("No Elements found!\n") else: - FreeCAD.Console.PrintError("No Nodes found!\n") + Console.PrintError("No Nodes found!\n") return mesh @@ -412,7 +413,7 @@ def fill_femresult_mechanical( if len(Peeq) > 0: if len(Peeq.values()) != len(disp.values()): # how is this possible? An example is needed! - FreeCAD.Console.PrintError("PEEQ seams to have exptra nodes.\n") + Console.PrintError("PEEQ seams to have exptra nodes.\n") Pe = [] Pe_extra_nodes = list(Peeq.values()) nodes = len(disp.values()) @@ -439,7 +440,7 @@ def fill_femresult_mechanical( nodes = len(disp.values()) for i in range(nodes): # how is this possible? An example is needed! - FreeCAD.Console.PrintError("Temperature seams to have exptra nodes.\n") + Console.PrintError("Temperature seams to have exptra nodes.\n") Temp_value = Temp_extra_nodes[i] Temp.append(Temp_value) res_obj.Temperature = list(map((lambda x: x), Temp)) diff --git a/src/Mod/Fem/feminout/importVTKResults.py b/src/Mod/Fem/feminout/importVTKResults.py index 0b9dab84b2..3a2a54d70e 100644 --- a/src/Mod/Fem/feminout/importVTKResults.py +++ b/src/Mod/Fem/feminout/importVTKResults.py @@ -32,6 +32,7 @@ __url__ = "http://www.freecadweb.org" import os import FreeCAD +from FreeCAD import Console import Fem @@ -71,26 +72,26 @@ def export( ): "called when freecad exports an object to vtk" if len(objectslist) > 1: # the case of no selected obj is caught by FreeCAD already - FreeCAD.Console.PrintError( + Console.PrintError( "This exporter can only export one object at once\n" ) return obj = objectslist[0] if obj.isDerivedFrom("Fem::FemPostPipeline"): - FreeCAD.Console.PrintError( - "Export of a VTK post object to vtk is not yet implemented !\n" + Console.PrintError( + "Export of a VTK post object to vtk is not yet implemented!\n" ) return elif obj.isDerivedFrom("Fem::FemMeshObject"): - FreeCAD.Console.PrintError( + Console.PrintError( "Use export to FEM mesh formats to export a FEM mesh object to vtk!\n" ) return elif obj.isDerivedFrom("Fem::FemResultObject"): Fem.writeResult(filename, obj) else: - FreeCAD.Console.PrintError( + Console.PrintError( "Selected object is not supported by export to VTK.\n" ) return @@ -119,7 +120,7 @@ def importVtk( # FreeCAD result object importVtkFCResult(filename, object_name) else: - FreeCAD.Console.PrintError( + Console.PrintError( "Error, wrong parameter in VTK import pref: {}\n" .format(object_type) ) diff --git a/src/Mod/Fem/feminout/importYamlJsonMesh.py b/src/Mod/Fem/feminout/importYamlJsonMesh.py index 2a95a7ab67..41252a0c58 100644 --- a/src/Mod/Fem/feminout/importYamlJsonMesh.py +++ b/src/Mod/Fem/feminout/importYamlJsonMesh.py @@ -32,13 +32,14 @@ import json import os import FreeCAD +from FreeCAD import Console from . import importToolsFem has_yaml = True try: import yaml except ImportError: - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "No YAML available (import yaml failure), " "yaml import/export won't work\n" ) @@ -88,13 +89,13 @@ def insert( def export(objectslist, fileString): "called when freecad exports a file" if len(objectslist) != 1: - FreeCAD.Console.PrintError( + Console.PrintError( "This exporter can only " "export one object.\n") return obj = objectslist[0] if not obj.isDerivedFrom("Fem::FemMeshObject"): - FreeCAD.Console.PrintError("No FEM mesh object selected.\n") + Console.PrintError("No FEM mesh object selected.\n") return write(fileString, obj.FemMesh) @@ -162,13 +163,13 @@ def read( raw_mesh_data = yaml.load(fp) fp.close() else: - FreeCAD.Console.PrintError( + Console.PrintError( "Unknown extension, " "please select other importer.\n") - FreeCAD.Console.PrintMessage("Converting indices to integer numbers ...") + Console.PrintMessage("Converting indices to integer numbers ...") mesh_data = convert_raw_data_to_mesh_data(raw_mesh_data) - FreeCAD.Console.PrintMessage("OK\n") + Console.PrintMessage("OK\n") return importToolsFem.make_femmesh(mesh_data) diff --git a/src/Mod/Fem/feminout/importZ88Mesh.py b/src/Mod/Fem/feminout/importZ88Mesh.py index fb5a0e306c..8f2803dd5a 100644 --- a/src/Mod/Fem/feminout/importZ88Mesh.py +++ b/src/Mod/Fem/feminout/importZ88Mesh.py @@ -31,6 +31,7 @@ __url__ = "http://www.freecadweb.org" import os import FreeCAD +from FreeCAD import Console # ************************************************************************************************ # ********* generic FreeCAD import and export methods ******************************************** @@ -78,11 +79,11 @@ def export( ): "called when freecad exports a file" if len(objectslist) != 1: - FreeCAD.Console.PrintError("This exporter can only export one object.\n") + Console.PrintError("This exporter can only export one object.\n") return obj = objectslist[0] if not obj.isDerivedFrom("Fem::FemMeshObject"): - FreeCAD.Console.PrintError("No FEM mesh object selected.\n") + Console.PrintError("No FEM mesh object selected.\n") return femnodes_mesh = obj.FemMesh.Nodes import femmesh.meshtools as FemMeshTools @@ -179,7 +180,7 @@ def read_z88_mesh( kflag = int(mesh_info[4]) # for non rotational elements ist --> kflag = 0 --> cartesian, kflag = 1 polar coordinates if kflag: - FreeCAD.Console.PrintError( + Console.PrintError( "KFLAG = 1, Rotational coordinates not supported at the moment\n" ) return {} @@ -188,15 +189,15 @@ def read_z88_mesh( elemts_first_line = nodes_last_line + 1 elements_last_line = elemts_first_line - 1 + elements_count * 2 - FreeCAD.Console.PrintLog(nodes_count) + Console.PrintLog(nodes_count) + Console.PrintLog("\n") + Console.PrintLog(elements_count) FreeCAD.Console.PrintLog("\n") - FreeCAD.Console.PrintLog(elements_count) - FreeCAD.Console.PrintLog("\n") - FreeCAD.Console.PrintLog(nodes_last_line) - FreeCAD.Console.PrintLog("\n") - FreeCAD.Console.PrintLog(elemts_first_line) - FreeCAD.Console.PrintLog("\n") - FreeCAD.Console.PrintLog(elements_last_line) + Console.PrintLog(nodes_last_line) + Console.PrintLog("\n") + Console.PrintLog(elemts_first_line) + Console.PrintLog("\n") + Console.PrintLog(elements_last_line) z88_mesh_file.seek(0) # go back to the beginning of the file for no, line in enumerate(z88_mesh_file): @@ -226,55 +227,55 @@ def read_z88_mesh( # not supported elements if z88_element_type == 8: # torus8 - FreeCAD.Console.PrintError( + Console.PrintError( "Z88 Element No. 8, torus8\n" ) - FreeCAD.Console.PrintError( + Console.PrintError( "Rotational elements are not supported at the moment\n" ) return {} elif z88_element_type == 12: # torus12 - FreeCAD.Console.PrintError( + Console.PrintError( "Z88 Element No. 12, torus12\n" ) - FreeCAD.Console.PrintError( + Console.PrintError( "Rotational elements are not supported at the moment\n" ) return {} elif z88_element_type == 15: # torus6 - FreeCAD.Console.PrintError( + Console.PrintError( "Z88 Element No. 15, torus6\n" ) - FreeCAD.Console.PrintError( + Console.PrintError( "Rotational elements are not supported at the moment\n" ) return {} elif z88_element_type == 19: # platte16 - FreeCAD.Console.PrintError( + Console.PrintError( "Z88 Element No. 19, platte16\n" ) - FreeCAD.Console.PrintError( + Console.PrintError( "Not supported at the moment\n" ) return {} elif z88_element_type == 21: # schale16, mixture made from hexa8 and hexa20 (thickness is linear) - FreeCAD.Console.PrintError( + Console.PrintError( "Z88 Element No. 21, schale16\n" ) - FreeCAD.Console.PrintError( + Console.PrintError( "Not supported at the moment\n" ) return {} elif z88_element_type == 22: # schale12, mixtrue made from prism6 and prism15 (thickness is linear) - FreeCAD.Console.PrintError( + Console.PrintError( "Z88 Element No. 22, schale12\n" ) - FreeCAD.Console.PrintError( + Console.PrintError( "Not supported at the moment\n" ) return {} @@ -392,13 +393,13 @@ def read_z88_mesh( # unknown elements # some examples have -1 for some teaching reasons to show some other stuff else: - FreeCAD.Console.PrintError("Unknown element\n") + Console.PrintError("Unknown element\n") return {} for n in nodes: - FreeCAD.Console.PrintLog(str(n) + " " + str(nodes[n]) + "\n") + Console.PrintLog(str(n) + " " + str(nodes[n]) + "\n") for e in elements_tria6: - FreeCAD.Console.PrintLog(str(e) + " " + str(elements_tria6[e]) + "\n") + Console.PrintLog(str(e) + " " + str(elements_tria6[e]) + "\n") FreeCAD.Console.PrintLog("\n") z88_mesh_file.close() @@ -429,7 +430,7 @@ def write( fem_mesh: a FemMesh""" if not fem_mesh.isDerivedFrom("Fem::FemMesh"): - FreeCAD.Console.PrintError("Not a FemMesh was given as parameter.\n") + Console.PrintError("Not a FemMesh was given as parameter.\n") return femnodes_mesh = fem_mesh.Nodes import femmesh.meshtools as FemMeshTools @@ -461,7 +462,7 @@ def write_z88_mesh_to_file( ): node_dof = 6 # schalenelemente else: - FreeCAD.Console.PrintError("Error: wrong z88_element_type.\n") + Console.PrintError("Error: wrong z88_element_type.\n") return node_count = len(femnodes_mesh) element_count = len(femelement_table) @@ -545,7 +546,7 @@ def write_z88_mesh_to_file( ) ) else: - FreeCAD.Console.PrintError( + Console.PrintError( "Writing of Z88 elementtype {0} not supported.\n".format(z88_element_type) ) # TODO support schale12 (made from prism15) and schale16 (made from hexa20) @@ -559,14 +560,14 @@ def get_z88_element_type( ): import femmesh.meshtools as FemMeshTools if not femmesh: - FreeCAD.Console.PrintMessage("Error: No femmesh!\n") + Console.PrintError("Error: No femmesh!") if not femelement_table: - FreeCAD.Console.PrintMessage("We need to get the femelement_table first!\n") + Console.PrintError("We need to get the femelement_table first!") femelement_table = FemMeshTools.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]) - FreeCAD.Console.PrintLog("node count of first element: " + str(elem_length) + "\n") + Console.PrintLog("node count of first element: " + str(elem_length) + "\n") break # break after the first elem if FemMeshTools.is_solid_femmesh(femmesh): if femmesh.TetraCount == femmesh.VolumeCount: @@ -575,43 +576,43 @@ def get_z88_element_type( elif elem_length == 10: return 16 else: - FreeCAD.Console.PrintMessage("Tetra with neither 4 nor 10 nodes.\n") + Console.PrintMessage("Tetra with neither 4 nor 10 nodes.\n") elif femmesh.HexaCount == femmesh.VolumeCount: if elem_length == 8: return 1 elif elem_length == 20: return 10 else: - FreeCAD.Console.PrintMessage("Hexa with neither 8 nor 20 nodes.\n") + Console.PrintError("Hexa with neither 8 nor 20 nodes.\n") return 0 else: - FreeCAD.Console.PrintMessage("no tetra, no hexa or Mixed Volume Elements.\n") + Console.PrintError("no tetra, no hexa or Mixed Volume Elements.\n") elif FemMeshTools.is_face_femmesh(femmesh): if femmesh.TriangleCount == femmesh.FaceCount: if elem_length == 3: - FreeCAD.Console.PrintMessage("tria3mesh, not supported by Z88.\n") + Console.PrintError("tria3mesh, not supported by Z88.\n") return 0 elif elem_length == 6: return 24 else: - FreeCAD.Console.PrintMessage("Tria with neither 3 nor 6 nodes.\n") + Console.PrintError("Tria with neither 3 nor 6 nodes.\n") return 0 elif femmesh.QuadrangleCount == femmesh.FaceCount: if elem_length == 4: - FreeCAD.Console.PrintMessage("quad4mesh, not supported by Z88.\n") + Console.PrintError("quad4mesh, not supported by Z88.\n") return 0 elif elem_length == 8: return 23 else: - FreeCAD.Console.PrintMessage("Quad with neither 4 nor 8 nodes.\n") + Console.PrintError("Quad with neither 4 nor 8 nodes.\n") return 0 else: - FreeCAD.Console.PrintMessage("no tria, no quad\n") + Console.PrintError("no tria, no quad\n") return 0 elif FemMeshTools.is_edge_femmesh(femmesh): - FreeCAD.Console.PrintMessage("Edge femmesh will be exported as 3D truss element nr 4.\n") + Console.PrintMessage("Edge femmesh will be exported as 3D truss element nr 4.\n") return 4 else: - FreeCAD.Console.PrintMessage("Neither edge nor face nor solid femmesh.\n") + Console.PrintError("Neither edge nor face nor solid femmesh.\n") return 0 return 0 diff --git a/src/Mod/Fem/feminout/importZ88O2Results.py b/src/Mod/Fem/feminout/importZ88O2Results.py index e1d9662b22..8b597dc153 100644 --- a/src/Mod/Fem/feminout/importZ88O2Results.py +++ b/src/Mod/Fem/feminout/importZ88O2Results.py @@ -29,6 +29,7 @@ __url__ = "http://www.freecadweb.org" # \brief FreeCAD Z88 Disp Reader for FEM workbench import FreeCAD +from FreeCAD import Console import os @@ -99,7 +100,7 @@ def import_z88_disp( ) result_mesh_object.FemMesh = femmesh else: - FreeCAD.Console.PrintError("Z88 mesh file z88i1.txt not found!") + Console.PrintError("Z88 mesh file z88i1.txt not found!") # create result obj for result_set in disp_read["Results"]: @@ -118,7 +119,7 @@ def import_z88_disp( FreeCAD.ActiveDocument.recompute() else: - FreeCAD.Console.PrintError( + Console.PrintError( "Problem on Z88 result file import. No nodes found in Z88 result file.\n" ) return res_obj @@ -145,7 +146,6 @@ def read_z88_disp( if lno >= 6: # disp line - # print(linelist) node_no = int(linelist[0]) mode_disp_x = float(linelist[1]) mode_disp_y = float(linelist[2]) @@ -160,7 +160,7 @@ def read_z88_disp( results.append(mode_results) for r in results[0]["disp"]: - FreeCAD.Console.PrintLog("{} --> {}\n".format(r, results[0]["disp"][r])) + Console.PrintLog("{} --> {}\n".format(r, results[0]["disp"][r])) z88_disp_file.close() return {"Nodes": nodes, "Results": results} diff --git a/src/Mod/Fem/feminout/readFenicsXDMF.py b/src/Mod/Fem/feminout/readFenicsXDMF.py index 3cc59311bb..4a6ed32517 100644 --- a/src/Mod/Fem/feminout/readFenicsXDMF.py +++ b/src/Mod/Fem/feminout/readFenicsXDMF.py @@ -28,12 +28,12 @@ __url__ = "http://www.freecadweb.org" # \ingroup FEM # \brief FreeCAD Fenics Mesh XDMF reader for FEM workbench -import FreeCAD +from FreeCAD import Console def read_fenics_mesh_xdmf(xdmffilename): - FreeCAD.Console.PrintMessage("Not operational, yet\n") + Console.PrintMessage("Not operational, yet\n") return { "Nodes": {}, diff --git a/src/Mod/Fem/feminout/readFenicsXML.py b/src/Mod/Fem/feminout/readFenicsXML.py index 9afa651086..3db4ed21c2 100644 --- a/src/Mod/Fem/feminout/readFenicsXML.py +++ b/src/Mod/Fem/feminout/readFenicsXML.py @@ -19,7 +19,6 @@ # * USA * # * * # *************************************************************************** -from __future__ import print_function __title__ = "FreeCAD Fenics XML mesh reader" __author__ = "Johannes Hartung" @@ -31,6 +30,7 @@ __url__ = "http://www.freecadweb.org" import FreeCAD +from FreeCAD import Console from xml.etree import ElementTree as ET import itertools @@ -58,8 +58,8 @@ def read_fenics_mesh_xml(xmlfilename): vertex_size = 0 - print("Mesh dimension: %d" % (dim,)) - print("Mesh cell type: %s" % (cell_type,)) + Console.PrintLog("Mesh dimension: %d\n" % (dim,)) + Console.PrintLog("Mesh cell type: %s\n" % (cell_type,)) # every cell type contains a dict with key=dimension and value=number @@ -77,10 +77,10 @@ def read_fenics_mesh_xml(xmlfilename): cell_dict = {} if find_vertices is None: - print("No vertices found!") + Console.PrintWarning("No vertices found!\n") else: vertex_size = int(find_vertices.attrib.get("size")) - print("Reading %d vertices" % (vertex_size,)) + Console.PrintLog("Reading %d vertices\n" % (vertex_size,)) for vertex in find_vertices: ind = int(vertex.get("index")) @@ -94,18 +94,18 @@ def read_fenics_mesh_xml(xmlfilename): # increase node index by one, since fenics starts at 0, FreeCAD at 1 # print("%d %f %f %f" % (ind, node_x, node_y, node_z)) else: - print("found strange vertex tag: %s" % (vertex.tag,)) + Console.PrintWarning("found strange vertex tag: %s\n" % (vertex.tag,)) if find_cells is None: - print("No cells found!") + Console.PrintWarning("No cells found!\n") else: - print("Reading %d cells" % (int(find_cells.attrib.get("size")),)) + Console.PrintLog("Reading %d cells\n" % (int(find_cells.attrib.get("size")),)) for cell in find_cells: ind = int(cell.get("index")) if cell.tag.lower() != cell_type.lower(): - print( - "Strange mismatch between cell type {} and cell tag {}" + Console.PrintWarning( + "Strange mismatch between cell type {} and cell tag {}\n" .format(cell_type, cell.tag.lower()) ) num_vertices = cells_parts_dim[cell_type][0] @@ -232,23 +232,23 @@ def read_fenics_mesh_xml(xmlfilename): root = tree.getroot() if root.tag.lower() != "dolfin": - print("Strange root tag, should be dolfin!") + Console.PrintWarning("Strange root tag, should be dolfin!\n") find_mesh = root.find("mesh") if find_mesh is not None: # these are consistency checks of the XML structure - print("Mesh found") + Console.PrintMessage("Mesh found\n") (nodes, cells_dict, cell_type, dim) = read_mesh_block(find_mesh) element_dict = generate_lower_dimensional_structures(nodes, cells_dict, cell_type, dim) - print("Show min max element dict") + Console.PrintMessage("Show min max element dict") for (elm, numbers) in list(element_dict.items()): lst = sorted(list(numbers.items()), key=lambda x: x[0]) if lst != []: - print(elm, " min: ", lst[0], " max: ", lst[-1]) + Console.PrintWarning(elm, " min: ", lst[0], " max: ", lst[-1], "\n") else: - print("No mesh found") + Console.PrintError("No mesh found") if root.find("data") is not None: - print("Internal mesh data found") + Console.PrintLog("Internal mesh data found\n") return { "Nodes": nodes, diff --git a/src/Mod/Fem/feminout/writeFenicsXDMF.py b/src/Mod/Fem/feminout/writeFenicsXDMF.py index ce59c2ddb5..db8099eb0b 100644 --- a/src/Mod/Fem/feminout/writeFenicsXDMF.py +++ b/src/Mod/Fem/feminout/writeFenicsXDMF.py @@ -28,6 +28,7 @@ __url__ = "http://www.freecadweb.org" # \ingroup FEM # \brief FreeCAD Fenics Mesh XDMF writer for FEM workbench +from FreeCAD import Console from .importToolsFem import \ get_FemMeshObjectDimension,\ get_FemMeshObjectElementTypes,\ @@ -168,7 +169,10 @@ def write_fenics_mesh_codim_xdmf( fc_topo = fem_mesh_obj.FemMesh.Nodes else: fc_topo = [] - print("Dimension of mesh incompatible with export XDMF function: %d" % (dim_topo,)) + Console.PrintError( + "Dimension of mesh incompatible with export XDMF function: %d\n" + % (dim_topo,) + ) nodeindices = [( nodes_dict[ind] for ind in fem_mesh_obj.FemMesh.getElementNodes(fc_topo_ind) @@ -271,16 +275,16 @@ def write_fenics_mesh_xdmf( "Prism": "unknown", "Pyramid": "unknown", } - print("Converting " + fem_mesh_obj.Label + " to fenics XDMF File") - print("Dimension of mesh: %d" % (get_FemMeshObjectDimension(fem_mesh_obj),)) + Console.PrintMessage("Converting " + fem_mesh_obj.Label + " to fenics XDMF File\n") + Console.PrintMessage("Dimension of mesh: %d\n" % (get_FemMeshObjectDimension(fem_mesh_obj),)) elements_in_mesh = get_FemMeshObjectElementTypes(fem_mesh_obj) - print("Elements appearing in mesh: %s" % (str(elements_in_mesh),)) + Console.PrintMessage("Elements appearing in mesh: %s\n" % (str(elements_in_mesh),)) celltype_in_mesh = get_MaxDimElementFromList(elements_in_mesh) (num_cells, cellname_fc, dim_cell) = celltype_in_mesh cellname_fenics = FreeCAD_to_Fenics_dict[cellname_fc] - print( - "Celltype in mesh -> {} and its Fenics dolfin name: {}" + Console.PrintMessage( + "Celltype in mesh -> {} and its Fenics dolfin name: {}\n" .format(celltype_in_mesh, cellname_fenics) ) @@ -313,15 +317,17 @@ def write_fenics_mesh_xdmf( gmshgroups = get_FemMeshObjectMeshGroups(fem_mesh_obj) if gmshgroups is not (): - print("found mesh groups") + Console.PrintMessage("found mesh groups\n") for g in gmshgroups: mesh_function_type = fem_mesh.getGroupElementType(g) mesh_function_codim = dim_cell - FreeCAD_Group_Dimensions[mesh_function_type] mesh_function_name = fem_mesh.getGroupName(g) - print("group id: %d (label: %s) with element type %s and codim %d" - % (g, mesh_function_name, mesh_function_type, mesh_function_codim)) + Console.PrintMessage( + "group id: %d (label: %s) with element type %s and codim %d\n" + % (g, mesh_function_name, mesh_function_type, mesh_function_codim) + ) mesh_function_grid = ET.SubElement( domain, "Grid", diff --git a/src/Mod/Fem/feminout/writeFenicsXML.py b/src/Mod/Fem/feminout/writeFenicsXML.py index ea5c7940d1..920d45aa0f 100644 --- a/src/Mod/Fem/feminout/writeFenicsXML.py +++ b/src/Mod/Fem/feminout/writeFenicsXML.py @@ -19,7 +19,6 @@ # * USA * # * * # *************************************************************************** -from __future__ import print_function __title__ = "FreeCAD Fenics XML mesh writer" __author__ = "Johannes Hartung" @@ -30,6 +29,7 @@ __url__ = "http://www.freecadweb.org" # \brief FreeCAD Fenics Mesh XML writer for FEM workbench +from FreeCAD import Console from .importToolsFem import get_FemMeshObjectDimension from .importToolsFem import get_FemMeshObjectElementTypes from .importToolsFem import get_MaxDimElementFromList @@ -68,17 +68,18 @@ def write_fenics_mesh_xml(fem_mesh_obj, outputfile): "hexahedron": 8 } - print("Converting " + fem_mesh_obj.Label + " to fenics XML File") - print("Dimension of mesh: %d" % (get_FemMeshObjectDimension(fem_mesh_obj),)) + Console.Message("Converting " + fem_mesh_obj.Label + " to fenics XML File\n") + Console.Message("Dimension of mesh: %d\n" % (get_FemMeshObjectDimension(fem_mesh_obj),)) elements_in_mesh = get_FemMeshObjectElementTypes(fem_mesh_obj) - print("Elements appearing in mesh: %s" % (str(elements_in_mesh),)) + Console.Message("Elements appearing in mesh: %s" % (str(elements_in_mesh),)) celltype_in_mesh = get_MaxDimElementFromList(elements_in_mesh) (num_cells, cellname_fc, dim_cell) = celltype_in_mesh cellname_fenics = FreeCAD_to_Fenics_dict[cellname_fc] num_verts_cell = XML_Number_of_Nodes_dict[cellname_fenics] - print( - "Celltype in mesh -> %s and its Fenics name: %s" % (str(celltype_in_mesh), cellname_fenics) + Console.Message( + "Celltype in mesh -> %s and its Fenics name: %s\n" + % (str(celltype_in_mesh), cellname_fenics) ) root = ET.Element("dolfin", dolfin="http://fenicsproject.org") diff --git a/src/Mod/Fem/femmesh/gmshtools.py b/src/Mod/Fem/femmesh/gmshtools.py index 70e039e765..54ebc6e231 100644 --- a/src/Mod/Fem/femmesh/gmshtools.py +++ b/src/Mod/Fem/femmesh/gmshtools.py @@ -31,6 +31,7 @@ import sys import subprocess import FreeCAD +from FreeCAD import Console import Fem from FreeCAD import Units from . import meshtools @@ -73,7 +74,7 @@ class GmshTools(): elif self.order == "2nd": self.order = "2" else: - print("Error in order") + Console.PrintError("Error in order\n") # dimension self.dimension = self.mesh_obj.ElementDimension @@ -160,15 +161,15 @@ class GmshTools(): return error def start_logs(self): - print("\nGmsh FEM mesh run is being started.") - print(" Part to mesh: Name --> {}, Label --> {}, ShapeType --> {}".format( + Console.PrintLog("\nGmsh FEM mesh run is being started.\n") + Console.PrintLog(" Part to mesh: Name --> {}, Label --> {}, ShapeType --> {}\n".format( self.part_obj.Name, self.part_obj.Label, self.part_obj.Shape.ShapeType )) - print(" CharacteristicLengthMax: {}".format(self.clmax)) - print(" CharacteristicLengthMin: {}".format(self.clmin)) - print(" ElementOrder: {}".format(self.order)) + Console.PrintLog(" CharacteristicLengthMax: {}\n".format(self.clmax)) + Console.PrintLog(" CharacteristicLengthMin: {}\n".format(self.clmin)) + Console.PrintLog(" ElementOrder: {}\n".format(self.order)) def get_dimension(self): # Dimension @@ -188,18 +189,18 @@ class GmshTools(): self.dimension = "1" elif shty == "Vertex": # print("Found: " + shty) - FreeCAD.Console.PrintError("You can not mesh a Vertex.\n") + Console.PrintError("You can not mesh a Vertex.\n") self.dimension = "0" elif shty == "Compound": # print(" Found a " + shty) - FreeCAD.Console.PrintLog( + Console.PrintLog( " Found a Compound. Since it could contain" "any kind of shape dimension 3 is used.\n" ) self.dimension = "3" # dimension 3 works for 2D and 1d shapes as well else: self.dimension = "0" - FreeCAD.Console.PrintError( + Console.PrintError( "Could not retrieve Dimension from shape type. Please choose dimension." ) elif self.dimension == "3D": @@ -209,8 +210,8 @@ class GmshTools(): elif self.dimension == "1D": self.dimension = "1" else: - print("Error in dimension") - print(" ElementDimension: " + self.dimension) + Console.PrintError("Error in dimension\n") + Console.PrintMessage(" ElementDimension: " + self.dimension + "\n") def get_tmp_file_paths(self, param_working_dir=None, create=False): self.working_dir = "" @@ -219,7 +220,7 @@ class GmshTools(): self.working_dir = param_working_dir if femutils.check_working_dir(self.working_dir) is not True: if create is True: - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "Dir given as parameter \'{}\' doesn't exist, " "but parameter to create it is set to True. " "Dir will be created.\n".format(self.working_dir) @@ -227,13 +228,13 @@ class GmshTools(): from os import mkdir mkdir(param_working_dir) else: - FreeCAD.Console.PrintError( + Console.PrintError( "Dir given as parameter \'{}\' doesn't exist " "and create parameter is set to False.\n" .format(self.working_dir) ) self.working_dir = femutils.get_pref_working_dir(self.mesh_obj) - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "Dir \'{}\' will be used instead.\n" .format(self.working_dir) ) @@ -242,12 +243,12 @@ class GmshTools(): # check working_dir exist, if not use a tmp dir and inform the user if femutils.check_working_dir(self.working_dir) is not True: - FreeCAD.Console.PrintError( + Console.PrintError( "Dir \'{}\' doesn't exist or cannot be created.\n" .format(self.working_dir) ) self.working_dir = femutils.get_temp_dir(self.mesh_obj) - FreeCAD.Console.PrintMessage( + Console.PrintMessage( "Dir \'{}\' will be used instead.\n" .format(self.working_dir) ) @@ -259,9 +260,9 @@ class GmshTools(): self.temp_file_geometry = join(self.working_dir, _geometry_name + ".brep") # geometry file self.temp_file_mesh = join(self.working_dir, self.mesh_name + ".unv") # mesh file self.temp_file_geo = join(self.working_dir, "shape2mesh.geo") # Gmsh input file - print(" " + self.temp_file_geometry) - print(" " + self.temp_file_mesh) - print(" " + self.temp_file_geo) + Console.PrintMessage(" " + self.temp_file_geometry + "\n") + Console.PrintMessage(" " + self.temp_file_mesh + "\n") + Console.PrintMessage(" " + self.temp_file_geo + "\n") def get_gmsh_command(self): from platform import system @@ -288,7 +289,7 @@ class GmshTools(): "Please install Gmsh or set path to binary " "in FEM preferences tab Gmsh.\n" ) - FreeCAD.Console.PrintError(error_message) + Console.PrintError(error_message) raise Exception(error_message) self.gmsh_bin = gmsh_path else: @@ -296,7 +297,7 @@ class GmshTools(): "No standard location implemented for your operating system. " "Set GMHS binary path in FEM preferences.\n" ) - FreeCAD.Console.PrintError(error_message) + Console.PrintError(error_message) raise Exception(error_message) else: if not self.gmsh_bin: @@ -310,7 +311,7 @@ class GmshTools(): self.gmsh_bin = FreeCAD.getHomePath() + "bin/gmsh.exe" else: self.gmsh_bin = "gmsh" - print(" " + self.gmsh_bin) + Console.PrintMessage(" " + self.gmsh_bin + "\n") def get_group_data(self): # TODO: solids, faces, edges and vertexes don't seem to work together in one group, @@ -321,21 +322,21 @@ class GmshTools(): # print(" No mesh group objects.") pass else: - print(" Mesh group objects, we need to get the elements.") + Console.PrintMessage(" Mesh group objects, we need to get the elements.\n") for mg in self.mesh_obj.MeshGroupList: new_group_elements = meshtools.get_mesh_group_elements(mg, self.part_obj) for ge in new_group_elements: if ge not in self.group_elements: self.group_elements[ge] = new_group_elements[ge] else: - FreeCAD.Console.PrintError(" A group with this name exists already.\n") + Console.PrintError(" A group with this name exists already.\n") # group meshing for analysis analysis_group_meshing = FreeCAD.ParamGet( "User parameter:BaseApp/Preferences/Mod/Fem/General" ).GetBool("AnalysisGroupMeshing", False) if self.analysis and analysis_group_meshing: - print(" Group meshing for analysis.") + Console.PrintMessage(" Group meshing for analysis.\n") self.group_nodes_export = True new_group_elements = meshtools.get_analysis_group_elements( self.analysis, @@ -345,12 +346,12 @@ class GmshTools(): if ge not in self.group_elements: self.group_elements[ge] = new_group_elements[ge] else: - FreeCAD.Console.PrintError(" A group with this name exists already.\n") + Console.PrintError(" A group with this name exists already.\n") else: - print(" No Group meshing for analysis.") + Console.PrintMessage(" No Group meshing for analysis.\n") if self.group_elements: - print(" {}".format(self.group_elements)) + Console.PrintMessage(" {}\n".format(self.group_elements)) def get_region_data(self): # mesh regions @@ -358,7 +359,7 @@ class GmshTools(): # print(" No mesh regions.") pass else: - print(" Mesh regions, we need to get the elements.") + Console.PrintMessage(' Mesh regions, we need to get the elements.\n') # by the use of MeshRegion object and a BooleanSplitCompound # there could be problems with node numbers see # http://forum.freecadweb.org/viewtopic.php?f=18&t=18780&start=40#p149467 @@ -377,7 +378,7 @@ class GmshTools(): "It is strongly recommended to extract the shape to mesh " "from the Compound and use this one." ) - FreeCAD.Console.PrintError(error_message + "\n") + Console.PrintError(error_message + "\n") # TODO: no gui popup because FreeCAD will be in a endless output loop # as long as the pop up is on --> maybe find a better solution for # either of both --> thus the pop up is in task panel @@ -394,7 +395,7 @@ class GmshTools(): # if not try to find the element in the shape to mesh search_ele_in_shape_to_mesh = False if not self.part_obj.Shape.isSame(sub[0].Shape): - FreeCAD.Console.PrintLog( + Console.PrintLog( " One element of the meshregion {} is " "not an element of the Part to mesh.\n" "But we are going to try to find it in " @@ -416,7 +417,7 @@ class GmshTools(): if found_element: elems = found_element else: - FreeCAD.Console.PrintError( + Console.PrintError( "One element of the meshregion {} could not be found " "in the Part to mesh. It will be ignored.\n" .format(mr_obj.Name) @@ -427,19 +428,19 @@ class GmshTools(): mr_obj.CharacteristicLength ).Value else: - FreeCAD.Console.PrintError( + Console.PrintError( "The element {} of the meshregion {} has " "been added to another mesh region.\n" .format(elems, mr_obj.Name) ) else: - FreeCAD.Console.PrintError( + Console.PrintError( "The meshregion: {} is not used to create the mesh " "because the reference list is empty.\n" .format(mr_obj.Name) ) else: - FreeCAD.Console.PrintError( + Console.PrintError( "The meshregion: {} is not used to create the " "mesh because the CharacteristicLength is 0.0 mm.\n" .format(mr_obj.Name) @@ -449,8 +450,8 @@ class GmshTools(): ele_shape = meshtools.get_element(self.part_obj, eleml) ele_vertexes = meshtools.get_vertexes_by_element(self.part_obj.Shape, ele_shape) self.ele_node_map[eleml] = ele_vertexes - print(" {}".format(self.ele_length_map)) - print(" {}".format(self.ele_node_map)) + Console.PrintMessage(" {}\n".format(self.ele_length_map)) + Console.PrintMessage(" {}\n".format(self.ele_node_map)) def get_boundary_layer_data(self): # mesh boundary layer @@ -462,7 +463,7 @@ class GmshTools(): # print(" No mesh boundary layer setting document object.") pass else: - print(" Mesh boundary layers, we need to get the elements.") + Console.PrintMessage(" Mesh boundary layers, we need to get the elements.\n") if self.part_obj.Shape.ShapeType == "Compound": # see http://forum.freecadweb.org/viewtopic.php?f=18&t=18780&start=40#p149467 and # http://forum.freecadweb.org/viewtopic.php?f=18&t=18780&p=149520#p149520 @@ -471,7 +472,7 @@ class GmshTools(): "It is strongly recommended to extract the shape to mesh " "from the Compound and use this one." ) - FreeCAD.Console.PrintError(err + "\n") + Console.PrintError(err + "\n") for mr_obj in self.mesh_obj.MeshBoundaryLayerList: if mr_obj.MinimumThickness and Units.Quantity(mr_obj.MinimumThickness).Value > 0: if mr_obj.References: @@ -483,7 +484,7 @@ class GmshTools(): # if not try to find the element in the shape to mesh search_ele_in_shape_to_mesh = False if not self.part_obj.Shape.isSame(sub[0].Shape): - FreeCAD.Console.PrintLog( + Console.PrintLog( " One element of the mesh boundary layer {} is " "not an element of the Part to mesh.\n" "But we are going to try to find it in " @@ -505,7 +506,7 @@ class GmshTools(): if found_element: # also elems = found_element else: - FreeCAD.Console.PrintError( + Console.PrintError( "One element of the mesh boundary layer {} could " "not be found in the Part to mesh. " "It will be ignored.\n" @@ -518,7 +519,7 @@ class GmshTools(): belem_list.append(elems) self.bl_boundary_list.append(elems) else: - FreeCAD.Console.PrintError( + Console.PrintError( "The element {} of the mesh boundary " "layer {} has been added " "to another mesh boundary layer.\n" @@ -550,23 +551,23 @@ class GmshTools(): elif self.dimension == "3": setting["FacesList"] = belem_list else: - FreeCAD.Console.PrintError( + Console.PrintError( "boundary layer is only supported for 2D and 3D mesh" ) self.bl_setting_list.append(setting) else: - FreeCAD.Console.PrintError( + Console.PrintError( "The mesh boundary layer: {} is not used to create " "the mesh because the reference list is empty.\n" .format(mr_obj.Name) ) else: - FreeCAD.Console.PrintError( + Console.PrintError( "The mesh boundary layer: {} is not used to create " "the mesh because the min thickness is 0.0 mm.\n" .format(mr_obj.Name) ) - print(" {}".format(self.bl_setting_list)) + Console.PrintMessage(" {}\n".format(self.bl_setting_list)) def write_groups(self, geo): if self.group_elements: @@ -612,7 +613,7 @@ class GmshTools(): # currently single body is supported if len(self.bl_setting_list): geo.write("// boundary layer setting\n") - print(" Start to write boundary layer setup") + Console.PrintMessage(" Start to write boundary layer setup\n") field_number = 1 for item in self.bl_setting_list: prefix = "Field[" + str(field_number) + "]" @@ -629,13 +630,13 @@ class GmshTools(): else: line = prefix + "." + str(k) + " = " + str(v) + ";\n" geo.write(line) - print(line) + Console.PrintMessage("{}\n".format(line)) geo.write("BoundaryLayer Field = " + str(field_number) + ";\n") geo.write("// end of this boundary layer setup \n") field_number += 1 geo.write("\n") geo.flush() - print(" finished in boundary layer setup") + Console.PrintMessage(" finished in boundary layer setup\n") else: # print(" no boundary layer setup is found for this mesh") geo.write("// no boundary layer settings for this mesh\n") @@ -811,7 +812,7 @@ class GmshTools(): # print(error) except: error = "Error executing: {}\n".format(" ".join(comandlist)) - FreeCAD.Console.PrintError(error) + Console.PrintError(error) self.error = True return error @@ -819,9 +820,9 @@ class GmshTools(): if not self.error: fem_mesh = Fem.read(self.temp_file_mesh) self.mesh_obj.FemMesh = fem_mesh - FreeCAD.Console.PrintMessage(" The Part should have a pretty new FEM mesh!\n") + Console.PrintMessage(" The Part should have a pretty new FEM mesh!\n") else: - FreeCAD.Console.PrintError("No mesh was created.\n") + Console.PrintError("No mesh was created.\n") ## @} diff --git a/src/Mod/Fem/femsolver/elmer/writer.py b/src/Mod/Fem/femsolver/elmer/writer.py index 469300496e..e02537056c 100644 --- a/src/Mod/Fem/femsolver/elmer/writer.py +++ b/src/Mod/Fem/femsolver/elmer/writer.py @@ -31,8 +31,8 @@ import os.path import subprocess import tempfile -import FreeCAD from FreeCAD import Units +from FreeCAD import Console import Fem import femtools.femutils as femutils import femmesh.gmshtools as gmshtools @@ -125,7 +125,7 @@ class Writer(object): groups.extend(self._builder.getBoundaryNames()) self._exportToUnv(groups, mesh, unvPath) if self.testmode: - FreeCAD.Console.PrintMessage("We are in testmode ElmerGrid may not be installed.\n") + Console.PrintMessage("We are in testmode ElmerGrid may not be installed.\n") else: binary = settings.get_binary("ElmerGrid") if binary is None: @@ -165,7 +165,7 @@ class Writer(object): tools.write_part_file() tools.write_geo() if self.testmode: - FreeCAD.Console.PrintMessage("We are in testmode, Gmsh may not be installed.\n") + Console.PrintMessage("We are in testmode, Gmsh may not be installed.\n") import shutil shutil.copyfile(geoPath, os.path.join(self.directory, "group_mesh.geo")) else: