diff --git a/src/Mod/Fem/FemTools.py b/src/Mod/Fem/FemTools.py index 45bc2ac6e..58c4821d5 100644 --- a/src/Mod/Fem/FemTools.py +++ b/src/Mod/Fem/FemTools.py @@ -246,6 +246,8 @@ class FemTools(QtCore.QRunnable, QtCore.QObject): import multiprocessing import os import subprocess + self.ccx_stdout = "" + self.ccx_stderr = "" if self.inp_file_name != "" and self.ccx_binary_present: ont_backup = os.environ.get('OMP_NUM_THREADS') if not ont_backup: @@ -342,8 +344,13 @@ class FemTools(QtCore.QRunnable, QtCore.QObject): ccx_stdout, ccx_stderr = p.communicate() if ccx_binary_sig in ccx_stdout: self.ccx_binary_present = True - except: - raise Exception("FEM: CalculiX ccx {} output {} doesn't contain expected phrase \'{}\'. Please use ccx 2.6 or newer". + except OSError, e: + FreeCAD.Console.PrintError(e.message) + if e.errno == 2: + raise Exception("FEM: CalculiX binary ccx \'{}\' not found. Please set it in FEM preferences.".format(ccx_binary)) + except Exception as e: + FreeCAD.Console.PrintError(e.message) + raise Exception("FEM: CalculiX ccx \'{}\' output \'{}\' doesn't contain expected phrase \'{}\'. Please use ccx 2.6 or newer". format(ccx_binary, ccx_stdout, ccx_binary_sig)) ## Load results of ccx calculations from .frd file. diff --git a/src/Mod/Fem/InitGui.py b/src/Mod/Fem/InitGui.py index 50da9da6e..dff1c52a1 100755 --- a/src/Mod/Fem/InitGui.py +++ b/src/Mod/Fem/InitGui.py @@ -52,7 +52,10 @@ class FemWorkbench (Workbench): ccx_path = p1.stdout.read().split('\n')[0] elif system() == 'Windows': ccx_path = FreeCAD.getHomePath() + 'bin/ccx.exe' - FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem").SetString("ccxBinaryPath", ccx_path) + if ccx_path: + FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem").SetString("ccxBinaryPath", ccx_path) + else: + FreeCAD.Console.PrintError("CalculiX ccx binary not found! Please set it manually in FEM preferences.\n") except Exception as e: FreeCAD.Console.PrintError(e.message)