FEM: in out modules, Replace print with Console.Print* calls

This commit is contained in:
Markus Hovorka
2019-09-23 21:16:51 +02:00
committed by Bernd Hahnebach
parent 80270c7bbf
commit a5843cc7fd
16 changed files with 199 additions and 180 deletions

View File

@@ -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.")
## @}

View File

@@ -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

View File

@@ -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,

View File

@@ -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)

View File

@@ -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

View File

@@ -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))

View File

@@ -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)
)

View File

@@ -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)

View File

@@ -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

View File

@@ -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}

View File

@@ -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": {},

View File

@@ -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,

View File

@@ -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",

View File

@@ -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")

View File

@@ -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")
## @}

View File

@@ -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: