FEM: result object, view provider, move task panel checks inside the setEdit
This commit is contained in:
parent
f838e5fc8d
commit
1cfd041edb
|
@ -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())
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user