From 26cd01e346c99dc54872863d2412f3a68f61088a Mon Sep 17 00:00:00 2001 From: Przemo Firszt Date: Tue, 20 Oct 2015 12:37:37 +0100 Subject: [PATCH] FEM: Add WorkingDir property that allows to set individual directory to be used for each analysis object Signed-off-by: Przemo Firszt --- src/Mod/Fem/FemTools.py | 6 +++++- src/Mod/Fem/_FemAnalysis.py | 2 ++ src/Mod/Fem/_JobControlTaskPanel.py | 31 +++++++++++++---------------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/Mod/Fem/FemTools.py b/src/Mod/Fem/FemTools.py index 64b2ad92a958..e6df35581862 100644 --- a/src/Mod/Fem/FemTools.py +++ b/src/Mod/Fem/FemTools.py @@ -325,7 +325,11 @@ def setup_working_dir(self, working_dir=None): if working_dir is not None: self.working_dir = working_dir else: - self.working_dir = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem").GetString("WorkingDir") + try: + self.working_dir = self.analysis.WorkingDir + except: + FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem").GetString("WorkingDir") + self.working_dir = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem").GetString("WorkingDir") if not (os.path.isdir(self.working_dir)): try: diff --git a/src/Mod/Fem/_FemAnalysis.py b/src/Mod/Fem/_FemAnalysis.py index 943213f309eb..920b5c6ced30 100644 --- a/src/Mod/Fem/_FemAnalysis.py +++ b/src/Mod/Fem/_FemAnalysis.py @@ -38,6 +38,8 @@ def __init__(self, obj): obj.AnalysisType = FemTools.known_analysis_types analysis_type = fem_prefs.GetInt("AnalysisType", 0) obj.AnalysisType = FemTools.known_analysis_types[analysis_type] + obj.addProperty("App::PropertyPath", "WorkingDir", "Fem", "Working directory for calculations") + obj.WorkingDir = fem_prefs.GetString("WorkingDir", "") def execute(self, obj): return diff --git a/src/Mod/Fem/_JobControlTaskPanel.py b/src/Mod/Fem/_JobControlTaskPanel.py index 8a7fd9b2ca3e..a1c9c3b6adf5 100644 --- a/src/Mod/Fem/_JobControlTaskPanel.py +++ b/src/Mod/Fem/_JobControlTaskPanel.py @@ -55,7 +55,6 @@ def __init__(self, analysis_object): else: self.CalculixBinary = 'ccx' self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") - self.working_dir = self.fem_prefs.GetString("WorkingDir", '/tmp') self.analysis_object = analysis_object @@ -160,7 +159,7 @@ def getStandardButtons(self): def update(self): 'fills the widgets' - self.form.le_working_dir.setText(self.working_dir) + self.form.le_working_dir.setText(self.analysis_object.WorkingDir) if self.analysis_object.AnalysisType == 'static': self.form.rb_static_analysis.setChecked(True) elif self.analysis_object.AnalysisType == 'frequency': @@ -174,7 +173,7 @@ def reject(self): FreeCADGui.Control.closeDialog() def choose_working_dir(self): - current_wd = get_working_dir() + current_wd = self.setup_working_dir() wd = QtGui.QFileDialog.getExistingDirectory(None, 'Choose CalculiX working directory', current_wd) if wd: @@ -262,17 +261,15 @@ def select_static_analysis(self): def select_frequency_analysis(self): self.select_analysis_type('frequency') - -#Code duplication!!!! -def get_working_dir(): - fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") - working_dir = fem_prefs.GetString("WorkingDir", "") - if not (os.path.isdir(working_dir)): - try: - os.path.makedirs(working_dir) - except: - print ("Dir \'{}\' from FEM preferences doesn't exist and cannot be created.".format(working_dir)) - import tempfile - working_dir = tempfile.gettempdir() - print ("Dir \'{}\' will be used instead.".format(working_dir)) - return working_dir + # That function overlaps with FemTools setup_working_dir and needs to be removed when we migrate fully to FemTools + def setup_working_dir(self): + wd = self.analysis_object.WorkingDir + if not (os.path.isdir(wd)): + try: + os.makedirs(wd) + except: + print ("Dir \'{}\' from FEM preferences doesn't exist and cannot be created.".format(wd)) + import tempfile + wd = tempfile.gettempdir() + print ("Dir \'{}\' will be used instead.".format(wd)) + return wd