diff --git a/src/Mod/Fem/Gui/DlgSettingsFem.ui b/src/Mod/Fem/Gui/DlgSettingsFem.ui
index 0469d81c14..dd09ea3294 100644
--- a/src/Mod/Fem/Gui/DlgSettingsFem.ui
+++ b/src/Mod/Fem/Gui/DlgSettingsFem.ui
@@ -142,6 +142,50 @@
+ -
+
+
+ true
+
+
+
+ 100
+ 0
+
+
+
+ Working directory
+
+
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+ Gui::FileChooser::Directory
+
+
+ WorkingDir
+
+
+ Mod/Fem
+
+
+
diff --git a/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp b/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp
index dba1a46c8d..1fd363d3de 100644
--- a/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp
+++ b/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp
@@ -43,6 +43,7 @@ DlgSettingsFemImp::~DlgSettingsFemImp()
void DlgSettingsFemImp::saveSettings()
{
+ fc_ccx_working_directory->onSave();
cb_int_editor->onSave();
fc_ext_editor->onSave();
fc_ccx_binary->onSave();
@@ -54,6 +55,7 @@ void DlgSettingsFemImp::saveSettings()
void DlgSettingsFemImp::loadSettings()
{
+ fc_ccx_working_directory->onRestore();
cb_int_editor->onRestore();
fc_ext_editor->onRestore();
fc_ccx_binary->onRestore();
diff --git a/src/Mod/Fem/MechanicalAnalysis.py b/src/Mod/Fem/MechanicalAnalysis.py
index bf1b4d3221..61bb9d7134 100644
--- a/src/Mod/Fem/MechanicalAnalysis.py
+++ b/src/Mod/Fem/MechanicalAnalysis.py
@@ -247,6 +247,8 @@ class _JobControlTaskPanel:
self.CalculixBinary = FreeCAD.getHomePath() + 'bin/ccx.exe'
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.obj = object
self.Calculix = QtCore.QProcess()
@@ -256,7 +258,7 @@ class _JobControlTaskPanel:
self.fem_console_message = ''
#Connect Signals and Slots
- QtCore.QObject.connect(self.form.toolButton_chooseOutputDir, QtCore.SIGNAL("clicked()"), self.chooseOutputDir)
+ QtCore.QObject.connect(self.form.tb_choose_working_dir, QtCore.SIGNAL("clicked()"), self.choose_working_dir)
QtCore.QObject.connect(self.form.pushButton_write, QtCore.SIGNAL("clicked()"), self.write_input_file_handler)
QtCore.QObject.connect(self.form.pushButton_edit, QtCore.SIGNAL("clicked()"), self.editCalculixInputFile)
QtCore.QObject.connect(self.form.pushButton_generate, QtCore.SIGNAL("clicked()"), self.runCalculix)
@@ -351,7 +353,7 @@ class _JobControlTaskPanel:
def update(self):
'fills the widgets'
- self.form.lineEdit_outputDir.setText(tempfile.gettempdir())
+ self.form.le_working_dir.setText(self.working_dir)
return
def accept(self):
@@ -360,12 +362,14 @@ class _JobControlTaskPanel:
def reject(self):
FreeCADGui.Control.closeDialog()
- def chooseOutputDir(self):
- print "chooseOutputDir"
- dirname = QtGui.QFileDialog.getExistingDirectory(None, 'Choose material directory', self.params.GetString("JobDir", '/'))
- if(dirname):
- self.params.SetString("JobDir", str(dirname))
- self.form.lineEdit_outputDir.setText(dirname)
+ def choose_working_dir(self):
+ self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem")
+ self.working_dir = QtGui.QFileDialog.getExistingDirectory(None,
+ 'Choose CalculiX working directory',
+ self.fem_prefs.GetString("WorkingDir", '/tmp'))
+ if self.working_dir:
+ self.fem_prefs.SetString("WorkingDir", str(self.working_dir))
+ self.form.le_working_dir.setText(self.working_dir)
def write_input_file_handler(self):
QApplication.restoreOverrideCursor()
@@ -374,7 +378,7 @@ class _JobControlTaskPanel:
try:
import ccxInpWriter as iw
inp_writer = iw.inp_writer(self.obj, self.MeshObject, self.MaterialObjects,
- self.FixedObjects, self.ForceObjects, self.PressureObjects)
+ self.FixedObjects, self.ForceObjects, self.PressureObjects, self.working_dir)
self.base_name = inp_writer.write_calculix_input_file()
if self.base_name != "":
self.femConsoleMessage("Write completed.")
diff --git a/src/Mod/Fem/MechanicalAnalysis.ui b/src/Mod/Fem/MechanicalAnalysis.ui
index e62db3298b..cb23c4cacd 100644
--- a/src/Mod/Fem/MechanicalAnalysis.ui
+++ b/src/Mod/Fem/MechanicalAnalysis.ui
@@ -17,9 +17,9 @@
-
-
-
+
- false
+ true
true
@@ -27,9 +27,9 @@
-
-
+
- false
+ true
...
diff --git a/src/Mod/Fem/ccxInpWriter.py b/src/Mod/Fem/ccxInpWriter.py
index b02259ea65..43710a8706 100644
--- a/src/Mod/Fem/ccxInpWriter.py
+++ b/src/Mod/Fem/ccxInpWriter.py
@@ -6,13 +6,15 @@ import sys
class inp_writer:
- def __init__(self, analysis_obj, mesh_obj, mat_obj, fixed_obj, force_obj, pressure_obj):
+ def __init__(self, analysis_obj, mesh_obj, mat_obj, fixed_obj, force_obj, pressure_obj, dir_name=None):
+ self.dir_name = dir_name
self.mesh_object = mesh_obj
self.material_objects = mat_obj
self.fixed_objects = fixed_obj
self.force_objects = force_obj
self.pressure_objects = pressure_obj
- self.dir_name = FreeCAD.ActiveDocument.TransientDir.replace('\\', '/') + '/FemAnl_' + analysis_obj.Uid[-4:]
+ if not dir_name:
+ self.dir_name = FreeCAD.ActiveDocument.TransientDir.replace('\\', '/') + '/FemAnl_' + analysis_obj.Uid[-4:]
if not os.path.isdir(self.dir_name):
os.mkdir(self.dir_name)
self.base_name = self.dir_name + '/' + self.mesh_object.Name