diff --git a/src/Mod/Fem/Gui/DlgSettingsFem.ui b/src/Mod/Fem/Gui/DlgSettingsFem.ui index be4d9abbc..198eb274e 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFem.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFem.ui @@ -457,6 +457,35 @@ + + + + Results + + + + + + + + Restore result dialog settings + + + true + + + RestoreResultDialog + + + Mod/Fem + + + + + + + + diff --git a/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp b/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp index f57f6d236..371541f9b 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp +++ b/src/Mod/Fem/Gui/DlgSettingsFemImp.cpp @@ -60,6 +60,7 @@ void DlgSettingsFemImp::saveSettings() cb_use_mat_from_config_dir->onSave(); cb_use_mat_from_custom_dir->onSave(); fc_custom_mat_dir->onSave(); + cb_restore_result_dialog->onSave(); } void DlgSettingsFemImp::loadSettings() @@ -76,6 +77,7 @@ void DlgSettingsFemImp::loadSettings() cb_use_mat_from_config_dir->onRestore(); cb_use_mat_from_custom_dir->onRestore(); fc_custom_mat_dir->onRestore(); + cb_restore_result_dialog->onRestore(); ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath ("User parameter:BaseApp/Preferences/Mod/Fem"); diff --git a/src/Mod/Fem/_CommandQuickAnalysis.py b/src/Mod/Fem/_CommandQuickAnalysis.py index 0ab67c428..c8604adcf 100644 --- a/src/Mod/Fem/_CommandQuickAnalysis.py +++ b/src/Mod/Fem/_CommandQuickAnalysis.py @@ -64,6 +64,7 @@ class _CommandQuickAnalysis(FemCommands): def show_results_on_mesh(self): #FIXME proprer mesh refreshing as per FreeCAD.FEM_dialog settings required # or confirmation that it's safe to call restore_result_dialog + #FIXME if an analysis has multiple results (frequence) the first result object found is restored import _TaskPanelResultControl tp = _TaskPanelResultControl._TaskPanelResultControl() tp.restore_result_dialog() diff --git a/src/Mod/Fem/_TaskPanelResultControl.py b/src/Mod/Fem/_TaskPanelResultControl.py index 515da8405..c4d892aa2 100644 --- a/src/Mod/Fem/_TaskPanelResultControl.py +++ b/src/Mod/Fem/_TaskPanelResultControl.py @@ -40,6 +40,8 @@ class _TaskPanelResultControl: '''The control for the displacement post-processing''' def __init__(self): self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/TaskPanelShowDisplacement.ui") + self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem") + self.restore_result_settings_in_dialog = self.fem_prefs.GetBool("RestoreResultDialog", True) #Connect Signals and Slots QtCore.QObject.connect(self.form.rb_none, QtCore.SIGNAL("toggled(bool)"), self.none_selected) @@ -55,7 +57,10 @@ class _TaskPanelResultControl: QtCore.QObject.connect(self.form.sb_displacement_factor_max, QtCore.SIGNAL("valueChanged(int)"), self.sb_disp_factor_max_changed) self.update() - self.restore_result_dialog() + if self.restore_result_settings_in_dialog: + self.restore_result_dialog() + else: + self.restore_initial_result_dialog() def restore_result_dialog(self): try: @@ -90,22 +95,26 @@ class _TaskPanelResultControl: self.form.sb_displacement_factor_max.setValue(dfm) self.form.sb_displacement_factor.setValue(df) except: - FreeCAD.FEM_dialog = {"results_type": "None", "show_disp": False, - "disp_factor": 0, "disp_factor_max": 100} + self.restore_initial_result_dialog() + + def restore_initial_result_dialog(self): + FreeCAD.FEM_dialog = {"results_type": "None", "show_disp": False, + "disp_factor": 0, "disp_factor_max": 100} + fea = FemTools() + fea.reset_mesh_color() + fea.reset_mesh_deformation() def getStandardButtons(self): return int(QtGui.QDialogButtonBox.Close) def get_result_stats(self, type_name, analysis=None): - if analysis is None: - analysis = FemGui.getActiveAnalysis() - for i in analysis.Member: - if (i.isDerivedFrom("Fem::FemResultObject")) and ("Stats" in i.PropertiesList): - match_table = {"U1": (i.Stats[0], i.Stats[1], i.Stats[2]), - "U2": (i.Stats[3], i.Stats[4], i.Stats[5]), - "U3": (i.Stats[6], i.Stats[7], i.Stats[8]), - "Uabs": (i.Stats[9], i.Stats[10], i.Stats[11]), - "Sabs": (i.Stats[12], i.Stats[13], i.Stats[14]), + if "Stats" in self.result_object.PropertiesList: + Stats = self.result_object.Stats + match_table = {"U1": (Stats[0], Stats[1], Stats[2]), + "U2": (Stats[3], Stats[4], Stats[5]), + "U3": (Stats[6], Stats[7], Stats[8]), + "Uabs": (Stats[9], Stats[10], Stats[11]), + "Sabs": (Stats[12], Stats[13], Stats[14]), "None": (0.0, 0.0, 0.0)} return match_table[type_name] return (0.0, 0.0, 0.0) diff --git a/src/Mod/Start/StartPage/StartPage.py b/src/Mod/Start/StartPage/StartPage.py index 6babc79e5..aad7e5eed 100644 --- a/src/Mod/Start/StartPage/StartPage.py +++ b/src/Mod/Start/StartPage/StartPage.py @@ -443,7 +443,7 @@ def getLinks():
  •   ')" onMouseout="show('')" - exthref="http://www.freecadweb.org/">""" + text08 + """
  • + href="exthttp://www.freecadweb.org/">""" + text08 + """
  •   ')" onMouseout="show('')"