From 1cfd041edba07a6bb0e3658f70cae0775e5e1046 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Tue, 28 Feb 2017 11:50:36 +0100 Subject: [PATCH] FEM: result object, view provider, move task panel checks inside the setEdit --- src/Mod/Fem/PyGui/_CommandShowResult.py | 7 +- .../PyGui/_ViewProviderFemResultMechanical.py | 72 +++++++++---------- 2 files changed, 35 insertions(+), 44 deletions(-) diff --git a/src/Mod/Fem/PyGui/_CommandShowResult.py b/src/Mod/Fem/PyGui/_CommandShowResult.py index 91ae2b9d9..783e8bed9 100644 --- a/src/Mod/Fem/PyGui/_CommandShowResult.py +++ b/src/Mod/Fem/PyGui/_CommandShowResult.py @@ -47,11 +47,8 @@ class _CommandShowResult(FemCommands): sel = FreeCADGui.Selection.getSelection() if (len(sel) == 1): if sel[0].isDerivedFrom("Fem::FemResultObject"): - self.result_object = sel[0] - - import _ViewProviderFemResultMechanical - if _ViewProviderFemResultMechanical.is_result_obj_valid(self.result_object): - self.result_object.ViewObject.startEditing() + result_object = sel[0] + result_object.ViewObject.startEditing() FreeCADGui.addCommand('Fem_ShowResult', _CommandShowResult()) diff --git a/src/Mod/Fem/PyGui/_ViewProviderFemResultMechanical.py b/src/Mod/Fem/PyGui/_ViewProviderFemResultMechanical.py index e6d8233ca..316cd9c7b 100644 --- a/src/Mod/Fem/PyGui/_ViewProviderFemResultMechanical.py +++ b/src/Mod/Fem/PyGui/_ViewProviderFemResultMechanical.py @@ -31,6 +31,7 @@ __url__ = "http://www.freecadweb.org" import FreeCAD import FreeCADGui import FemGui +from PySide import QtGui class _ViewProviderFemResultMechanical: @@ -59,18 +60,43 @@ class _ViewProviderFemResultMechanical: FreeCADGui.activateWorkbench("FemWorkbench") doc = FreeCADGui.getDocument(vobj.Object.Document) if not doc.getInEdit(): - if is_result_obj_valid(self.Object): - doc.setEdit(vobj.Object.Name) + doc.setEdit(vobj.Object.Name) else: FreeCAD.Console.PrintError('Active Task Dialog found! Please close this one first!\n') return True def setEdit(self, vobj, mode=0): - import PyGui._TaskPanelShowResult - taskd = PyGui._TaskPanelShowResult._TaskPanelShowResult(self.Object) - taskd.obj = vobj.Object - FreeCADGui.Control.showDialog(taskd) - return True + + if FemGui.getActiveAnalysis() is not None: + if hasattr(self.Object, "Mesh") and self.Object.Mesh: + mem = FemGui.getActiveAnalysis().Member + if self.Object in mem: + if self.Object.Mesh in mem: + import PyGui._TaskPanelShowResult + taskd = PyGui._TaskPanelShowResult._TaskPanelShowResult(self.Object) + taskd.obj = vobj.Object + FreeCADGui.Control.showDialog(taskd) + return True + else: + error_message = 'FEM: Result mesh object is not in active analysis.\n' + FreeCAD.Console.PrintError(error_message) + QtGui.QMessageBox.critical(None, 'Not in activate analysis', error_message) + return False + else: + error_message = 'FEM: Result object is not in active analysis.\n' + FreeCAD.Console.PrintError(error_message) + QtGui.QMessageBox.critical(None, 'Not in activate analysis', error_message) + return False + else: + error_message = 'FEM: Result object has no appropriate FEM mesh.\n' + FreeCAD.Console.PrintError(error_message) + QtGui.QMessageBox.critical(None, 'No result object', error_message) + return False + else: + error_message = 'FEM: No active analysis found! Please activate the analysis you would like to view results for.\n' + FreeCAD.Console.PrintError(error_message) + QtGui.QMessageBox.critical(None, 'No activate analysis', error_message) + return False def unsetEdit(self, vobj, mode=0): FreeCADGui.Control.closeDialog() @@ -81,35 +107,3 @@ class _ViewProviderFemResultMechanical: def __setstate__(self, state): return None - - -# helper -# I tried to do this inside the setEdit def but I was not able to unset the edit mode from within the setEdit def -def is_result_obj_valid(result_obj): - from PySide import QtGui - if FemGui.getActiveAnalysis() is not None: - if hasattr(result_obj, "Mesh") and result_obj.Mesh: - mem = FemGui.getActiveAnalysis().Member - if result_obj in mem: - if result_obj.Mesh in mem: - return True - else: - error_message = 'FEM: Result mesh object is not in active analysis.\n' - FreeCAD.Console.PrintError(error_message) - QtGui.QMessageBox.critical(None, 'Not in activate analysis', error_message) - return False - else: - error_message = 'FEM: Result object is not in active analysis.\n' - FreeCAD.Console.PrintError(error_message) - QtGui.QMessageBox.critical(None, 'Not in activate analysis', error_message) - return False - else: - error_message = 'FEM: Result object has no appropriate FEM mesh.\n' - FreeCAD.Console.PrintError(error_message) - QtGui.QMessageBox.critical(None, 'No result object', error_message) - return False - else: - error_message = 'FEM: No active analysis found! Please activate the analysis you would like to view results for.\n' - FreeCAD.Console.PrintError(error_message) - QtGui.QMessageBox.critical(None, 'No activate analysis', error_message) - return False