diff --git a/src/Mod/Fem/FemToolsCcx.py b/src/Mod/Fem/FemToolsCcx.py index b0ef18e771..68b5bc2eaa 100644 --- a/src/Mod/Fem/FemToolsCcx.py +++ b/src/Mod/Fem/FemToolsCcx.py @@ -202,6 +202,25 @@ class FemToolsCcx(FemTools.FemTools): return p.returncode return -1 + def get_ccx_version(self): + import re + import subprocess + from platform import system + startup_info = None + if system() == "Windows": + # Windows workaround to avoid blinking terminal window + startup_info = subprocess.STARTUPINFO() + startup_info.dwFlags = subprocess.STARTF_USESHOWWINDOW + ccx_stdout = None + ccx_stderr = None + # Now extract the version number + p = subprocess.Popen([self.ccx_binary, '-v'], stdout=subprocess.PIPE, + stderr=subprocess.PIPE, shell=False, + startupinfo=startup_info) + ccx_stdout, ccx_stderr = p.communicate() + m = re.search(r"(\d+).(\d+)", ccx_stdout) + return (int(m.group(1)), int(m.group(2))) + def run(self): ret_code = 0 message = self.check_prerequisites() diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemSolverCalculix.py b/src/Mod/Fem/PyGui/_TaskPanelFemSolverCalculix.py index 08d136e88a..625038319d 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemSolverCalculix.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemSolverCalculix.py @@ -169,6 +169,11 @@ class _TaskPanelFemSolverCalculix: fea.load_results() except: QApplication.restoreOverrideCursor() + majorVersion, minorVersion = fea.get_ccx_version() + if majorVersion == 2 and minorVersion <= 10: + message = "The used CalculiX version {}.{} creates broken output files.\n" \ + "Please upgrade to a newer version.".format(majorVersion, minorVersion) + QtGui.QMessageBox.warning(None, "Upgrade CalculiX", message) raise else: QApplication.restoreOverrideCursor()