FEM: mesh objects, show them only if they are edited or needed for result viewing

This commit is contained in:
Bernd Hahnebach
2017-07-01 20:14:09 +02:00
committed by wmayer
parent b2fa046e76
commit c4fc809a12
3 changed files with 13 additions and 2 deletions

View File

@@ -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:

View File

@@ -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):

View File

@@ -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()