From 1e8e0877f37f25466d5c40b674fbf058338627f6 Mon Sep 17 00:00:00 2001 From: Przemo Firszt Date: Wed, 11 Nov 2015 22:21:20 +0000 Subject: [PATCH] FEM: Windows workaround to avoid blinking terminal window Reported-by: wmayer Tested-by: wamyer, sgrogan Signed-off-by: Przemo Firszt --- src/Mod/Fem/FemTools.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Mod/Fem/FemTools.py b/src/Mod/Fem/FemTools.py index 6046d9515868..0a1efadd5d79 100644 --- a/src/Mod/Fem/FemTools.py +++ b/src/Mod/Fem/FemTools.py @@ -383,11 +383,11 @@ def setup_working_dir(self, working_dir=None): # @ccx_binary path to ccx binary, default is guessed: "bin/ccx" windows, "ccx" for other systems # @ccx_binary_sig expected output form ccx when run empty. Default value is "CalculiX.exe -i jobname" def setup_ccx(self, ccx_binary=None, ccx_binary_sig="CalculiX"): + from platform import system if not ccx_binary: self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") ccx_binary = self.fem_prefs.GetString("ccxBinaryPath", "") if not ccx_binary: - from platform import system if system() == "Linux": ccx_binary = "ccx" elif system() == "Windows": @@ -395,12 +395,19 @@ def setup_ccx(self, ccx_binary=None, ccx_binary_sig="CalculiX"): else: ccx_binary = "ccx" self.ccx_binary = ccx_binary + import subprocess + 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 try: p = subprocess.Popen([self.ccx_binary], stdout=subprocess.PIPE, - stderr=subprocess.PIPE, shell=False) + stderr=subprocess.PIPE, shell=False, + startupinfo=startup_info) ccx_stdout, ccx_stderr = p.communicate() if ccx_binary_sig in ccx_stdout: self.ccx_binary_present = True