From a7dbbd5f21de12790224b43788d4ed90e5d4bd1f Mon Sep 17 00:00:00 2001 From: Uwe Date: Sun, 17 Jul 2022 03:39:21 +0200 Subject: [PATCH] [FEM] fix Z88 binary handling - when the binary was not found, the function called the non-existing binary - also push error message for Elmer and Z88 to the status info so that user gets feedback also when report view console is not shown - uniform wording to 'binary' - avoid unnecessary console output --- src/Mod/Fem/femsolver/elmer/tasks.py | 3 ++- src/Mod/Fem/femsolver/settings.py | 15 +++++++++------ src/Mod/Fem/femsolver/z88/tasks.py | 7 +++++-- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/Mod/Fem/femsolver/elmer/tasks.py b/src/Mod/Fem/femsolver/elmer/tasks.py index 1eeb69acc1..b322782c2b 100644 --- a/src/Mod/Fem/femsolver/elmer/tasks.py +++ b/src/Mod/Fem/femsolver/elmer/tasks.py @@ -145,7 +145,8 @@ class Solve(run.Solve): if not self.aborted: self._updateOutput(output) else: - self.report.error("ElmerSolver executable not found.") + self.report.error("ElmerSolver binary not found.") + self.pushStatus("Error: ElmerSolver binary has not been found!") self.fail() def _updateOutput(self, output): diff --git a/src/Mod/Fem/femsolver/settings.py b/src/Mod/Fem/femsolver/settings.py index 36e43ec149..caeaf6f38f 100644 --- a/src/Mod/Fem/femsolver/settings.py +++ b/src/Mod/Fem/femsolver/settings.py @@ -87,16 +87,18 @@ def get_binary(name): Return the specific path set by the user in FreeCADs settings/parameter system if set or the default binary name if no specific path is set. If no path was found because the solver *name* is not supported ``None`` is - returned. This method does not check whether the binary actually exists - and is callable. + returned. + This method does not check whether the binary actually exists and is callable. + That check is done in DlgSettingsFem_Solver_Imp.cpp :param name: solver id as a ``str`` (see :mod:`femsolver.settings`) """ if name in _SOLVER_PARAM: binary = _SOLVER_PARAM[name].get_binary() - FreeCAD.Console.PrintMessage( - 'Solver binary path (returned from binary getter): {} \n' - .format(binary) + if binary is not None: + FreeCAD.Console.PrintMessage( + 'Solver binary path: {} \n'. + format(binary) ) return binary else: @@ -217,7 +219,8 @@ class _SolverDlg(object): "The binary has not been found. Full binary search path: {}\n" .format(binary) ) - FreeCAD.Console.PrintLog("Solver binary found path: {}\n".format(the_found_binary)) + else: + FreeCAD.Console.PrintLog("Found solver binary path: {}\n".format(the_found_binary)) return the_found_binary def get_write_comments(self): diff --git a/src/Mod/Fem/femsolver/z88/tasks.py b/src/Mod/Fem/femsolver/z88/tasks.py index d8de29977b..6ba3fa968e 100644 --- a/src/Mod/Fem/femsolver/z88/tasks.py +++ b/src/Mod/Fem/femsolver/z88/tasks.py @@ -45,6 +45,7 @@ from femtools import membertools SOLVER_TYPES = ["sorcg", "siccg", "choly"] + class Check(run.Check): def run(self): @@ -103,8 +104,10 @@ class Solve(run.Solve): self.pushStatus("Get solver binary...\n") binary = settings.get_binary("Z88") if binary is None: - self.fail() # a print has been made in settings module - + self.pushStatus("Error: The z88r binary has not been found!") + self.fail() + return + prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Z88") solver = SOLVER_TYPES solver = prefs.GetInt("Solver", 0)