From c4fc809a122bb47c70c650284f0996a05b1a60e2 Mon Sep 17 00:00:00 2001 From: Bernd Hahnebach Date: Sat, 1 Jul 2017 20:14:09 +0200 Subject: [PATCH] FEM: mesh objects, show them only if they are edited or needed for result viewing --- src/Mod/Fem/PyGui/_TaskPanelFemResultShow.py | 1 - src/Mod/Fem/PyGui/_ViewProviderFemMeshGmsh.py | 1 + .../Fem/PyGui/_ViewProviderFemResultMechanical.py | 13 ++++++++++++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Mod/Fem/PyGui/_TaskPanelFemResultShow.py b/src/Mod/Fem/PyGui/_TaskPanelFemResultShow.py index fd1228f754..9d16c32d51 100644 --- a/src/Mod/Fem/PyGui/_TaskPanelFemResultShow.py +++ b/src/Mod/Fem/PyGui/_TaskPanelFemResultShow.py @@ -401,7 +401,6 @@ class _TaskPanelFemResultShow: self.disable_empty_result_buttons() if (self.mesh_obj.FemMesh.NodeCount == len(self.result_obj.NodeNumbers)): self.suitable_results = True - self.mesh_obj.ViewObject.Visibility = True hide_parts_constraints() else: if not self.mesh_obj.FemMesh.VolumeCount: diff --git a/src/Mod/Fem/PyGui/_ViewProviderFemMeshGmsh.py b/src/Mod/Fem/PyGui/_ViewProviderFemMeshGmsh.py index 53bc5c80d8..f75d5d4087 100644 --- a/src/Mod/Fem/PyGui/_ViewProviderFemMeshGmsh.py +++ b/src/Mod/Fem/PyGui/_ViewProviderFemMeshGmsh.py @@ -60,6 +60,7 @@ class _ViewProviderFemMeshGmsh: def unsetEdit(self, vobj, mode): FreeCADGui.Control.closeDialog() + self.ViewObject.hide() # hide the mesh after edit is finished return def doubleClicked(self, vobj): diff --git a/src/Mod/Fem/PyGui/_ViewProviderFemResultMechanical.py b/src/Mod/Fem/PyGui/_ViewProviderFemResultMechanical.py index 6e4b67b1d1..fa120f3996 100644 --- a/src/Mod/Fem/PyGui/_ViewProviderFemResultMechanical.py +++ b/src/Mod/Fem/PyGui/_ViewProviderFemResultMechanical.py @@ -66,12 +66,14 @@ class _ViewProviderFemResultMechanical: return True 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: + hide_femmeshes_postpiplines() + # only show the FEM mesh we would like to view results with + self.Object.Mesh.ViewObject.show() import PyGui._TaskPanelFemResultShow taskd = PyGui._TaskPanelFemResultShow._TaskPanelFemResultShow(self.Object) taskd.obj = vobj.Object @@ -100,6 +102,7 @@ class _ViewProviderFemResultMechanical: def unsetEdit(self, vobj, mode=0): FreeCADGui.Control.closeDialog() + self.Object.Mesh.ViewObject.hide() # hide the mesh after result viewing is finished, but do not reset the coloring return def __getstate__(self): @@ -107,3 +110,11 @@ class _ViewProviderFemResultMechanical: def __setstate__(self, state): return None + + +# helper +def hide_femmeshes_postpiplines(): + # hide all visible FEM mesh objects and VTK FemPostPipeline objects + for o in FreeCAD.ActiveDocument.Objects: + if o.isDerivedFrom("Fem::FemMeshObject") or o.isDerivedFrom("Fem::FemPostPipeline"): + o.ViewObject.hide()