Skip to content

Commit

Permalink
FEM: Add WorkingDir property
Browse files Browse the repository at this point in the history
that allows to set individual directory to be used for each analysis
object

Signed-off-by: Przemo Firszt <przemo@firszt.eu>
  • Loading branch information
PrzemoF authored and wwmayer committed Oct 25, 2015
1 parent 8055b18 commit 26cd01e
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 18 deletions.
6 changes: 5 additions & 1 deletion src/Mod/Fem/FemTools.py
Expand Up @@ -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:
Expand Down
2 changes: 2 additions & 0 deletions src/Mod/Fem/_FemAnalysis.py
Expand Up @@ -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
Expand Down
31 changes: 14 additions & 17 deletions src/Mod/Fem/_JobControlTaskPanel.py
Expand Up @@ -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

Expand Down Expand Up @@ -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':
Expand All @@ -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:
Expand Down Expand Up @@ -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

0 comments on commit 26cd01e

Please sign in to comment.