X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_RevolutionDlg.cxx;h=3c0f04bbbadd96df8e6b57dce944aa11a8efc8e9;hp=6e5ccb913b39dcda6f835c7685952f1401cb4a6e;hb=6bac08c1a81f34d3f21c550bd92f83654b2546a5;hpb=b0a908c0d20341651771d0249fb10882f54b2aad diff --git a/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx b/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx index 6e5ccb913..3c0f04bbb 100644 --- a/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx +++ b/src/SMESHGUI/SMESHGUI_RevolutionDlg.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -516,8 +516,18 @@ bool SMESHGUI_RevolutionDlg::ClickOnApply() aParameters << SpinBox_NbSteps->text(); aParameters << SpinBox_Tolerance->text(); + bool meshHadNewTypeBefore = true; + try { SUIT_OverrideCursor aWaitCursor; + + // is it necessary to switch on the next Display Mode? + SMESH::ElementType newType = (SMESH::ElementType)( SMESH::FACE + GetConstructorId() ); + SMESH::array_of_ElementType_var oldTypes = myMesh->GetTypes(); + meshHadNewTypeBefore = false; + for ( size_t i = 0; i < oldTypes->length() && !meshHadNewTypeBefore; ++i ) + meshHadNewTypeBefore = ( oldTypes[i] >= newType ); + SMESH::SMESH_MeshEditor_var aMeshEditor = myMesh->GetMeshEditor(); myMesh->SetParameters( aParameters.join(":").toLatin1().constData() ); @@ -552,14 +562,30 @@ bool SMESHGUI_RevolutionDlg::ClickOnApply() } catch (...) { } + if ( myActor && !meshHadNewTypeBefore ) + { + unsigned int aMode = myActor->GetEntityMode(); + switch ( GetConstructorId() ) { + case 0-1: // extrude node -> edges + myActor->SetRepresentation(SMESH_Actor::eEdge); + myActor->SetEntityMode( aMode |= SMESH_Actor::eEdges ); break; + case 1-1: // edge -> faces + myActor->SetRepresentation(SMESH_Actor::eSurface); + myActor->SetEntityMode( aMode |= SMESH_Actor::eFaces ); break; + case 2-1: // faces -> volumes + myActor->SetRepresentation(SMESH_Actor::eSurface); + myActor->SetEntityMode( aMode |= SMESH_Actor::eVolumes ); break; + } + } SMESH::UpdateView(); SMESH::Update(myIO, SMESH::eDisplay); if ( MakeGroupsCheck->isEnabled() && MakeGroupsCheck->isChecked() ) mySMESHGUI->updateObjBrowser(true); // new groups may appear Init(false); - ConstructorsClicked(GetConstructorId()); + mySelectionMgr->clearSelected(); mySelectedObject = SMESH::SMESH_IDSource::_nil(); SelectionIntoArgument(); + ConstructorsClicked(GetConstructorId()); SMESHGUI::Modified(); }