From 3a993abfb47ffff9bb1c61900efb9a4f4ff45e97 Mon Sep 17 00:00:00 2001 From: Uwe Date: Sun, 17 Jul 2022 01:18: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 | 11 +++++++---- src/Mod/Fem/femsolver/z88/tasks.py | 4 +++- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Mod/Fem/femsolver/elmer/tasks.py b/src/Mod/Fem/femsolver/elmer/tasks.py index f57394d55c..51ecbb11b9 100644 --- a/src/Mod/Fem/femsolver/elmer/tasks.py +++ b/src/Mod/Fem/femsolver/elmer/tasks.py @@ -159,7 +159,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 d49b4821a1..214677eabc 100644 --- a/src/Mod/Fem/femsolver/settings.py +++ b/src/Mod/Fem/femsolver/settings.py @@ -87,14 +87,16 @@ 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: {} \n'.format(binary)) + if binary is not None: + FreeCAD.Console.PrintMessage('Solver binary path: {} \n'.format(binary)) return binary else: FreeCAD.Console.PrintError( @@ -236,7 +238,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_cores(self): diff --git a/src/Mod/Fem/femsolver/z88/tasks.py b/src/Mod/Fem/femsolver/z88/tasks.py index 0a0b15c4cc..6ba3fa968e 100644 --- a/src/Mod/Fem/femsolver/z88/tasks.py +++ b/src/Mod/Fem/femsolver/z88/tasks.py @@ -104,7 +104,9 @@ 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