diff --git a/src/Mod/Fem/Gui/DlgSettingsFem.ui b/src/Mod/Fem/Gui/DlgSettingsFem.ui index 5b02f22834..38908d73db 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFem.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFem.ui @@ -90,6 +90,30 @@ + + + + + + ccx binary + + + + + + + Leave blank to use default CalculiX ccx binary file + + + ccxBinaryPath + + + Mod/Fem + + + + + diff --git a/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp b/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp index 18bd799cad..a0b4c3a858 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp +++ b/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp @@ -45,12 +45,14 @@ void DlgSettingsFemImp::saveSettings() { cb_int_editor->onSave(); fc_ext_editor->onSave(); + fc_ccx_binary->onSave(); } void DlgSettingsFemImp::loadSettings() { 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 693c1e5e11..e5eaefccdc 100644 --- a/src/Mod/Fem/MechanicalAnalysis.py +++ b/src/Mod/Fem/MechanicalAnalysis.py @@ -205,20 +205,25 @@ class _JobControlTaskPanel: # for the subcomponents, such as additions, subtractions. # the categories are shown only if they are not empty. self.form=FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/MechanicalAnalysis.ui") - from platform import system - if system() == 'Linux': - self.CalculixBinary = 'ccx' - elif system() == 'Windows': - self.CalculixBinary = FreeCAD.getHomePath() + 'bin/ccx.exe' + self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") + ccx_binary = self.fem_prefs.GetString("ccxBinaryPath","") + if ccx_binary: + self.CalculixBinary = ccx_binary + print "Using ccx binary path from FEM preferences: {}".format(ccx_binary) else: - self.CalculixBinary = 'ccx' + from platform import system + if system() == 'Linux': + self.CalculixBinary = 'ccx' + elif system() == 'Windows': + self.CalculixBinary = FreeCAD.getHomePath() + 'bin/ccx.exe' + else: + self.CalculixBinary = 'ccx' self.TempDir = FreeCAD.ActiveDocument.TransientDir.replace('\\','/') + '/FemAnl_'+ object.Uid[-4:] if not os.path.isdir(self.TempDir): os.mkdir(self.TempDir) self.obj = object #self.params = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") - self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") self.Calculix = QtCore.QProcess() self.Timer = QtCore.QTimer() self.Timer.start(300)