From 1634a3e4d9e57ef661fbbe3fad1771dc49fa2d9e Mon Sep 17 00:00:00 2001 From: eap Date: Fri, 21 Mar 2008 11:10:21 +0000 Subject: [PATCH] PAL19321 Problem of Create Group for volumes SetEntityMode() according to group type --- src/SMESHGUI/SMESHGUI_GroupDlg.cxx | 49 ++++++++++++++++++++++++++++-- src/SMESHGUI/SMESHGUI_GroupDlg.h | 3 ++ 2 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx index 64607bcef..4967b1b8b 100644 --- a/src/SMESHGUI/SMESHGUI_GroupDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_GroupDlg.cxx @@ -479,7 +479,9 @@ void SMESHGUI_GroupDlg::init (SMESH::SMESH_Mesh_ptr theMesh) mySelectionMgr->installFilter(myMeshFilter); /* init data from current selection */ + restoreShowEntityMode(); myMesh = SMESH::SMESH_Mesh::_duplicate(theMesh); + setShowEntityMode(); myGroup = SMESH::SMESH_Group::_nil(); myGroupOnGeom = SMESH::SMESH_GroupOnGeom::_nil(); @@ -509,7 +511,9 @@ void SMESHGUI_GroupDlg::init (SMESH::SMESH_Mesh_ptr theMesh) //================================================================================= void SMESHGUI_GroupDlg::init (SMESH::SMESH_GroupBase_ptr theGroup) { + restoreShowEntityMode(); myMesh = theGroup->GetMesh(); + setShowEntityMode(); myName->setText(theGroup->GetName()); myName->home(false); @@ -629,8 +633,9 @@ void SMESHGUI_GroupDlg::onTypeChanged (int id) myElements->clear(); if (myCurrentLineEdit == 0) setSelectionMode(id); + myTypeId = id; + setShowEntityMode(); } - myTypeId = id; } //================================================================================= @@ -994,7 +999,8 @@ void SMESHGUI_GroupDlg::onObjectSelectionChanged() if (aNbSel != 1 ) { myGroup = SMESH::SMESH_Group::_nil(); - myGroupOnGeom = SMESH::SMESH_GroupOnGeom::_nil(); + myGroupOnGeom = SMESH::SMESH_GroupOnGeom::_nil(); + restoreShowEntityMode(); myMesh = SMESH::SMESH_Mesh::_nil(); updateGeomPopup(); updateButtons(); @@ -1004,7 +1010,9 @@ void SMESHGUI_GroupDlg::onObjectSelectionChanged() Handle(SALOME_InteractiveObject) IO = aList.First(); if (myCreate) { + restoreShowEntityMode(); myMesh = SMESH::IObjectToInterface(IO); + setShowEntityMode(); updateGeomPopup(); if (myMesh->_is_nil()) { @@ -1682,6 +1690,7 @@ void SMESHGUI_GroupDlg::onClose() SMESH::RemoveFilters(); // PAL6938 -- clean all mesh entity filters SMESH::SetPointRepresentation(false); SMESH::SetPickable(); + restoreShowEntityMode(); } mySelectionMgr->clearSelected(); @@ -1986,3 +1995,39 @@ void SMESHGUI_GroupDlg::setDefaultGroupColor() setGroupQColor( aQColor ); } + +//======================================================================= +//function : setShowEntityMode +//purpose : make shown only entity corresponding to my type +//======================================================================= + +void SMESHGUI_GroupDlg::setShowEntityMode() +{ + if ( !myMesh->_is_nil() ) { + if ( SMESH_Actor* actor = SMESH::FindActorByObject(myMesh) ) { + if (!myStoredShownEntity) + myStoredShownEntity = actor->GetEntityMode(); + switch ( myTypeId ) { + case 0: restoreShowEntityMode(); break; + case 1: actor->SetEntityMode( SMESH_Actor::eEdges ); break; + case 2: actor->SetEntityMode( SMESH_Actor::eFaces ); break; + case 3: actor->SetEntityMode( SMESH_Actor::eVolumes ); break; + } + } + } +} + +//======================================================================= +//function : restoreShowEntityMode +//purpose : restore ShowEntity mode of myActor +//======================================================================= + +void SMESHGUI_GroupDlg::restoreShowEntityMode() +{ + if ( myStoredShownEntity && !myMesh->_is_nil() ) { + if ( SMESH_Actor* actor = SMESH::FindActorByObject(myMesh) ) { + actor->SetEntityMode(myStoredShownEntity); + } + } + myStoredShownEntity = 0; +} diff --git a/src/SMESHGUI/SMESHGUI_GroupDlg.h b/src/SMESHGUI/SMESHGUI_GroupDlg.h index f5d9430b5..69c69485c 100644 --- a/src/SMESHGUI/SMESHGUI_GroupDlg.h +++ b/src/SMESHGUI/SMESHGUI_GroupDlg.h @@ -132,6 +132,8 @@ private: void setSelectionMode(int theMode); void updateButtons(); void updateGeomPopup(); + void setShowEntityMode(); + void restoreShowEntityMode(); void setGroupColor( const SALOMEDS::Color& ); SALOMEDS::Color getGroupColor() const; @@ -146,6 +148,7 @@ private: SMESH_Actor* myActor; /* Current mesh actor */ int myGrpTypeId; /* Current group type id : standalone or group on geometry */ int myTypeId; /* Current type id = radio button id */ + int myStoredShownEntity; /* Store ShowEntity mode of myMesh */ QLineEdit* myCurrentLineEdit; /* Current LineEdit */ SVTK_Selector* mySelector; -- 2.30.2