Salome HOME
52223: TC7.3.0:Automatically create groups for MED export does not
[modules/smesh.git] / src / SMESHGUI / SMESHGUI.cxx
index 17c51c068309f19047c6a579c36e6c5b3295e4e3..6fb58cea1ddc998627ad5579751107b9cb734c47 100644 (file)
         new SalomeApp_CheckFileDlg ( SMESHGUI::desktop(), false, checkBoxes, true, true );
       fd->setWindowTitle( aTitle );
       fd->setNameFilters( filters );
-      fd->selectNameFilter(aDefaultFilter);
-      fd->SetChecked(0,toCreateGroups);
-      fd->SetChecked(1,toFindOutDim);
+      fd->selectNameFilter( aDefaultFilter );
+      fd->SetChecked( toCreateGroups, 0 );
+      fd->SetChecked( toFindOutDim,   1 );
       if ( !anInitialPath.isEmpty() )
         fd->setDirectory( anInitialPath );
       fd->selectFile(aMeshName);
     {
       SMESH::SMESH_GroupBase_var aGroupObject = aListOfGroups[i];
       //SALOMEDS::Color aColor = aGroupObject->GetColor();
-      
+
 #ifdef SIMPLE_AUTOCOLOR   // simplified algorithm for auto-colors
       SALOMEDS::Color aColor = SMESHGUI::getPredefinedUniqueColor();
 #else                     // old algorithm  for auto-colors
     SALOME_ListIO selected;
     if( aSel )
       aSel->selectedObjects( selected );
-    
+
     if ( selected.IsEmpty() ) return;
     SALOME_ListIteratorOfListIO It( selected );
     for ( ; It.More(); It.Next() ) {
     SALOME_ListIO selected;
     if( aSel ) {
       aSel->selectedObjects( selected );
-      
+
       if(selected.Extent()){
         Handle(SALOME_InteractiveObject) anIObject = selected.First();
         _PTR(Study) aStudy = SMESH::GetActiveStudyDocument();
@@ -2065,7 +2065,7 @@ bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh,
     }
     total += nbBalls;
   }
-  
+
   return autoUpdate && !exceeded;
 }
 
@@ -3505,7 +3505,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
                                tr( "NOT_A_VTK_VIEWER" ) );
     }
     break;
-  case 6032: 
+  case 6032:
     OverallMeshQuality();
     break;
   case 9010:
@@ -4044,11 +4044,21 @@ void SMESHGUI::initialize( CAM_Application* app )
   createMenu( 214, viewId, -1 );
 
   // ----- create toolbars --------------
-  int meshTb     = createTool( tr( "TB_MESH" ) ),
-      ctrlTb     = createTool( tr( "TB_CTRL" ) ),
-      addRemTb   = createTool( tr( "TB_ADD_REMOVE" ) ),
-      modifyTb   = createTool( tr( "TB_MODIFY" ) ),
-      dispModeTb = createTool( tr( "TB_DISP_MODE" ) );
+  int meshTb       = createTool( tr( "TB_MESH" ) ),
+      info         = createTool( tr( "TB_INFO" ) ),
+      groupTb      = createTool( tr( "TB_GROUP" ) ),
+      ctrl0dTb     = createTool( tr( "TB_CTRL0D" ) ),
+      ctrl1dTb     = createTool( tr( "TB_CTRL1D" ) ),
+      ctrl2dTb     = createTool( tr( "TB_CTRL2D" ) ),
+      ctrl3dTb     = createTool( tr( "TB_CTRL3D" ) ),
+      addElemTb    = createTool( tr( "TB_ADD" ) ),
+      addNonElemTb = createTool( tr( "TB_ADDNON" ) ),
+      remTb        = createTool( tr( "TB_REM" ) ),
+      renumbTb     = createTool( tr( "TB_RENUMBER" ) ),  
+      transformTb  = createTool( tr( "TB_TRANSFORM" ) ),  
+      modifyTb     = createTool( tr( "TB_MODIFY" ) ),
+      measuremTb     = createTool( tr( "TB_MEASUREM" ) ),
+      dispModeTb   = createTool( tr( "TB_DISP_MODE" ) );
 
   createTool( 702, meshTb );
   createTool( 703, meshTb );
@@ -4060,93 +4070,90 @@ void SMESHGUI::initialize( CAM_Application* app )
   createTool( 711, meshTb );
   createTool( 712, meshTb );
   createTool( 713, meshTb );
-  createTool( separator(), meshTb );
-  createTool( 801, meshTb );
-  createTool( 806, meshTb );
-  createTool( 802, meshTb );
-  createTool( 803, meshTb );
-  //createTool( 815, meshTb );
-  createTool( separator(), meshTb );
-  createTool( 900, meshTb );
+
+  createTool( 801, groupTb );
+  createTool( 806, groupTb );
+  createTool( 802, groupTb );
+  createTool( 803, groupTb );
+
+  createTool( 900, info );
   //createTool( 902, meshTb );
   //createTool( 903, meshTb ); // VSR: issue #0021242 (eliminate "Mesh Element Information" command)
-  createTool( 904, meshTb );
-  createTool( separator(), meshTb );
-
-  createTool( 6005, ctrlTb );
-  createTool( 6028, ctrlTb );
-  createTool( separator(), ctrlTb );
-  createTool( 6002, ctrlTb );
-  createTool( 6003, ctrlTb );
-  createTool( 6001, ctrlTb );
-  createTool( 6004, ctrlTb );
-  createTool( 6029, ctrlTb );
-  createTool( separator(), ctrlTb );
-  createTool( 6021, ctrlTb );
-  createTool( 6025, ctrlTb );
-  createTool( 6027, ctrlTb );
-  createTool( 6018, ctrlTb );
-  createTool( 6019, ctrlTb );
-  createTool( 6011, ctrlTb );
-  createTool( 6012, ctrlTb );
-  createTool( 6013, ctrlTb );
-  createTool( 6014, ctrlTb );
-  createTool( 6015, ctrlTb );
-  createTool( 6016, ctrlTb );
-  createTool( 6022, ctrlTb );
-  createTool( 6030, ctrlTb );
-  createTool( separator(), ctrlTb );
-  createTool( 6017, ctrlTb );
-  createTool( 6009, ctrlTb );
-  createTool( 6023, ctrlTb );
-  createTool( 6024, ctrlTb );
-  createTool( 6026, ctrlTb );
-  createTool( 6031, ctrlTb );
-  createTool( separator(), ctrlTb );
-
-  createTool( 4000, addRemTb );
-  createTool( 4009, addRemTb );
-  createTool( 4070, addRemTb );
-  createTool( 4008, addRemTb );
-  createTool( 4010, addRemTb );
-  createTool( 4021, addRemTb );
-  createTool( 4022, addRemTb );
-  createTool( 4023, addRemTb );
-  createTool( 4031, addRemTb );
-  createTool( 4032, addRemTb );
-  createTool( 4133, addRemTb );
-  createTool( 4134, addRemTb );
-  createTool( 4135, addRemTb );
-  createTool( 4033, addRemTb );
-  createTool( separator(), addRemTb );
-  createTool( 4034, addRemTb );
-  createTool( 4035, addRemTb );
-  createTool( 4137, addRemTb );
-  createTool( 4036, addRemTb );
-  createTool( 4136, addRemTb );
-  createTool( 4037, addRemTb );
-  createTool( 4038, addRemTb );
-  createTool( 4039, addRemTb );
-  createTool( 4040, addRemTb );
-  createTool( 4140, addRemTb );
-  createTool( separator(), addRemTb );
-  createTool( 4041, addRemTb );
-  createTool( 4042, addRemTb );
-  createTool( 4044, addRemTb );
-  createTool( 4043, addRemTb );
-  createTool( separator(), addRemTb );
-  createTool( 4051, addRemTb );
-  createTool( 4052, addRemTb );
-  createTool( separator(), addRemTb );
-  createTool( 4061, addRemTb );
-  createTool( 4062, addRemTb );
-  createTool( 4063, addRemTb );
-  createTool( 4068, addRemTb );
-  createTool( 4064, addRemTb );
-  createTool( 4065, addRemTb );
-  createTool( 4066, addRemTb );
-  createTool( 4069, addRemTb );
-  createTool( separator(), addRemTb );
+  createTool( 904, info );
+
+  createTool( 6005, ctrl0dTb );
+  createTool( 6028, ctrl0dTb );
+
+  createTool( 6002, ctrl1dTb );
+  createTool( 6003, ctrl1dTb );
+  createTool( 6001, ctrl1dTb );
+  createTool( 6004, ctrl1dTb );
+  createTool( 6029, ctrl1dTb );
+
+  createTool( 6021, ctrl2dTb );
+  createTool( 6025, ctrl2dTb );
+  createTool( 6027, ctrl2dTb );
+  createTool( 6018, ctrl2dTb );
+  createTool( 6019, ctrl2dTb );
+  createTool( 6011, ctrl2dTb );
+  createTool( 6012, ctrl2dTb );
+  createTool( 6013, ctrl2dTb );
+  createTool( 6014, ctrl2dTb );
+  createTool( 6015, ctrl2dTb );
+  createTool( 6016, ctrl2dTb );
+  createTool( 6022, ctrl2dTb );
+  createTool( 6030, ctrl2dTb );
+
+  createTool( 6017, ctrl3dTb );
+  createTool( 6009, ctrl3dTb );
+  createTool( 6023, ctrl3dTb );
+  createTool( 6024, ctrl3dTb );
+  createTool( 6026, ctrl3dTb );
+  createTool( 6031, ctrl3dTb );
+
+  createTool( 4000, addElemTb );
+  createTool( 4009, addElemTb );
+  createTool( 4070, addElemTb );
+  createTool( 4008, addElemTb );
+  createTool( 4010, addElemTb );
+  createTool( 4021, addElemTb );
+  createTool( 4022, addElemTb );
+  createTool( 4023, addElemTb );
+  createTool( 4031, addElemTb );
+  createTool( 4032, addElemTb );
+  createTool( 4133, addElemTb );
+  createTool( 4134, addElemTb );
+  createTool( 4135, addElemTb );
+  createTool( 4033, addElemTb );
+
+  createTool( 4034, addNonElemTb );
+  createTool( 4035, addNonElemTb );
+  createTool( 4137, addNonElemTb );
+  createTool( 4036, addNonElemTb );
+  createTool( 4136, addNonElemTb );
+  createTool( 4037, addNonElemTb );
+  createTool( 4038, addNonElemTb );
+  createTool( 4039, addNonElemTb );
+  createTool( 4040, addNonElemTb );
+  createTool( 4140, addNonElemTb );
+
+  createTool( 4041, remTb );
+  createTool( 4042, remTb );
+  createTool( 4044, remTb );
+  createTool( 4043, remTb );
+
+  createTool( 4051, renumbTb );
+  createTool( 4052, renumbTb );
+
+
+  createTool( 4061, transformTb );
+  createTool( 4062, transformTb );
+  createTool( 4063, transformTb );
+  createTool( 4068, transformTb );
+  createTool( 4064, transformTb );
+  createTool( 4065, transformTb );
+  createTool( 4066, transformTb );
+  createTool( 4069, transformTb );
 
   createTool( 4067,modifyTb );
   createTool( 407, modifyTb );
@@ -4164,6 +4171,8 @@ void SMESHGUI::initialize( CAM_Application* app )
   createTool( 417, modifyTb );
   createTool( 418, modifyTb );
 
+  createTool( 501, measuremTb );  
+
   createTool( 214, dispModeTb );
 
   QString lc = "$";        // VSR : instead of QtxPopupSelection::defEquality();
@@ -4507,7 +4516,7 @@ void SMESHGUI::initialize( CAM_Application* app )
   popupMgr()->insert ( action( 6031 ), aSubId, -1 ); // EQUAL_VOLUME
   popupMgr()->setRule( action( 6031 ), aMeshInVtkHasVolumes, QtxPopupMgr::VisibleRule );
   popupMgr()->setRule( action( 6031 ), "controlMode = 'eCoincidentElems3D'", QtxPopupMgr::ToggleRule );
+
   popupMgr()->insert( separator(), anId, -1 );
 
   popupMgr()->insert( action( 201 ), anId, -1 ); // SCALAR_BAR_PROP
@@ -5524,13 +5533,34 @@ void SMESHGUI::storeVisualParameters (int savePoint)
           aPropertyName += gSeparator;
           aPropertyName += QString::number( anId );
 
-          QString aPropertyValue = QString::number( (int)aPlane->GetOrientation() ).toLatin1().constData();
+          QString aPropertyValue = QString::number( (int)aPlane->PlaneMode ).toLatin1().constData();
           aPropertyValue += gDigitsSep;
-          aPropertyValue += QString::number( aPlane->GetDistance() ).toLatin1().constData();
+          aPropertyValue += QString::number( aPlane->IsOpenGLClipping ).toLatin1().constData();
           aPropertyValue += gDigitsSep;
-          aPropertyValue += QString::number( aPlane->myAngle[0] ).toLatin1().constData();
-          aPropertyValue += gDigitsSep;
-          aPropertyValue += QString::number( aPlane->myAngle[1] ).toLatin1().constData();
+          if ( aPlane->PlaneMode == SMESH::Absolute ) {
+            aPropertyValue += QString::number( aPlane->myAbsoluteOrientation ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->X ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->Y ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->Z ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->Dx ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->Dy ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->Dz ).toLatin1().constData();
+          }
+          else if ( aPlane->PlaneMode == SMESH::Relative ) {
+            aPropertyValue += QString::number( (int)aPlane->myRelativeOrientation ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->GetDistance() ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->myAngle[0] ).toLatin1().constData();
+            aPropertyValue += gDigitsSep;
+            aPropertyValue += QString::number( aPlane->myAngle[1] ).toLatin1().constData();
+          }
 
           ip->setProperty( aPropertyName.toStdString(), aPropertyValue.toStdString() );
         }
@@ -5740,9 +5770,13 @@ void SMESHGUI::storeVisualParameters (int savePoint)
 // data structures for clipping planes processing
 typedef struct {
   int Id;
-  vtkIdType Orientation;
+  int Mode;
+  bool isOpenGLClipping;
+  vtkIdType RelativeOrientation;
   double Distance;
   double Angle[2];
+  int AbsoluteOrientation;
+  double X, Y, Z, Dx, Dy, Dz;
 } TPlaneData;
 typedef std::list<TPlaneData>         TPlaneDataList;
 typedef std::map<int, TPlaneDataList> TPlaneDataMap;
@@ -5859,31 +5893,80 @@ void SMESHGUI::restoreVisualParameters (int savePoint)
         continue;
 
       QStringList aPropertyValueList = aPropertyValue.split( gDigitsSep, QString::SkipEmptyParts );
-      if( aPropertyValueList.size() != 4 )
+      if( aPropertyValueList.size() != 6 && aPropertyValueList.size() != 9 )
         continue;
 
       TPlaneData aPlaneData;
       aPlaneData.Id = aClippingPlaneId;
 
       ok = false;
-      aPlaneData.Orientation = aPropertyValueList[0].toInt( &ok );
+      aPlaneData.Mode = aPropertyValueList[0].toInt( &ok );
       if( !ok )
         continue;
-
+      
       ok = false;
-      aPlaneData.Distance = aPropertyValueList[1].toDouble( &ok );
+      aPlaneData.isOpenGLClipping = aPropertyValueList[1].toInt( &ok );
       if( !ok )
         continue;
 
-      ok = false;
-      aPlaneData.Angle[0] = aPropertyValueList[2].toDouble( &ok );
-      if( !ok )
-        continue;
+      if ( (SMESH::Mode)aPlaneData.Mode == SMESH::Absolute )
+      {
+        ok = false;
+        aPlaneData.AbsoluteOrientation = aPropertyValueList[2].toInt( &ok );
+        if( !ok )
+          continue;
 
-      ok = false;
-      aPlaneData.Angle[1] = aPropertyValueList[3].toDouble( &ok );
-      if( !ok )
-        continue;
+        ok = false;
+        aPlaneData.X = aPropertyValueList[3].toDouble( &ok );
+        if( !ok )
+          continue;
+
+        ok = false;
+        aPlaneData.Y = aPropertyValueList[4].toDouble( &ok );
+        if( !ok )
+          continue;
+
+        ok = false;
+        aPlaneData.Z = aPropertyValueList[5].toDouble( &ok );
+        if( !ok )
+          continue;
+
+        ok = false;
+        aPlaneData.Dx = aPropertyValueList[6].toDouble( &ok );
+        if( !ok )
+          continue;
+
+        ok = false;
+        aPlaneData.Dy = aPropertyValueList[7].toDouble( &ok );
+        if( !ok )
+          continue;
+
+        ok = false;
+        aPlaneData.Dz = aPropertyValueList[8].toDouble( &ok );
+        if( !ok )
+          continue;
+      }
+      else if ( (SMESH::Mode)aPlaneData.Mode == SMESH::Relative ) {
+        ok = false;
+        aPlaneData.RelativeOrientation = aPropertyValueList[2].toInt( &ok );
+        if( !ok )
+          continue;
+
+        ok = false;
+        aPlaneData.Distance = aPropertyValueList[3].toDouble( &ok );
+        if( !ok )
+          continue;
+
+        ok = false;
+        aPlaneData.Angle[0] = aPropertyValueList[4].toDouble( &ok );
+        if( !ok )
+          continue;
+
+        ok = false;
+        aPlaneData.Angle[1] = aPropertyValueList[5].toDouble( &ok );
+        if( !ok )
+          continue;
+      }
 
       TPlaneDataList& aPlaneDataList = aPlaneDataMap[ aViewId ];
       aPlaneDataList.push_back( aPlaneData );
@@ -6306,21 +6389,18 @@ void SMESHGUI::restoreVisualParameters (int savePoint)
             // Clipping
             else if (paramNameStr.startsWith("ClippingPlane")) {
               QStringList vals = val.split(gDigitsSep, QString::SkipEmptyParts);
-              // old format - val looks like "Off" or "0:0.5:0:0" (orientation, distance, two angles)
+              // old format - val looks like "Off" or "1:0:0:0.5:0:0" 
+              // (mode(relative), is OpenGL clipping plane, orientation, distance, two angles)
+              // or "0:1:1:10.5:1.0:1.0:15.0:10.0:10.0" 
+              // (mode(absolute), is OpenGL clipping plane, orientation, base point(x, y, z), direction (dx, dy, dz))
               // new format - val looks like "Off" or "0" (plane id)
               // (note: in new format "Off" value is used only for consistency,
               //  so it is processed together with values in old format)
-              bool anIsOldFormat = ( vals.count() == 4 || val == "Off" );
+              bool anIsOldFormat = ( vals.count() == 6 || vals.count() == 9 || val == "Off" );
               if( anIsOldFormat ) {
                 if (paramNameStr == "ClippingPlane1" || val == "Off")
                   aSmeshActor->RemoveAllClippingPlanes();
                 if (val != "Off") {
-                  SMESH::Orientation anOrientation = (SMESH::Orientation)vals[0].toInt();
-                  double aDistance = vals[1].toFloat();
-                  double anAngle[2];
-                  anAngle[0] = vals[2].toFloat();
-                  anAngle[1] = vals[3].toFloat();
-
                   QList<SUIT_ViewManager*> lst;
                   getApp()->viewManagers(viewerTypStr, lst);
                   // SVTK ViewManager always has 1 ViewWindow, so view index is index of view manager
@@ -6332,13 +6412,35 @@ void SMESHGUI::restoreVisualParameters (int savePoint)
 
                     SMESH::TActorList anActorList;
                     anActorList.push_back( aSmeshActor );
-                    SMESH::OrientedPlane* aPlane =
-                      SMESHGUI_ClippingDlg::AddPlane(anActorList, vtkView, anOrientation, aDistance, anAngle);
+                    SMESH::OrientedPlane* aPlane = SMESH::OrientedPlane::New( vtkView );
+                    aPlane->myViewWindow = vtkView;
+                    SMESH::Mode aMode = ( SMESH::Mode )vals[0].toInt();
+                    aPlane->PlaneMode = aMode;
+                    bool isOpenGLClipping = ( bool )vals[1].toInt();
+                    aPlane->IsOpenGLClipping = isOpenGLClipping;
+                    if ( aMode == SMESH::Absolute ) {
+                      aPlane->myAbsoluteOrientation = vals[2].toInt();
+                      aPlane->X = vals[3].toFloat();
+                      aPlane->Y = vals[4].toFloat();
+                      aPlane->Z = vals[5].toFloat();
+                      aPlane->Dx = vals[6].toFloat();
+                      aPlane->Dy = vals[7].toFloat();
+                      aPlane->Dz = vals[8].toFloat();
+                    }
+                    else if ( aMode == SMESH::Relative ) {
+                      aPlane->myRelativeOrientation = (SMESH::Orientation)vals[2].toInt();
+                      aPlane->myDistance = vals[3].toFloat();
+                      aPlane->myAngle[0] = vals[4].toFloat();
+                      aPlane->myAngle[1] = vals[5].toFloat();
+                    }
+
                     if( aPlane ) {
-                      SMESH::ClippingPlaneInfo aClippingPlaneInfo;
-                      aClippingPlaneInfo.Plane = aPlane;
-                      aClippingPlaneInfo.ActorList = anActorList;
-                      aClippingPlaneInfoList.push_back( aClippingPlaneInfo );
+                      if ( SMESHGUI_ClippingDlg::AddPlane( anActorList, aPlane ) ) {
+                        SMESH::ClippingPlaneInfo aClippingPlaneInfo;
+                        aClippingPlaneInfo.Plane = aPlane;
+                        aClippingPlaneInfo.ActorList = anActorList;
+                        aClippingPlaneInfoList.push_back( aClippingPlaneInfo );
+                      }
                     }
                   }
                 }
@@ -6459,23 +6561,40 @@ void SMESHGUI::restoreVisualParameters (int savePoint)
       for( ; anIter4 != aPlaneDataList.end(); anIter4++ ) {
         const TPlaneData& aPlaneData = *anIter4;
         if( aPlaneData.Id == aPlaneId ) {
-          SMESH::OrientedPlane* aPlane =
-            SMESHGUI_ClippingDlg::AddPlane( anActorList,
-                                            aViewWindow,
-                                            (SMESH::Orientation)aPlaneData.Orientation,
-                                            aPlaneData.Distance,
-                                            aPlaneData.Angle );
+          SMESH::OrientedPlane* aPlane = SMESH::OrientedPlane::New( aViewWindow );
+          aPlane->myViewWindow = aViewWindow;
+          aPlane->PlaneMode = (SMESH::Mode)aPlaneData.Mode;
+          aPlane->IsOpenGLClipping = aPlaneData.isOpenGLClipping;
+          if ( aPlane->PlaneMode == SMESH::Absolute ) {
+            aPlane->myAbsoluteOrientation = aPlaneData.AbsoluteOrientation;
+            aPlane->X = aPlaneData.X;
+            aPlane->Y = aPlaneData.Y;
+            aPlane->Z = aPlaneData.Z;
+            aPlane->Dx = aPlaneData.Dx;
+            aPlane->Dy = aPlaneData.Dy;
+            aPlane->Dz = aPlaneData.Dz;
+          }
+          else if ( aPlane->PlaneMode == SMESH::Relative ) {
+            aPlane->myRelativeOrientation = (SMESH::Orientation)aPlaneData.RelativeOrientation;
+            aPlane->myDistance = aPlaneData.Distance;
+            aPlane->myAngle[0] = aPlaneData.Angle[0];
+            aPlane->myAngle[1] = aPlaneData.Angle[1];
+          }
           if( aPlane ) {
-            SMESH::ClippingPlaneInfo aClippingPlaneInfo;
-            aClippingPlaneInfo.Plane = aPlane;
-            aClippingPlaneInfo.ActorList = anActorList;
-            aClippingPlaneInfoList.push_back( aClippingPlaneInfo );
+            if ( SMESHGUI_ClippingDlg::AddPlane( anActorList, aPlane ) ) {
+              SMESH::ClippingPlaneInfo aClippingPlaneInfo;
+              aClippingPlaneInfo.Plane = aPlane;
+              aClippingPlaneInfo.ActorList = anActorList;
+              aClippingPlaneInfoList.push_back( aClippingPlaneInfo );
+            }
           }
           break;
         }
       }
+    
     }
   }
+  
 
   // update all VTK views
   QList<SUIT_ViewManager*> lst;
@@ -6484,6 +6603,14 @@ void SMESHGUI::restoreVisualParameters (int savePoint)
     SUIT_ViewModel* vmodel = (*it)->getViewModel();
     if (vmodel && vmodel->getType() == SVTK_Viewer::Type()) {
       SVTK_ViewWindow* vtkView = (SVTK_ViewWindow*) (*it)->getActiveView();
+      // set OpenGL clipping planes
+      VTK::ActorCollectionCopy aCopy( vtkView->getRenderer()->GetActors() );
+      vtkActorCollection* anAllActors = aCopy.GetActors();
+      anAllActors->InitTraversal();
+      while( vtkActor* aVTKActor = anAllActors->GetNextActor() )
+        if( SMESH_Actor* anActor = SMESH_Actor::SafeDownCast( aVTKActor ) )
+          anActor->SetOpenGLClippingPlane();
+      
       vtkView->getRenderer()->ResetCameraClippingRange();
       vtkView->Repaint();
     }
@@ -6682,7 +6809,6 @@ bool SMESHGUI::renameObject( const QString& entry, const QString& name) {
   return false;
 }
 
-
 SALOMEDS::Color SMESHGUI::getPredefinedUniqueColor()
 {
   static QList<QColor> colors;