FEM: result object, view provider, move task panel checks inside the setEdit

This commit is contained in:
Bernd Hahnebach 2017-02-28 11:50:36 +01:00 committed by wmayer
parent f838e5fc8d
commit 1cfd041edb
2 changed files with 35 additions and 44 deletions

View File

@ -47,11 +47,8 @@ class _CommandShowResult(FemCommands):
sel = FreeCADGui.Selection.getSelection() sel = FreeCADGui.Selection.getSelection()
if (len(sel) == 1): if (len(sel) == 1):
if sel[0].isDerivedFrom("Fem::FemResultObject"): if sel[0].isDerivedFrom("Fem::FemResultObject"):
self.result_object = sel[0] result_object = sel[0]
result_object.ViewObject.startEditing()
import _ViewProviderFemResultMechanical
if _ViewProviderFemResultMechanical.is_result_obj_valid(self.result_object):
self.result_object.ViewObject.startEditing()
FreeCADGui.addCommand('Fem_ShowResult', _CommandShowResult()) FreeCADGui.addCommand('Fem_ShowResult', _CommandShowResult())

View File

@ -31,6 +31,7 @@ __url__ = "http://www.freecadweb.org"
import FreeCAD import FreeCAD
import FreeCADGui import FreeCADGui
import FemGui import FemGui
from PySide import QtGui
class _ViewProviderFemResultMechanical: class _ViewProviderFemResultMechanical:
@ -59,40 +60,23 @@ class _ViewProviderFemResultMechanical:
FreeCADGui.activateWorkbench("FemWorkbench") FreeCADGui.activateWorkbench("FemWorkbench")
doc = FreeCADGui.getDocument(vobj.Object.Document) doc = FreeCADGui.getDocument(vobj.Object.Document)
if not doc.getInEdit(): if not doc.getInEdit():
if is_result_obj_valid(self.Object):
doc.setEdit(vobj.Object.Name) doc.setEdit(vobj.Object.Name)
else: else:
FreeCAD.Console.PrintError('Active Task Dialog found! Please close this one first!\n') FreeCAD.Console.PrintError('Active Task Dialog found! Please close this one first!\n')
return True return True
def setEdit(self, vobj, mode=0): def setEdit(self, vobj, mode=0):
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 import PyGui._TaskPanelShowResult
taskd = PyGui._TaskPanelShowResult._TaskPanelShowResult(self.Object) taskd = PyGui._TaskPanelShowResult._TaskPanelShowResult(self.Object)
taskd.obj = vobj.Object taskd.obj = vobj.Object
FreeCADGui.Control.showDialog(taskd) FreeCADGui.Control.showDialog(taskd)
return True return True
def unsetEdit(self, vobj, mode=0):
FreeCADGui.Control.closeDialog()
return
def __getstate__(self):
return None
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: else:
error_message = 'FEM: Result mesh object is not in active analysis.\n' error_message = 'FEM: Result mesh object is not in active analysis.\n'
FreeCAD.Console.PrintError(error_message) FreeCAD.Console.PrintError(error_message)
@ -113,3 +97,13 @@ def is_result_obj_valid(result_obj):
FreeCAD.Console.PrintError(error_message) FreeCAD.Console.PrintError(error_message)
QtGui.QMessageBox.critical(None, 'No activate analysis', error_message) QtGui.QMessageBox.critical(None, 'No activate analysis', error_message)
return False return False
def unsetEdit(self, vobj, mode=0):
FreeCADGui.Control.closeDialog()
return
def __getstate__(self):
return None
def __setstate__(self, state):
return None