From e4bd9054a6d8ff2cec49c06551e55b72c75e2f77 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Thu, 16 Feb 2017 08:06:55 +0100 Subject: [PATCH] FEM: result task panel, reset mesh color and deformation in taskpanel and not by use of FemTools, fixes if mutlip fixes if problems if multiple meshes or results are in an analysis --- src/Mod/Fem/_TaskPanelShowResult.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/Mod/Fem/_TaskPanelShowResult.py b/src/Mod/Fem/_TaskPanelShowResult.py index 665bef7dc..6f13f69ad 100644 --- a/src/Mod/Fem/_TaskPanelShowResult.py +++ b/src/Mod/Fem/_TaskPanelShowResult.py @@ -28,7 +28,6 @@ __url__ = "http://www.freecadweb.org" # \ingroup FEM import FreeCAD -import FemTools import numpy as np import FreeCADGui @@ -42,6 +41,10 @@ class _TaskPanelShowResult: '''The task panel for the post-processing''' def __init__(self, obj): self.result_object = obj + self.MeshObject = self.result_object.Mesh + # task panel should be started by use of setEdit of view provider + # in setEdit check for, Mesh, active analysis and if Mesh and result are in active analysis + self.form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Fem/TaskPanelShowResult.ui") self.fem_prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/General") self.restore_result_settings_in_dialog = self.fem_prefs.GetBool("RestoreResultDialog", True) @@ -67,8 +70,6 @@ class _TaskPanelShowResult: QtCore.QObject.connect(self.form.sb_displacement_factor_max, QtCore.SIGNAL("valueChanged(int)"), self.sb_disp_factor_max_changed) self.update() - if not FemGui.getActiveAnalysis(): - FreeCAD.Console.PrintError('FEM Result task panel, no active analysis. This will cause problems later ...\n') if self.restore_result_settings_in_dialog: self.restore_result_dialog() else: @@ -124,9 +125,8 @@ class _TaskPanelShowResult: def restore_initial_result_dialog(self): FreeCAD.FEM_dialog = {"results_type": "None", "show_disp": False, "disp_factor": 0, "disp_factor_max": 100} - fea = FemTools.FemTools() - fea.reset_mesh_color() - fea.reset_mesh_deformation() + self.reset_mesh_deformation() + self.reset_mesh_color() def getStandardButtons(self): return int(QtGui.QDialogButtonBox.Close) @@ -150,8 +150,7 @@ class _TaskPanelShowResult: def none_selected(self, state): FreeCAD.FEM_dialog["results_type"] = "None" self.set_result_stats("mm", 0.0, 0.0, 0.0) - fea = FemTools.FemTools() - fea.reset_mesh_color() + self.reset_mesh_color() def abs_displacement_selected(self, state): FreeCAD.FEM_dialog["results_type"] = "Uabs" @@ -342,6 +341,14 @@ class _TaskPanelShowResult: FreeCAD.Console.PrintError(error_message) QtGui.QMessageBox.critical(None, 'No result object', error_message) + def reset_mesh_deformation(self): + self.MeshObject.ViewObject.applyDisplacement(0.0) + + def reset_mesh_color(self): + self.MeshObject.ViewObject.NodeColor = {} + self.MeshObject.ViewObject.ElementColor = {} + self.MeshObject.ViewObject.setNodeColorByScalars() + def reject(self): FreeCADGui.Control.closeDialog() # if the taks panell is called from Command obj is not in edit mode thus reset edit does not cleses the dialog, may be do not call but set in edit instead FreeCADGui.ActiveDocument.resetEdit()