diff --git a/src/Mod/Fem/FemTools.py b/src/Mod/Fem/FemTools.py index 64b2ad92a9..e6df355818 100644 --- a/src/Mod/Fem/FemTools.py +++ b/src/Mod/Fem/FemTools.py @@ -325,7 +325,11 @@ class FemTools(QtCore.QRunnable, QtCore.QObject): 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 943213f309..920b5c6ced 100644 --- a/src/Mod/Fem/_FemAnalysis.py +++ b/src/Mod/Fem/_FemAnalysis.py @@ -38,6 +38,8 @@ class _FemAnalysis: 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 8a7fd9b2ca..a1c9c3b6ad 100644 --- a/src/Mod/Fem/_JobControlTaskPanel.py +++ b/src/Mod/Fem/_JobControlTaskPanel.py @@ -55,7 +55,6 @@ class _JobControlTaskPanel: 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 @@ class _JobControlTaskPanel: 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 @@ class _JobControlTaskPanel: 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 @@ class _JobControlTaskPanel: 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