From 175e7f2069c28e961428be3e6947a977734c5d80 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Tue, 3 Mar 2020 21:04:23 +0100 Subject: [PATCH] FEM: Python base constraint view provider, extend methods --- .../ViewProviderFemConstraint.py | 34 ++++++++++++++++--- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/src/Mod/Fem/femguiobjects/ViewProviderFemConstraint.py b/src/Mod/Fem/femguiobjects/ViewProviderFemConstraint.py index 348032f690..11ac8ee76e 100644 --- a/src/Mod/Fem/femguiobjects/ViewProviderFemConstraint.py +++ b/src/Mod/Fem/femguiobjects/ViewProviderFemConstraint.py @@ -47,6 +47,8 @@ class ViewProxy(object): def attach(self, vobj): default = coin.SoGroup() vobj.addDisplayMode(default, "Default") + self.Object = vobj.Object + self.ViewObject = vobj def getDisplayModes(self, obj): "Return a list of display modes." @@ -59,11 +61,27 @@ class ViewProxy(object): def setDisplayMode(self, mode): return mode - def setEdit(self, vobj, mode=0): - # needs to be overwritten if task panel exists - # avoid edit mode by return False - # https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 - return False + def setEdit(self, vobj, mode=0, TaskPanel=None, hide_mesh=True): + if TaskPanel is None: + # avoid edit mode by return False + # https://forum.freecadweb.org/viewtopic.php?t=12139&start=10#p161062 + return False + if hide_mesh is True: + # hide all FEM meshes and VTK FemPostPipeline objects + for o in vobj.Object.Document.Objects: + if ( + o.isDerivedFrom("Fem::FemMeshObject") + or o.isDerivedFrom("Fem::FemPostPipeline") + ): + o.ViewObject.hide() + # show task panel + task = TaskPanel(vobj.Object) + FreeCADGui.Control.showDialog(task) + return True + + def unsetEdit(self, vobj, mode=0): + FreeCADGui.Control.closeDialog() + return True def doubleClicked(self, vobj): guidoc = FreeCADGui.getDocument(vobj.Object.Document) @@ -77,3 +95,9 @@ class ViewProxy(object): QMessageBox.critical(None, "Error in tree view", message) FreeCAD.Console.PrintError(message + "\n") return True + + def __getstate__(self): + return None + + def __setstate__(self, state): + return None