0027349: XtControl_Reader is not thread-safe
[occt.git] / src / QABugs / QABugs_11.cxx
old mode 100755 (executable)
new mode 100644 (file)
index 6ea73da..5c7404a
@@ -1,21 +1,17 @@
 // Created on: 2002-03-20
 // Created by: QA Admin
-// Copyright (c) 2002-2012 OPEN CASCADE SAS
+// Copyright (c) 2002-2014 OPEN CASCADE SAS
 //
-// The content of this file is subject to the Open CASCADE Technology Public
-// License Version 6.5 (the "License"). You may not use the content of this file
-// except in compliance with the License. Please obtain a copy of the License
-// at http://www.opencascade.org and read it completely before using this file.
+// This file is part of Open CASCADE Technology software library.
 //
-// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
-// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
+// This library is free software; you can redistribute it and/or modify it under
+// the terms of the GNU Lesser General Public License version 2.1 as published
+// by the Free Software Foundation, with special exception defined in the file
+// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
+// distribution for complete text of the license and disclaimer of any warranty.
 //
-// The Original Code and all software distributed under the License is
-// distributed on an "AS IS" basis, without warranty of any kind, and the
-// Initial Developer hereby disclaims all such warranties, including without
-// limitation, any warranties of merchantability, fitness for a particular
-// purpose or non-infringement. Please see the License for the specific terms
-// and conditions governing the rights and limitations under the License.
+// Alternatively, this file may be used under the terms of Open CASCADE
+// commercial license or contractual agreement.
 
 #include <stdio.h>
 
@@ -30,6 +26,7 @@
 #include <AIS_Shape.hxx>
 #include <TopoDS_Shape.hxx>
 
+#include <Geom_Surface.hxx>
 #include <Geom_Axis2Placement.hxx>
 #include <gp.hxx>
 #include <gp_Trsf.hxx>
@@ -78,6 +75,7 @@
 #include <TColStd_Array1OfInteger.hxx>
 #include <Geom_BSplineCurve.hxx>
 #include <TColgp_Array1OfPnt.hxx>
+#include <AIS_ColorScale.hxx>
 #include <AIS_ListOfInteractive.hxx>
 #include <AIS_ListIteratorOfListOfInteractive.hxx>
 #include <ViewerTest_DoubleMapOfInteractiveAndName.hxx>
 #include <V3d_View.hxx>
 #include <BRepFeat_SplitShape.hxx>
 #include <BRepAlgoAPI_Section.hxx>
+#include <TColStd_PackedMapOfInteger.hxx>
 
-#include <tcl.h>
-
-#if ! defined(WNT)
+#if ! defined(_WIN32)
 extern ViewerTest_DoubleMapOfInteractiveAndName& GetMapOfAIS();
 #else
 Standard_EXPORT ViewerTest_DoubleMapOfInteractiveAndName& GetMapOfAIS();
@@ -222,30 +219,30 @@ static Standard_Integer OCC136 (Draw_Interpretor& di, Standard_Integer argc, con
   anAISCtx->EraseAll();
 
   //load primitives to context
-  Handle(AIS_Shape) aSh1 = new AIS_Shape(aBox);
+  Handle(AIS_InteractiveObject) aSh1 = new AIS_Shape(aBox);
   anAISCtx->Display(aSh1);
 
-  Handle(AIS_Shape) aSh2 = new AIS_Shape(aSphere);
+  Handle(AIS_InteractiveObject) aSh2 = new AIS_Shape(aSphere);
   anAISCtx->Display(aSh2);
 
-  Handle(AIS_Shape) aSh3 = new AIS_Shape(aCone);
+  Handle(AIS_InteractiveObject) aSh3 = new AIS_Shape(aCone);
   anAISCtx->Display(aSh3);
 
-  Handle(AIS_Shape) aSh4 = new AIS_Shape(aCyl);
+  Handle(AIS_InteractiveObject) aSh4 = new AIS_Shape(aCyl);
   anAISCtx->Display(aSh4);
 
   //set selected
-  anAISCtx->InitCurrent();
-  anAISCtx->AddOrRemoveCurrentObject(aSh1);
-  anAISCtx->AddOrRemoveCurrentObject(aSh2);
-  anAISCtx->AddOrRemoveCurrentObject(aSh3);
-  anAISCtx->AddOrRemoveCurrentObject(aSh4);
+  anAISCtx->InitSelected();
+  anAISCtx->AddOrRemoveSelected(aSh1);
+  anAISCtx->AddOrRemoveSelected(aSh2);
+  anAISCtx->AddOrRemoveSelected(aSh3);
+  anAISCtx->AddOrRemoveSelected(aSh4);
 
   //remove all this objects from context
-  anAISCtx->Clear(aSh1, Standard_False);
-  anAISCtx->Clear(aSh2, Standard_False);
-  anAISCtx->Clear(aSh3, Standard_False);
-  anAISCtx->Clear(aSh4, Standard_False);
+  anAISCtx->Remove (aSh1, Standard_False);
+  anAISCtx->Remove (aSh2, Standard_False);
+  anAISCtx->Remove (aSh3, Standard_False);
+  anAISCtx->Remove (aSh4, Standard_False);
   return 0;
 }
 
@@ -254,7 +251,7 @@ static int BUC60610(Draw_Interpretor& di, Standard_Integer argc, const char ** a
     printf("Usage: %s  iges_input [name]\n",argv[0]);
     return(1);
   }
-  Standard_Character *Ch;
+  Standard_Character *Ch = NULL;
 
   if(argc > 2) {
     Ch = new Standard_Character[strlen(argv[2])+3];
@@ -280,53 +277,6 @@ static int BUC60610(Draw_Interpretor& di, Standard_Integer argc, const char ** a
   return (1);
 }
 
-static Standard_Integer BUC60661(Draw_Interpretor& di, Standard_Integer argc, const char ** a)
-{
-  if(argc!=2)
-    {
-      di << "Usage : " << a[0] << " file.igs" << "\n";
-      return -1;
-    }
-
-  Handle(AIS_InteractiveContext) myContext = ViewerTest::GetAISContext();
-
-  if(myContext.IsNull()) {
-    di << "use 'vinit' command before " << a[0] << "\n";
-    return -1;
-  }
-
-  // MKV 30.03.05
-#if ((TCL_MAJOR_VERSION > 8) || ((TCL_MAJOR_VERSION == 8) && (TCL_MINOR_VERSION >= 4))) && !defined(USE_NON_CONST)
-  const Standard_Character *DD = Tcl_GetVar(di.Interp(),"Draw_DataDir",TCL_GLOBAL_ONLY);
-#else
-  Standard_Character *DD = Tcl_GetVar(di.Interp(),"Draw_DataDir",TCL_GLOBAL_ONLY);
-#endif
-
-  Standard_Character  *file1 = new Standard_Character [strlen(DD)+strlen(a[1])+2];
-  Sprintf(file1,"%s/%s",DD,a[1]);
-
-  IGESToBRep_Reader reader;
-  Standard_Integer status = reader.LoadFile(file1);
-  if( !status ) {
-    IGESToBRep::Init();
-      reader.TransferRoots();
-      TopoDS_Shape shape = reader.OneShape();
-
-      Handle(AIS_Shape) importedShape = new AIS_Shape(shape);
-
-      Handle(V3d_Viewer) myPView = myContext->CurrentViewer();
-
-      if( ! myPView.IsNull() && (myPView->DefaultVisualization() == V3d_WIREFRAME) )
-       importedShape->SetDisplayMode(AIS_WireFrame);
-      else importedShape->SetDisplayMode(AIS_Shaded);
-      myContext->Display(importedShape);
-    }
-
-  printf("\n End of my  IGES to 3D-viewer *****************>\n");
-  return 0;
-}
-
-
 //====================================================
 //
 // Following code is inserted from
@@ -426,7 +376,7 @@ static int pipe_OCC9 (Draw_Interpretor& di,
                      Standard_Integer n, const char ** a)
 {
   if (n < 6) {
-    di << "Usage: " << a[0] << " result path cur1 cur2 radius [tolerance]" << "\n";
+    di << "Usage: " << a[0] << " result path cur1 cur2 radius [tolerance]\n";
     return 1;
   }
 
@@ -435,7 +385,7 @@ static int pipe_OCC9 (Draw_Interpretor& di,
   for (i=2 ; i<=4; i++) {
     Handle(Geom_Curve) aC = Handle(Geom_Curve)::DownCast( DrawTrSurf::Get(a[i]) );
     if (aC.IsNull()) {
-      di << a[i] << " is not a curve" << "\n";
+      di << a[i] << " is not a curve\n";
       return 1;
     }
     aCurveSeq.Append(aC);
@@ -519,21 +469,21 @@ Standard_Integer  OCC157(Draw_Interpretor& di,
 //static Standard_Integer findplanarsurface(Draw_Interpretor&, Standard_Integer n, const char ** a)
 {
   if (n<3) {
-    di << "bad number of arguments" <<"\n";
+    di << "bad number of arguments\n";
     return 1;
   }
 
   // try to read a shape:
   TopoDS_Shape inputShape=DBRep::Get(a[2]);
   if (inputShape.IsNull() || inputShape.ShapeType() != TopAbs_WIRE) {
-    di << "Invalid input shape"<< "\n";
+    di << "Invalid input shape\n";
     return 1;
   }
   Standard_Real toler = Draw::Atof(a[3]);
   TopoDS_Wire aWire = TopoDS::Wire(inputShape);
   BRepLib_FindSurface FS(aWire, toler, Standard_True);
   if(FS.Found()) {
-    di<<"OCC157: OK; Planar surface is found"<<"\n";
+    di<<"OCC157: OK; Planar surface is found\n";
     Handle(Geom_Surface) aSurf = FS.Surface();
     BRepBuilderAPI_MakeFace aMakeFace(aSurf,aWire,Standard_True);
     if(aMakeFace.IsDone()) {
@@ -576,7 +526,7 @@ Standard_Integer  OCC165(Draw_Interpretor& di ,
  {
    if (n > 2)
      {
-       di <<"Usage : " << a[0] << " [file]"<<"\n";
+       di <<"Usage : " << a[0] << " [file]\n";
        return 1;
      }
        di.Eval ("axo");
@@ -643,7 +593,6 @@ Standard_Integer  OCC165(Draw_Interpretor& di ,
 #include<BRepAlgo_Cut.hxx>
 
 #include<BRepPrimAPI_MakeHalfSpace.hxx>
-#include<Handle_Geom_CartesianPoint.hxx>
 #include<Geom_CartesianPoint.hxx>
 #include<AIS_Point.hxx>
 
@@ -727,7 +676,7 @@ static Standard_Integer OCC305 (Draw_Interpretor& di,Standard_Integer argc, cons
 {
   if (argc != 2)
   {
-    di <<"Usage : " << argv[0] << " file"<<"\n";
+    di <<"Usage : " << argv[0] << " file\n";
     return 1;
   }
   Standard_CString file = argv[1];
@@ -791,12 +740,13 @@ static Standard_Integer OCC166 (Draw_Interpretor& di, Standard_Integer /*argc*/,
 
   BRepPrimAPI_MakeBox aBox(gp_Pnt(0, 0, 0), 100, 100, 100);
   Handle(AIS_Shape) anAISBox = new AIS_Shape(aBox.Shape());
+  myAISContext->SetAutoActivateSelection (Standard_False);
   myAISContext->Display(anAISBox, 1);
-  anAISBox->SetSelectionMode(-1);
   Standard_Integer myLocContInd = myAISContext->OpenLocalContext();
   myAISContext->CloseLocalContext(myLocContInd);
-  Standard_Integer aSelMode = ((Handle(AIS_InteractiveObject)) anAISBox)->SelectionMode();
-  if(aSelMode != -1)
+  TColStd_ListOfInteger anActivatedModes;
+  myAISContext->ActivatedModes (anAISBox, anActivatedModes);
+  if(anActivatedModes.Extent() != 1 || anActivatedModes.First() != -1 )
     return 1;
 
   return 0;
@@ -810,7 +760,7 @@ static Standard_Integer OCC166 (Draw_Interpretor& di, Standard_Integer /*argc*/,
 static Standard_Integer OCC381_Save (Draw_Interpretor& di, Standard_Integer nb, const char ** a)
 {
   if (nb != 2) {
-    di << "Usage: " << a[0] << " Doc" << "\n";
+    di << "Usage: " << a[0] << " Doc\n";
     return 1;
   }
 
@@ -822,23 +772,38 @@ static Standard_Integer OCC381_Save (Draw_Interpretor& di, Standard_Integer nb,
 
   TCollection_ExtendedString theStatusMessage;
   if (!D->IsSaved()) {
-    di << "this document has never been saved" << "\n";
+    di << "this document has never been saved\n";
     return 0;
   }
   PCDM_StoreStatus theStatus = A->Save(D, theStatusMessage);
   if (theStatus != PCDM_SS_OK ) {
     switch ( theStatus ) {
-    case PCDM_SS_DriverFailure: {
-      di << " Could not store , no driver found to make it " <<"\n" ;
-      break ;
-    }
-    case PCDM_SS_WriteFailure: {
-      di << " Write access failure " << "\n" ;
-      break;
-    }
-    case PCDM_SS_Failure: {
-      di << " Write failure " << "\n" ;
-    }
+      case PCDM_SS_DriverFailure: {
+        di << "Error saving document: Could not store , no driver found to make it\n";
+        break ;
+      }
+      case PCDM_SS_WriteFailure: {
+        di << "Error saving document: Write access failure\n";
+        break;
+      }
+      case PCDM_SS_Failure: {
+        di << "Error saving document: Write failure\n" ;
+        break;
+      }
+      case PCDM_SS_Doc_IsNull: {
+        di << "Error saving document: No document to save\n";
+        break ;
+      }
+      case PCDM_SS_No_Obj: {
+        di << "Error saving document: No objects written\n";
+        break;
+      }
+      case PCDM_SS_Info_Section_Error: {
+        di << "Error saving document: Write info section failure\n" ;
+        break;
+      }
+      default:
+          break;
     }
     return 1;
   }
@@ -848,7 +813,7 @@ static Standard_Integer OCC381_Save (Draw_Interpretor& di, Standard_Integer nb,
 static Standard_Integer OCC381_SaveAs (Draw_Interpretor& di, Standard_Integer nb, const char ** a)
 {
   if (nb != 3) {
-    di << "Usage: " << a[0] << " Doc Path" << "\n";
+    di << "Usage: " << a[0] << " Doc Path\n";
     return 1;
   }
 
@@ -863,17 +828,32 @@ static Standard_Integer OCC381_SaveAs (Draw_Interpretor& di, Standard_Integer nb
   PCDM_StoreStatus theStatus = A->SaveAs(D,path, theStatusMessage);
   if (theStatus != PCDM_SS_OK ) {
     switch ( theStatus ) {
-    case PCDM_SS_DriverFailure: {
-      di << " Could not store , no driver found to make it " <<"\n" ;
-      break ;
-    }
-    case PCDM_SS_WriteFailure: {
-      di << " Write access failure " << "\n" ;
-      break;
-    }
-    case PCDM_SS_Failure: {
-      di << " Write failure " << "\n" ;
-    }
+      case PCDM_SS_DriverFailure: {
+        di << "Error saving document: Could not store , no driver found to make it\n";
+        break ;
+      }
+      case PCDM_SS_WriteFailure: {
+        di << "Error saving document: Write access failure\n";
+        break;
+      }
+      case PCDM_SS_Failure: {
+        di << "Error saving document: Write failure\n" ;
+        break;
+      }
+      case PCDM_SS_Doc_IsNull: {
+        di << "Error saving document: No document to save\n";
+        break ;
+      }
+      case PCDM_SS_No_Obj: {
+        di << "Error saving document: No objects written\n";
+        break;
+      }
+      case PCDM_SS_Info_Section_Error: {
+        di << "Error saving document: Write info section failure\n" ;
+        break;
+      }
+      default:
+          break;
     }
     return 1;
   }
@@ -939,10 +919,10 @@ static Standard_Integer OCC309bug (Draw_Interpretor& di, Standard_Integer nb, co
   OSD_Path d = p.CurrentDirectory();
   TCollection_AsciiString s;
   d.SystemName(s);
-  di << "*" <<  s.ToCString() << "*" << "\n";
+  di << "*" <<  s.ToCString() << "*\n";
   d.UpTrek();
   d.SystemName(s);
-  di <<  "*" <<  s.ToCString() <<  "*" <<"\n";
+  di <<  "*" <<  s.ToCString() <<  "*\n";
   return 0;
 }
 
@@ -971,7 +951,7 @@ static Standard_Integer OCC277bug (Draw_Interpretor& di, Standard_Integer nb, co
   //  return 1;
   //}
   if(nb < 1 || nb > 2) {
-    di << "Usage : " << a[0] << " [BRepAlgoAPI/BRepAlgo = 1/0]" << "\n";
+    di << "Usage : " << a[0] << " [BRepAlgoAPI/BRepAlgo = 1/0]\n";
     return 1;
   }
   Standard_Boolean IsBRepAlgoAPI = Standard_True;
@@ -997,14 +977,14 @@ static Standard_Integer OCC277bug (Draw_Interpretor& di, Standard_Integer nb, co
 //#endif
   TopoDS_Shape fuse,comm;
   if (IsBRepAlgoAPI) {
-    di << "fuse = BRepAlgoAPI_Fuse( shape1, shape2 )" <<"\n";
-    di << "comm = BRepAlgoAPI_Common( shape1, shape2 )" <<"\n";
+    di << "fuse = BRepAlgoAPI_Fuse( shape1, shape2 )\n";
+    di << "comm = BRepAlgoAPI_Common( shape1, shape2 )\n";
     fuse = BRepAlgoAPI_Fuse( shape1, shape2 );
     comm = BRepAlgoAPI_Common( shape1, shape2 );
   } else {
-    di << "fuse = BRepAlgo_Fuse( shape1, shape2 )" <<"\n";
+    di << "fuse = BRepAlgo_Fuse( shape1, shape2 )\n";
     fuse = BRepAlgo_Fuse( shape1, shape2 );
-    di << "comm = BRepAlgo_Common( shape1, shape2 )" <<"\n";
+    di << "comm = BRepAlgo_Common( shape1, shape2 )\n";
     comm = BRepAlgo_Common( shape1, shape2 );
   }
 
@@ -1016,22 +996,22 @@ static Standard_Integer OCC277bug (Draw_Interpretor& di, Standard_Integer nb, co
 static Standard_Integer OCC333bug (Draw_Interpretor& di, Standard_Integer n, const char ** a)
 {
   if( n < 3) {
-    di<<"-1"<<"\n";
-    di << "Usage: " << a[0] << " edge1 edge2 [toler domaindist]" << "\n";
+    di<<"-1\n";
+    di << "Usage: " << a[0] << " edge1 edge2 [toler domaindist]\n";
     return 1;
   }
   TopoDS_Shape Sh1 = DBRep::Get(a[1]);
   TopoDS_Shape Sh2 = DBRep::Get(a[2]);
   if(Sh1.IsNull() || Sh2.IsNull()) {
-    di<<"-2"<<"\n";
-    di<<"Invalid arguments"<<"\n";
+    di<<"-2\n";
+    di<<"Invalid arguments\n";
     return 1;
   }
   TopoDS_Edge e1 = TopoDS::Edge(Sh1);
   TopoDS_Edge e2 = TopoDS::Edge(Sh2);
   if(e1.IsNull() || e2.IsNull()) {
-    di<<"-3"<<"\n";
-    di<<"Invalid type of arguments"<<"\n";
+    di<<"-3\n";
+    di<<"Invalid type of arguments\n";
     return 1;
   }
   Standard_Real aTol = Precision::Confusion();
@@ -1045,17 +1025,17 @@ static Standard_Integer OCC333bug (Draw_Interpretor& di, Standard_Integer n, con
   ShapeAnalysis_Edge sae;
   if(sae.CheckOverlapping(e1,e2,aTol,aDistDomain)) {
     if(aDistDomain ==0.0) {
-      di<<"1"<<"\n";
-      di<<"Edges is overlaping comletly"<<"\n";
+      di<<"1\n";
+      di<<"Edges is overlaping comletly\n";
     } else {
-      di<<"2"<<"\n";
-      di<<"Edges is overlaped"<<"\n";
+      di<<"2\n";
+      di<<"Edges is overlaped\n";
       di<<"with tolerance = "<<aTol<<"\n";
       di<<"on segment length = "<<aDistDomain<<"\n";
     }
   } else {
-    di<<"3"<<"\n";
-    di<<"Edges is not overlaped"<<"\n";
+    di<<"3\n";
+    di<<"Edges is not overlaped\n";
   }
   return 0;
 }
@@ -1235,8 +1215,8 @@ static Standard_Integer OCC377 (Draw_Interpretor& di, Standard_Integer argc, con
       di << "Reversed Wire " << i << ": point ( " << p2d.X() << ", " << p2d.Y() << " ) is " << TmpString.ToCString() << "\n";
 
       // 4.3. Compare results (they must be same)
-      if(stat1 ==stat2) di << "OCC377 OK" << "\n";
-      else {di << "OCC377 FAULTY" << "\n"; return 0;}
+      if(stat1 ==stat2) di << "OCC377 OK\n";
+      else {di << "OCC377 FAULTY\n"; return 0;}
     }
   }
   catch(Standard_Failure)
@@ -1371,7 +1351,11 @@ static Standard_Integer OCC369(Draw_Interpretor& di, Standard_Integer argc, cons
     if(aShape.IsNull()) {di << "OCC369 FAULTY. Entry shape is NULL \n"; return 0;}
 
     // 3. Build mesh
-    BRepMesh_IncrementalMesh aMesh(aShape, 0.2, Standard_True, M_PI/6);
+    BRepMesh_FastDiscret::Parameters aMeshParams;
+    aMeshParams.Relative = Standard_True;
+    aMeshParams.Deflection = 0.2;
+    aMeshParams.Angle = M_PI / 6;
+    BRepMesh_IncrementalMesh aMesh(aShape, aMeshParams);
 
   }
   catch (Standard_Failure) {di << "OCC369 Exception \n" ;return 0;}
@@ -1417,6 +1401,9 @@ static Standard_Integer OCC524 (Draw_Interpretor& di, Standard_Integer argc, con
   di << aSStream1;
   di<<"\n";
 
+  if (Matrix.RowNumber() > 1) {
+    Matrix(Matrix.LowerRow() + 1, Matrix.LowerCol()) += 1.;
+  }
   Vector2.TMultiply(Vector, Matrix);
 
   //Vector2.Dump(cout);
@@ -1468,7 +1455,7 @@ static Standard_Integer OCC578 (Draw_Interpretor& di, Standard_Integer argc, con
   //  return 1;
   //}
   if(argc < 4 || argc > 5) {
-    di << "Usage : " << argv[0] << " shape1 shape2 shape3 [BRepAlgoAPI/BRepAlgo = 1/0]" << "\n";
+    di << "Usage : " << argv[0] << " shape1 shape2 shape3 [BRepAlgoAPI/BRepAlgo = 1/0]\n";
     return 1;
   }
   Standard_Boolean IsBRepAlgoAPI = Standard_True;
@@ -1476,9 +1463,9 @@ static Standard_Integer OCC578 (Draw_Interpretor& di, Standard_Integer argc, con
     Standard_Integer IsB = Draw::Atoi(argv[4]);
     if (IsB != 1) {
       IsBRepAlgoAPI = Standard_False;
-//      di << "Error: There is not BRepAlgo_Fuse class" << "\n";
+//      di << "Error: There is not BRepAlgo_Fuse class\n";
 //      return 1;
-//      di << "Error: There is not BRepAlgo_Cut class" << "\n";
+//      di << "Error: There is not BRepAlgo_Cut class\n";
 //      return 1;
     }
   }
@@ -1553,10 +1540,10 @@ static Standard_Integer OCC578 (Draw_Interpretor& di, Standard_Integer argc, con
 //#endif
   TopoDS_Shape wedge_common;
   if (IsBRepAlgoAPI) {
-    di << "wedge_common = BRepAlgoAPI_Fuse(wedge1a , wedge2a)" <<"\n";
+    di << "wedge_common = BRepAlgoAPI_Fuse(wedge1a , wedge2a)\n";
     wedge_common = BRepAlgoAPI_Fuse(wedge1a , wedge2a);
   } else {
-    di << "wedge_common = BRepAlgo_Fuse(wedge1a , wedge2a)" <<"\n";
+    di << "wedge_common = BRepAlgo_Fuse(wedge1a , wedge2a)\n";
     wedge_common = BRepAlgo_Fuse(wedge1a , wedge2a);
   }
 
@@ -1568,10 +1555,10 @@ static Standard_Integer OCC578 (Draw_Interpretor& di, Standard_Integer argc, con
 //#endif
   TopoDS_Shape sub_etch1;
   if (IsBRepAlgoAPI) {
-    di << "sub_etch1 = BRepAlgoAPI_Cut(substrate, wedge_common)" <<"\n";
+    di << "sub_etch1 = BRepAlgoAPI_Cut(substrate, wedge_common)\n";
     sub_etch1 = BRepAlgoAPI_Cut(substrate, wedge_common);
   } else {
-    di << "sub_etch1 = BRepAlgo_Cut(substrate, wedge_common)" <<"\n";
+    di << "sub_etch1 = BRepAlgo_Cut(substrate, wedge_common)\n";
     sub_etch1 = BRepAlgo_Cut(substrate, wedge_common);
   }
 
@@ -1670,16 +1657,16 @@ static Standard_Integer OCC708 (Draw_Interpretor& di, Standard_Integer argc, con
 {
   Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
   if(aContext.IsNull()) { 
-    di << argv[0] << "ERROR : use 'vinit' command before " << "\n";
+    di << argv[0] << "ERROR : use 'vinit' command before \n";
     return 1;
   }
 
   if ( argc != 2) {
-    di << "ERROR : Usage : " << argv[0] << " shape ; Deactivate the current transformation" << "\n";
+    di << "ERROR : Usage : " << argv[0] << " shape ; Deactivate the current transformation\n";
     return 1;
   }
   
-  Standard_Boolean updateviewer = Standard_True, PutInCollector = Standard_True;
+  Standard_Boolean updateviewer = Standard_True;
 
   ViewerTest_DoubleMapOfInteractiveAndName& aMap = GetMapOfAIS();
   
@@ -1687,19 +1674,19 @@ static Standard_Integer OCC708 (Draw_Interpretor& di, Standard_Integer argc, con
   Handle(AIS_InteractiveObject) AISObj;
 
   if(!aMap.IsBound2(aName)) {
-    di << "Use 'vdisplay' before" << "\n";
+    di << "Use 'vdisplay' before\n";
     return 1;
   } else {
     AISObj = Handle(AIS_InteractiveObject)::DownCast(aMap.Find2(aName));
     if(AISObj.IsNull()){
-      di << argv[1] << " : No interactive object" << "\n";
+      di << argv[1] << " : No interactive object\n";
       return 1;
     } 
-    AISObj->UnsetTransformation();
+    AISObj->ResetTransformation();
     if (!aContext->HasOpenedContext()) {
       aContext->OpenLocalContext();
     }
-    aContext->Erase(AISObj, updateviewer, PutInCollector);
+    aContext->Erase(AISObj, updateviewer);
     aContext->UpdateCurrentViewer();
     aContext->Display(AISObj, updateviewer);
     aContext->UpdateCurrentViewer();
@@ -1718,8 +1705,16 @@ static Standard_Integer OCC670 (Draw_Interpretor& di, Standard_Integer argc, con
     di<<"Usage : " << argv[0] << "\n";
     return -1;
   }
-  TColStd_Array2OfInteger Array2OfInteger(1,1,1,1);
-  Array2OfInteger.SetValue(5,5,55);
+
+  // check that exception initialized without message string can be safely handled and printed
+  try {
+    Standard_OutOfRange::Raise();
+  }
+  catch (Standard_Failure) {
+    std::cout << "Caught successfully: ";
+    Standard_Failure::Caught()->Print (std::cout);
+    std::cout << endl;
+  }
   return 0;
 }
 
@@ -1771,7 +1766,7 @@ static Standard_Integer OCC909 (Draw_Interpretor& di, Standard_Integer argc, con
   TopoDS_Wire awire = TopoDS::Wire(DBRep::Get(argv[1])); //read the wire
   TopoDS_Face aface = TopoDS::Face(DBRep::Get(argv[2])); //read the face
   if (awire.IsNull() || aface.IsNull()) {
-    di << "Null object" << "\n";
+    di << "Null object\n";
     return 1;
   }
 
@@ -1797,7 +1792,7 @@ static Standard_Integer OCC921 (Draw_Interpretor& di, Standard_Integer argc, con
 {
   if (argc != 2)
   {
-    di <<"Usage : " << argv[0] << " face"<<"\n";
+    di <<"Usage : " << argv[0] << " face\n";
     return 1;
   }
   Standard_Real u1, u2, v1, v2;
@@ -1820,7 +1815,7 @@ static Standard_Integer OCC902(Draw_Interpretor& di, Standard_Integer argc, cons
 {
   if (argc != 2)
   {
-    di <<"Usage : " << argv[0] << " expression"<<"\n";
+    di <<"Usage : " << argv[0] << " expression\n";
     return 1;
   }
 
@@ -1878,7 +1873,7 @@ static Standard_Integer OCC1029_AISTransparency (Draw_Interpretor& di,
       return 0;
     }
   }
-  di << arg[0] << " : Error" << "\n";
+  di << arg[0] << " : Error\n";
   return 1;
 }
 
@@ -1911,7 +1906,7 @@ static Standard_Integer OCC1030_AISColor (Draw_Interpretor& di,
       return 0; 
     }
   }
-  di << arg[0] << " : Error" << "\n";
+  di << arg[0] << " : Error\n";
   return 1;
 }
 
@@ -1945,7 +1940,7 @@ static Standard_Integer OCC1031_AISMaterial (Draw_Interpretor& di,
       return 0;
     }
   }
-  di << arg[0] << " : Error" << "\n";
+  di << arg[0] << " : Error\n";
   return 1;
 }
 
@@ -1979,7 +1974,7 @@ static Standard_Integer OCC1032_AISWidth (Draw_Interpretor& di,
       return 0;
     }
   }
-  di << arg[0] << " : Error" << "\n";
+  di << arg[0] << " : Error\n";
   return 1;
 }
 
@@ -2013,7 +2008,7 @@ static Standard_Integer OCC1033_AISMode (Draw_Interpretor& di,
       return 0;
     }
   }
-  di << arg[0] << " : Error" << "\n";
+  di << arg[0] << " : Error\n";
   return 1;
 }
 
@@ -2047,7 +2042,7 @@ static Standard_Integer OCC1034_AISSelectionMode (Draw_Interpretor& di,
       return 0;
     }
   }
-  di << arg[0] << " : Error" << "\n";
+  di << arg[0] << " : Error\n";
   return 1;
 }
 
@@ -2064,7 +2059,7 @@ static Standard_Integer OCC1487 (Draw_Interpretor& di, Standard_Integer argc, co
   //  return -1;
   //}
   if(argc < 5 || argc > 6) {
-    di << "Usage : " << argv[0] << " CylinderVariant(=1/2) cylinder1 cylinder2 cutshape [BRepAlgoAPI/BRepAlgo = 1/0]" << "\n";
+    di << "Usage : " << argv[0] << " CylinderVariant(=1/2) cylinder1 cylinder2 cutshape [BRepAlgoAPI/BRepAlgo = 1/0]\n";
     return 1;
   }
   Standard_Boolean IsBRepAlgoAPI = Standard_True;
@@ -2072,7 +2067,7 @@ static Standard_Integer OCC1487 (Draw_Interpretor& di, Standard_Integer argc, co
     Standard_Integer IsB = Draw::Atoi(argv[5]);
     if (IsB != 1) {
       IsBRepAlgoAPI = Standard_False;
-//      di << "Error: There is not BRepAlgo_Cut class" << "\n";
+//      di << "Error: There is not BRepAlgo_Cut class\n";
 //      return 1;
     }
   }
@@ -2103,10 +2098,10 @@ static Standard_Integer OCC1487 (Draw_Interpretor& di, Standard_Integer argc, co
 //    o_cut_shape = BRepAlgo_Cut (o_mc1.Solid (), o_mc2.Solid ());
 //#endif
     if (IsBRepAlgoAPI) {
-      di << "o_cut_shape = BRepAlgoAPI_Cut (o_mc1.Solid (), o_mc2.Solid ())" <<"\n";
+      di << "o_cut_shape = BRepAlgoAPI_Cut (o_mc1.Solid (), o_mc2.Solid ())\n";
       o_cut_shape = BRepAlgoAPI_Cut (o_mc1.Solid (), o_mc2.Solid ());
     } else {
-      di << "o_cut_shape = BRepAlgo_Cut (o_mc1.Solid (), o_mc2.Solid ())" <<"\n";
+      di << "o_cut_shape = BRepAlgo_Cut (o_mc1.Solid (), o_mc2.Solid ())\n";
       o_cut_shape = BRepAlgo_Cut (o_mc1.Solid (), o_mc2.Solid ());
     }
   } else {
@@ -2123,10 +2118,10 @@ static Standard_Integer OCC1487 (Draw_Interpretor& di, Standard_Integer argc, co
 //    o_cut_shape = BRepAlgo_Cut (o_mc1.Solid (), o_mc2.Solid ());
 //#endif
     if (IsBRepAlgoAPI) {
-      di << "o_cut_shape = BRepAlgoAPI_Cut (o_mc1.Solid (), o_mc2.Solid ())" <<"\n";
+      di << "o_cut_shape = BRepAlgoAPI_Cut (o_mc1.Solid (), o_mc2.Solid ())\n";
       o_cut_shape = BRepAlgoAPI_Cut (o_mc1.Solid (), o_mc2.Solid ());
     } else {
-      di << "o_cut_shape = BRepAlgo_Cut (o_mc1.Solid (), o_mc2.Solid ())" <<"\n";
+      di << "o_cut_shape = BRepAlgo_Cut (o_mc1.Solid (), o_mc2.Solid ())\n";
       o_cut_shape = BRepAlgo_Cut (o_mc1.Solid (), o_mc2.Solid ());
     }
   }
@@ -2156,7 +2151,7 @@ TopoDS_Shape OCC1077_boolbl(BRepAlgoAPI_BooleanOperation& aBoolenaOperation,cons
   TopoDS_Shape ShapeCut = aBoolenaOperation.Shape();
 
 //#ifdef OCC40 
-//  Handle_TopOpeBRepBuild_HBuilder build = aBoolenaOperation.Builder();
+//  Handle(TopOpeBRepBuild_HBuilder) build = aBoolenaOperation.Builder();
 //#endif 
   TopTools_ListIteratorOfListOfShape its;
 
@@ -2222,7 +2217,7 @@ TopoDS_Shape OCC1077_Bug()
   TopoDS_Shape theCylinder3 = BRepPrimAPI_MakeCylinder(gp_Ax2(gp_Pnt(0, - 10, 0),
                                                              gp_Dir(0, 1, 0)), 3, 20).Shape();
   TopoDS_Shape theTmp1 = OCC1077_cut_blend(theCommon,theCylinder1,0.7);
-  Handle_ShapeFix_Shape fixer = new ShapeFix_Shape(theTmp1);
+  Handle(ShapeFix_Shape) fixer = new ShapeFix_Shape(theTmp1);
   fixer->Perform();
   theTmp1 = fixer->Shape();
   TopoDS_Shape theTmp2 = OCC1077_cut_blend(theTmp1,theCylinder2,0.7);
@@ -2239,7 +2234,7 @@ TopoDS_Shape OCC1077_Bug()
 static Standard_Integer OCC1077 (Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
 {
   if(argc < 1 || argc > 2) {
-    di << "Usage : " << argv[0] << " result" << "\n";
+    di << "Usage : " << argv[0] << " result\n";
     return 1;
   }
 
@@ -2258,7 +2253,7 @@ static Standard_Integer OCC5739_UniAbs (Draw_Interpretor& di, Standard_Integer a
 {
   if (argc < 4)
   {
-    di << "Usage : " << argv[0] << " name shape step" << "\n";
+    di << "Usage : " << argv[0] << " name shape step\n";
     return 1;
   }
   const char *name = argv[1];
@@ -2271,7 +2266,7 @@ static Standard_Integer OCC5739_UniAbs (Draw_Interpretor& di, Standard_Integer a
     TopoDS_Shape wire = DBRep::Get(argv[2]);
     if (wire.IsNull() || wire.ShapeType() != TopAbs_WIRE)
     {
-      di << argv[0] <<" Faulty : incorrect 1st parameter, curve or wire expected"<<"\n";
+      di << argv[0] <<" Faulty : incorrect 1st parameter, curve or wire expected\n";
       return 1;
     }
     adapCurve = new BRepAdaptor_CompCurve(TopoDS::Wire(wire));
@@ -2281,7 +2276,7 @@ static Standard_Integer OCC5739_UniAbs (Draw_Interpretor& di, Standard_Integer a
   int res;
   if (!aUni.IsDone())
   {
-    di << argv[0] <<" : fail"<<"\n";
+    di << argv[0] <<" : fail\n";
     res = 1;
   }
   else
@@ -2306,7 +2301,7 @@ static Standard_Integer OCC6046 (Draw_Interpretor& di, Standard_Integer argc, co
 {
   if (argc != 3)
   {
-    di << "Usage : " << argv[0] << " nb_of_vectors size" << "\n";
+    di << "Usage : " << argv[0] << " nb_of_vectors size\n";
     return 1;
   }
 
@@ -2315,7 +2310,7 @@ static Standard_Integer OCC6046 (Draw_Interpretor& di, Standard_Integer argc, co
   Standard_Real val = 10;
   math_Vector **pv = new math_Vector *[nb];
 
-  di<<"creating "<<nb<<" vectors "<<sz<<" elements each..."<<"\n";
+  di<<"creating "<<nb<<" vectors "<<sz<<" elements each...\n";
   Standard_Integer i;
   for (i=0; i < nb; i++) {
     pv[i] = new math_Vector (1, sz, val);
@@ -2325,8 +2320,8 @@ static Standard_Integer OCC6046 (Draw_Interpretor& di, Standard_Integer argc, co
       di<<"\n";
     }
   }
-  di<<" done"<<"\n";
-  di<<"deleting them ..."<<"\n";
+  di<<" done\n";
+  di<<"deleting them ...\n";
   for (i=0; i < nb; i++) {
     delete pv[i];
     if ((i % (nb/10)) == 0) {
@@ -2335,7 +2330,7 @@ static Standard_Integer OCC6046 (Draw_Interpretor& di, Standard_Integer argc, co
       di<<"\n";
     }
   }
-  di<<" done"<<"\n";
+  di<<" done\n";
 
   delete [] pv;
 
@@ -2346,7 +2341,7 @@ static Standard_Integer OCC5698 (Draw_Interpretor& di, Standard_Integer argc, co
 {
   if (argc != 2)
   {
-    di << "Usage : " << argv[0] << " wire" << "\n";
+    di << "Usage : " << argv[0] << " wire\n";
     return 1;
   }
   TopoDS_Shape shape = DBRep::Get(argv[1],TopAbs_WIRE);
@@ -2370,43 +2365,34 @@ static Standard_Integer OCC5698 (Draw_Interpretor& di, Standard_Integer argc, co
   if (error_dist > Precision::Confusion()) {
     //cout.precision(3);
     di<<"error_dist = "<<error_dist<<
-      "  ( "<<error_dist/need_length*100<<" %)"<<"\n";
+      "  ( "<<error_dist/need_length*100<<" %)\n";
     return 0;
   }
-  di<<"OK"<<"\n";
+  di<<"OK\n";
   return 0;
 }
 
-static char sarr[2000];
-static int si=1;
-static int StackOverflow(int i = -1)
+// stack overflow can be successfully handled only on 32-bit Windows
+#if defined(_WIN32) && !defined(_WIN64)
+static int StackOverflow (int i = -1)
 {
   char arr[2000];
-  if (si == 1) {
-    si = 0;
-    memcpy(arr,sarr,2000);
-    arr[1999]=0;
-    int n = strlen(arr), s=0;
-    while (n--)
-      s += StackOverflow(i-1);
-    return i + s + StackOverflow(i-1);
-  }
-  else if (i != 0) {
-    return i + StackOverflow(i-1);
-  }
-  si = 1;
+  memset (arr, 0, sizeof(arr));
+  if (i < 0)
+    StackOverflow(i-1);
   return i;
 }
+#endif
 
-#ifdef WNT
 // this code does not work with optimize mode on Windows
+#if defined(_MSC_VER)
 #pragma optimize( "", off )
 #endif
 static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
 {
   if (argc != 1)
     {
-      di << "Usage : " << argv[0] << "\n";
+      cout << "Usage : " << argv[0] << "\n";
       return 1;
     }
   Standard_Boolean Succes;
@@ -2417,34 +2403,35 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
   {//==== Test Divide ByZero (Integer) ========================================
     try{
       OCC_CATCH_SIGNALS
+      cout << "(Integer) Divide By Zero..." << endl;
       di << "(Integer) Divide By Zero...";
       //cout.flush();
       di << "\n";
       Standard_Integer res, a =4, b = 0 ;
       res = a / b;
-      di << " 4 / 0 = " << res << "  Does not Caught... KO"<< "\n";
+      di << " 4 / 0 = " << res << "  Does not Caught... KO\n";
       Succes = Standard_False;
     }
-#if defined(SOLARIS) || defined(WNT)
+#if defined(SOLARIS) || defined(_WIN32)
     catch(Standard_DivideByZero)
 #else
     catch(Standard_NumericError)
 #endif
     {
-      di << " Ok"<< "\n";
+      di << " Ok\n";
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
       di << " Caught (";
       di << Standard_Failure::Caught()->GetMessageString();
-      di << ")... KO" << "\n";
+      di << ")... KO\n";
       Succes = Standard_False;
     }
 #ifndef NO_CXX_EXCEPTION
     // this case tests if (...) supersedes (Standard_*),
     // the normal behaviour is not
     catch(...) {
-      di<<" unknown exception... (But) Ok"<<"\n";
+      di<<" unknown exception... (But) Ok\n";
     }
 #endif
   }
@@ -2452,27 +2439,29 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
   {//==== Test Divide ByZero (Real) ===========================================
     try{
       OCC_CATCH_SIGNALS
+      cout << "(Real) Divide By Zero..." << endl;
       di << "(Real) Divide By Zero...";
       //cout.flush();
       di << "\n";
       Standard_Real res, a= 4.0, b=0.0;
       res = a / b;
-      di << " 4.0 / 0.0 = " << res << "  Does not Caught... KO"<< "\n";
+      di << " 4.0 / 0.0 = " << res << "  Does not Caught... OK\n";
+    }
+    catch(Standard_DivideByZero) // Solaris, Windows w/o SSE2
+    {
+      di << " KO\n";
       Succes = Standard_False;
     }
-#if defined(SOLARIS) || defined(WNT)
-    catch(Standard_DivideByZero)
-#else
-    catch(Standard_NumericError)
-#endif
+    catch(Standard_NumericError) // Linux, Windows with SSE2
     {
-      di << " Ok"<< "\n";
+      di << " KO\n";
+      Succes = Standard_False;
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
       di << " Caught (";
       di << Standard_Failure::Caught()->GetMessageString();
-      di << ")... KO" << "\n";
+      di << ")... KO\n";
       Succes = Standard_False;
     }
   }
@@ -2480,6 +2469,7 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
   {//==== Test Overflow (Integer) =============================================
     try{
       OCC_CATCH_SIGNALS
+      cout << "(Integer) Overflow..." << endl;
       di << "(Integer) Overflow...";
       //cout.flush();
       di << "\n";
@@ -2487,16 +2477,16 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
       res = i + 1;
       //++++ cout << " -- "<<res<<"="<<i<<"+1   Does not Caught... KO"<< endl;
       //++++ Succes = Standard_False;
-      di << " "<<res<<"="<<i<<"+1  Does not Caught... (But) Ok"<< "\n";
+      di << " "<<res<<"="<<i<<"+1  Does not Caught... (But) Ok\n";
     }
     catch(Standard_Overflow) {
-      di << " Ok"<< "\n";
+      di << " Ok\n";
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
       di << " Caught (";
       di << Standard_Failure::Caught()->GetMessageString();
-      di << ")... KO" << "\n";
+      di << ")... KO\n";
       Succes = Standard_False;
     }
   }
@@ -2504,30 +2494,32 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
   {//==== Test Overflow (Real) ================================================ 
     try{
       OCC_CATCH_SIGNALS
+      cout << "(Real) Overflow..." << endl;
       di << "(Real) Overflow...";
       //cout.flush();
       di << "\n";
       Standard_Real res, r=RealLast();
       res = r * r;
       
-      sin(1.); //this function tests FPU flags and raises signal (tested on LINUX).
+      (void)sin(1.); //this function tests FPU flags and raises signal (tested on LINUX).
 
-      di << "-- "<<res<<"="<<r<<"*"<<r<<"   Does not Caught... KO"<< "\n";
+      di << "-- "<<res<<"="<<r<<"*"<<r<<"   Does not Caught... OK\n";
+    }
+    catch(Standard_Overflow) // Solaris, Windows w/o SSE2
+    {
+      di << " KO\n";
       Succes = Standard_False;
     }
-#if defined(SOLARIS) || defined(WNT)
-    catch(Standard_Overflow)
-#else
-    catch(Standard_NumericError)
-#endif
+    catch(Standard_NumericError) // Linux, Windows with SSE2
     {
-      di << " Ok"<< "\n";
+      di << " KO\n";
+      Succes = Standard_False;
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
       di << " Caught (";
       di << Standard_Failure::Caught()->GetMessageString();
-      di << ")... KO" << "\n";
+      di << ")... KO\n";
       Succes = Standard_False;
     }
   }
@@ -2535,6 +2527,7 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
   {//==== Test Underflow (Real) ===============================================
     try{
       OCC_CATCH_SIGNALS
+      cout << "(Real) Underflow" << endl; // to have message in log even if process crashed
       di << "(Real) Underflow";
       //cout.flush();
       di << "\n";
@@ -2543,21 +2536,23 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
       //res = res + 1.;
       //++++ cout<<"-- "<<res<<"="<<r<<"*"<<r<<"   Does not Caught... KO"<<endl;
       //++++ Succes = Standard_False;
-      di<<" -- "<<res<<"="<<r<<"*"<<r<<"   Does not Caught... (But) Ok"<<"\n";
+      di<<" -- "<<res<<"="<<r<<"*"<<r<<"   Does not Caught... (But) Ok\n";
     }
-#if defined(SOLARIS) || defined(WNT)
-    catch(Standard_Underflow)
-#else
-    catch(Standard_NumericError)
-#endif
+    catch(Standard_Underflow) // could be on Solaris, Windows w/o SSE2
+    {
+      di << " KO\n";
+      Succes = Standard_False;
+    }
+    catch(Standard_NumericError) // could be on Linux, Windows with SSE2
     {
-      di << " Ok"<< "\n";
+      di << " KO\n";
+      Succes = Standard_False;
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
       di << " Caught (";
       di << Standard_Failure::Caught()->GetMessageString();
-      di << ")... KO" << "\n";
+      di << ")... KO\n";
       Succes = Standard_False;
     }
   }
@@ -2565,22 +2560,23 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
   {//==== Test Invalid Operation (Real) ===============================================
     try{
       OCC_CATCH_SIGNALS
+      cout << "(Real) Invalid Operation..." << endl;
       di << "(Real) Invalid Operation...";
       //cout.flush();
       di << "\n";
       Standard_Real res, r=-1;
       res = sqrt(r);
-      di<<" "<<res<<"=sqrt("<<r<<")  Does not Caught... KO"<<"\n";
-      Succes = Standard_False;
+      di<<" "<<res<<"=sqrt("<<r<<")  Does not Caught... OK\n";
     }
     catch(Standard_NumericError) {
-      di << " Ok"<< "\n";
+      di << " KO\n";
+      Succes = Standard_False;
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
       di << " Caught (";
       di << Standard_Failure::Caught()->GetMessageString();
-      di << ")... KO" << "\n";
+      di << ")... KO\n";
       Succes = Standard_False;
     }
   }
@@ -2588,63 +2584,65 @@ static Standard_Integer OCC6143 (Draw_Interpretor& di, Standard_Integer argc, co
   {//==== Test Access Violation ===============================================
     try {
       OCC_CATCH_SIGNALS
+      cout << "Segmentation Fault..." << endl;
       di << "Segmentation Fault...";
       //cout.flush();
       di << "\n";
       int* pint=NULL;
       *pint = 4;
-      di << "  Does not Caught... KO"<<"\n";
+      di << "  Does not Caught... KO\n";
       Succes = Standard_False;
     }
-#ifdef WNT
+#ifdef _WIN32
     catch(OSD_Exception_ACCESS_VIOLATION)
 #else
     catch(OSD_SIGSEGV)
 #endif
     {
-      di << " Ok"<< "\n";
+      di << " Ok\n";
     } catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
       di << " Caught (";
       di << Standard_Failure::Caught()->GetMessageString();
-      di << ")... KO" << "\n";
+      di << ")... KO\n";
       Succes = Standard_False;
     }
   }
 
-#ifdef WNT
+#if defined(_WIN32) && !defined(_WIN64)
   {//==== Test Stack Overflow ===============================================
     try {
       OCC_CATCH_SIGNALS
+      cout << "Stack Overflow..." << endl;
       di << "Stack Overflow...";
       //cout.flush();
       di << "\n";
       StackOverflow();
-      di << "  Does not Caught... KO"<<"\n";
+      di << "  Does not Caught... KO\n";
       Succes = Standard_False;
     }
     catch(OSD_Exception_STACK_OVERFLOW) {
-      di << " Ok"<< "\n";
+      di << " Ok\n";
     }
     catch(Standard_Failure) {
       //cout << " Caught (" << Standard_Failure::Caught() << ")... KO" << endl;
       di << " Caught (";
       di << Standard_Failure::Caught()->GetMessageString();
-      di << ")... KO" << "\n";
+      di << ")... KO\n";
       Succes = Standard_False;
     }
   }
 #endif
 
  if(Succes) {
-   di << "TestExcept: Successfull completion" << "\n";
+   di << "TestExcept: Successfull completion\n";
  } else {
-   di << "TestExcept: failure" << "\n";
+   di << "TestExcept: failure\n";
  }
 
   return 0;
 }
-#ifdef WNT
+#if defined(_MSC_VER)
 #pragma optimize( "", on )
 #endif
 
@@ -2673,7 +2671,7 @@ static Standard_Integer OCC7141 (Draw_Interpretor& di, Standard_Integer argc, co
 
   if (argc > 3)
     {
-      di << "Usage : " << argv[0] << " [nCount] path" << "\n";
+      di << "Usage : " << argv[0] << " [nCount] path\n";
       return 1;
     }
 
@@ -2681,14 +2679,14 @@ static Standard_Integer OCC7141 (Draw_Interpretor& di, Standard_Integer argc, co
     nCount = Draw::Atoi(argv[1]);
     TCollection_AsciiString aFilePath = argv[2];
   STEPCAFControl_Writer writer;
-  Handle_TDocStd_Document document;
+  Handle(TDocStd_Document) document;
   document = new TDocStd_Document("Pace Test-StepExporter-");
-  Handle_XCAFDoc_ShapeTool shapeTool;
+  Handle(XCAFDoc_ShapeTool) shapeTool;
   shapeTool = XCAFDoc_DocumentTool::ShapeTool(document->Main());
   shapeTool->AddShape(AddTestStructure(nCount), Standard_True);
   STEPControl_StepModelType mode = STEPControl_AsIs;
   if (!Interface_Static::SetIVal("write.step.assembly",1)) { //assembly mode
-    di << "Failed to set assembly mode for step data\n" << "\n";
+    di << "Failed to set assembly mode for step data\n\n";
     return 0;
   }
   try {
@@ -2698,14 +2696,14 @@ static Standard_Integer OCC7141 (Draw_Interpretor& di, Standard_Integer argc, co
     }
   }
   catch(OSD_Exception_STACK_OVERFLOW) {
-    di << "Failed : STACK OVERFLOW\n" << "\n";
+    di << "Failed : STACK OVERFLOW\n\n";
   }
   catch (Standard_Failure) {
-    di << "Failed :\n" << "\n";
+    di << "Failed :\n\n";
     //cout << Standard_Failure::Caught() << endl;
     di << Standard_Failure::Caught()->GetMessageString();
   }
-  di << argv[0] << " : Finish" << "\n";
+  di << argv[0] << " : Finish\n";
   
   return 0;
 }
@@ -2757,7 +2755,7 @@ static Standard_Integer OCC8169 (Draw_Interpretor& di, Standard_Integer argc, co
 {
   if (argc != 4)
   {
-    di << "Usage : " << argv[0] << " edge1 edge2 plane" << "\n";
+    di << "Usage : " << argv[0] << " edge1 edge2 plane\n";
     return 1;
   }
   TopoDS_Edge theEdge1 = TopoDS::Edge(DBRep::Get(argv[1],TopAbs_EDGE));
@@ -2796,7 +2794,7 @@ static Standard_Integer OCC8169 (Draw_Interpretor& di, Standard_Integer argc, co
     Standard_Integer i;
     for (i=1; i<=NbPoints; i++) {
       gp_Pnt2d aPi = anInter.Point(i);
-      di << "Point.X(" << i << ") = " << aPi.X() << "   " << "Point.Y(" << i << ") = " << aPi.Y() << "\n" ;
+      di << "Point.X(" << i << ") = " << aPi.X() << "   Point.Y(" << i << ") = " << aPi.Y() << "\n" ;
     }
   }
 
@@ -2812,20 +2810,20 @@ static Standard_Integer OCC8169 (Draw_Interpretor& di, Standard_Integer argc, co
   
     Standard_Real aDist = aP1.Distance(aP2);
   
-    di << "aP1.X() = " << aP1.X() << "   " << "aP1.Y() = " << aP1.Y() << "\n" ;
-    di << "aP2.X() = " << aP2.X() << "   " << "aP2.Y() = " << aP2.Y() << "\n" ;
+    di << "aP1.X() = " << aP1.X() << "   aP1.Y() = " << aP1.Y() << "\n" ;
+    di << "aP2.X() = " << aP2.X() << "   aP2.Y() = " << aP2.Y() << "\n" ;
 
     di << "Distance = " << aDist << "\n" ;
 
     di << "Confusion = " << aConfusion << "\n" ;
 
     if (aDist > aConfusion) {
-      di << "\n" << argv[0] << " Faulty" << "\n" ;
+      di << "\n" << argv[0] << " Faulty\n" ;
     } else {
-      di << "\n" << argv[0] << " OK" << "\n" ;
+      di << "\n" << argv[0] << " OK\n" ;
     }
   } else {
-    di << "\n" << argv[0] << " OK" << "\n" ;
+    di << "\n" << argv[0] << " OK\n" ;
   }
 
   return 0;
@@ -2834,7 +2832,7 @@ static Standard_Integer OCC10138 (Draw_Interpretor& di, Standard_Integer argc, c
 {
   if (argc != 3)
   {
-    di << "Usage : " << argv[0] << " lower upper" << "\n";
+    di << "Usage : " << argv[0] << " lower upper\n";
     return 1;
   }
 
@@ -3044,7 +3042,7 @@ static Standard_Integer OCC7639 (Draw_Interpretor& di, Standard_Integer argc, co
 
   if (argc < 3 || IsEvenArgc)
     {
-      di << "Usage : " << argv[0] << " index1 value1 ... [indexN valueN]" << "\n";
+      di << "Usage : " << argv[0] << " index1 value1 ... [indexN valueN]\n";
       return 1;
     }
 
@@ -3154,18 +3152,6 @@ static Standard_Integer OCC7068 (Draw_Interpretor& di, Standard_Integer argc, co
     }
   }
 
-  // ObjectsInCollector
-  AIS_ListOfInteractive ListOfIO_2;
-  AISContext->ObjectsInCollector(ListOfIO_2);
-  di<< "ObjectsInCollector = " << ListOfIO_2.Extent() <<"\n";
-  if (!ListOfIO_2.IsEmpty() ) {
-    AIS_ListIteratorOfListOfInteractive iter;
-    for (iter.Initialize(ListOfIO_2); iter.More() ; iter.Next() ) {
-      Handle(AIS_InteractiveObject) aIO=iter.Value();
-      di<< GetMapOfAIS().Find1(aIO).ToCString() <<"\n";
-    }
-  }
-
   return 0;
 }
 
@@ -3230,7 +3216,7 @@ Standard_Integer OCC14376(Draw_Interpretor& di, Standard_Integer argc, const cha
   }
   di<<"deflection="<< aDeflection << "\n";
 
-  BRepMesh_IncrementalMesh aIMesh(aShape, aDeflection, Standard_False, M_PI/9.);
+  BRepMesh_IncrementalMesh aIMesh(aShape, aDeflection, Standard_False, M_PI / 9.);
   TopLoc_Location aLocation;
   Handle(Poly_Triangulation) aTriang = BRep_Tool::Triangulation(TopoDS::Face(aShape), aLocation);
 
@@ -4036,7 +4022,7 @@ int TestOpenSave(TCollection_ExtendedString aFile1,
 {
   // Std
   Handle(TDocStd_Document) doc_std, doc_std_open;
-  app->NewDocument("MDTV-Standard", doc_std);
+  app->NewDocument("BinOcaf", doc_std);
   // TDataStd_Tick:
   TDataStd_Tick::Set(doc_std->Main());
   // TDataStd_IntegerList:
@@ -4508,7 +4494,7 @@ static Standard_Integer OCC16782 (Draw_Interpretor& di, Standard_Integer argc, c
   int good = 0;
   
   Handle(TDocStd_Document) doc;
-  app->NewDocument("MDTV-Standard", doc);
+  app->NewDocument("BinOcaf", doc);
   doc->SetUndoLimit(10);
 
   di <<"\nTestSetGet start\n";
@@ -4543,7 +4529,7 @@ static Standard_Integer OCC12584 (Draw_Interpretor& di, Standard_Integer argc, c
 {
   Handle(AIS_InteractiveContext) aContext = ViewerTest::GetAISContext();
   if(aContext.IsNull()) { 
-    di << argv[0] << " ERROR : use 'vinit' command before " << "\n";
+    di << argv[0] << " ERROR : use 'vinit' command before \n";
     return -1;
   }
 
@@ -4563,21 +4549,37 @@ static Standard_Integer OCC12584 (Draw_Interpretor& di, Standard_Integer argc, c
     return 1;
   }
   Handle(V3d_View) V = ViewerTest::CurrentView();
+  static Handle(AIS_ColorScale) aCS;
+  if (aCS.IsNull())
+  {
+    aCS = new AIS_ColorScale();
+  }
+  if (aCS->ZLayer() != Graphic3d_ZLayerId_TopOSD)
+  {
+    aCS->SetZLayer (Graphic3d_ZLayerId_TopOSD);
+  }
+  if (aCS->GetTransformPersistenceMode() != Graphic3d_TMF_2d)
+  {
+    aCS->SetTransformPersistence (Graphic3d_TMF_2d, gp_Pnt (-1,-1,0));
+  }
+  Standard_Integer aWinWidth, aWinHeight;
+  V->Window()->Size (aWinWidth, aWinHeight);
+  aCS->SetSize (aWinWidth, aWinHeight);
   if ( !V.IsNull() ) {
     if (mode == 0) {
-      V->ColorScaleDisplay();
+      aContext->Display (aCS);
     }
     if (mode == 1) {
-      V->ColorScaleErase();
+      aContext->Erase (aCS);
       V->UpdateLights();
       V->Update();
     }
     if (mode == 2) {
-      Standard_Boolean IsDisplayed = V->ColorScaleIsDisplayed();
+      Standard_Boolean IsDisplayed = aContext->IsDisplayed (aCS);
       if (IsDisplayed)
-       di <<"ColorScaleIsDisplayed = " << "1" << "\n";
+       di <<"ColorScaleIsDisplayed = 1\n";
       else
-       di <<"ColorScaleIsDisplayed = " << "0" << "\n";
+       di <<"ColorScaleIsDisplayed = 0\n";
     }
   }
   return 0;
@@ -4639,8 +4641,8 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
   progress->Show();
 
   if (readstat != IFSelect_RetDone) {
-    if (modfic) di<<"Could not read file "<<fnom.ToCString()<<" , abandon"<<"\n";
-    else di<<"No model loaded"<<"\n";
+    if (modfic) di<<"Could not read file "<<fnom.ToCString()<<" , abandon\n";
+    else di<<"No model loaded\n";
     return 1;
   }
 // Choice of treatment
@@ -4663,25 +4665,25 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
     }
 
     if (modepri == 0) {  //fin
-      di << "Bye and good luck! " << "\n";
+      di << "Bye and good luck! \n";
       break;
     } 
 
     else if (modepri <= 2) {  // 1 : Visible Roots, 2 : All Roots
-      di << "All Geometry Transfer"<<"\n";
-      di<<"spline_continuity (read) : "<<Interface_Static::IVal("read.iges.bspline.continuity")<<" (0 : no modif, 1 : C1, 2 : C2)"<<"\n";
-      di<<"  To modify : command  param read.iges.bspline.continuity"<<"\n";
+      di << "All Geometry Transfer\n";
+      di<<"spline_continuity (read) : "<<Interface_Static::IVal("read.iges.bspline.continuity")<<" (0 : no modif, 1 : C1, 2 : C2)\n";
+      di<<"  To modify : command  param read.iges.bspline.continuity\n";
       Handle(XSControl_WorkSession) thesession = Reader.WS();
       thesession->ClearContext();
-      XSDRAW::SetTransferProcess (thesession->MapReader());
+      XSDRAW::SetTransferProcess (thesession->TransferReader()->TransientProcess());
       progress->NewScope ( 80, "Translation" );
       progress->Show();
-      thesession->MapReader()->SetProgress ( progress );
+      thesession->TransferReader()->TransientProcess()->SetProgress ( progress );
       
       if (modepri == 1) Reader.SetReadVisible (Standard_True);
       Reader.TransferRoots();
       
-      thesession->MapReader()->SetProgress ( 0 );
+      thesession->TransferReader()->TransientProcess()->SetProgress ( 0 );
       progress->EndScope();
       progress->Show();
       // result in only one shape for all the roots
@@ -4700,7 +4702,7 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
       if ( answer == 1 || answer == 3) {
        TopoDS_Shape shape = Reader.OneShape();
        // save the shape
-       if (shape.IsNull()) { di<<"No Shape produced"<<"\n"; continue; }
+       if (shape.IsNull()) { di<<"No Shape produced\n"; continue; }
        char fname[110];
        Sprintf(fname, "%s", rnom.ToCString());
        di << "Saving shape in variable Draw : " << fname << "\n";
@@ -4712,7 +4714,7 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
        catch(Standard_Failure) {
          di << "** Exception : ";
          di << Standard_Failure::Caught()->GetMessageString();
-         di<<" ** Skip"<<"\n";
+         di<<" ** Skip\n";
          di << "Saving shape in variable Draw : " << fname << "\n";
          IGESToBRep::WriteShape (shape,1);
        }
@@ -4723,7 +4725,7 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
        for (Standard_Integer inum = 1; inum <= numshape; inum++) {
          // save all the shapes
          TopoDS_Shape shape = Reader.Shape(inum);
-         if (shape.IsNull()) { di<<"No Shape produced"<<"\n"; continue; }
+         if (shape.IsNull()) { di<<"No Shape produced\n"; continue; }
          char fname[110];
          Sprintf(fname, "%s_%d", rnom.ToCString(),inum);
          di << "Saving shape in variable Draw : " << fname << "\n";
@@ -4735,7 +4737,7 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
          catch(Standard_Failure) {
            di << "** Exception : ";
            di << Standard_Failure::Caught()->GetMessageString();
-           di<<" ** Skip"<<"\n";
+           di<<" ** Skip\n";
          }
        }
       }
@@ -4749,12 +4751,12 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
       cout << " give the number of the Entity : " << flush;
       nent = XSDRAW::GetEntityNumber();
 
-      if (!Reader.TransferOne (nent)) di<<"Transfer entity n0 "<<nent<<" : no result"<<"\n";
+      if (!Reader.TransferOne (nent)) di<<"Transfer entity n0 "<<nent<<" : no result\n";
       else {
        nbs = Reader.NbShapes();
        char shname[30];  Sprintf (shname,"%s_%d",rnom.ToCString(),nent);
        di<<"Transfer entity n0 "<<nent<<" OK  -> DRAW Shape: "<<shname<<"\n";
-       di<<"Now, "<<nbs<<" Shapes produced"<<"\n";
+       di<<"Now, "<<nbs<<" Shapes produced\n";
        TopoDS_Shape sh = Reader.Shape(nbs);
        DBRep::Set (shname,sh);
       }
@@ -4769,20 +4771,20 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
 //   *r donne xst-model-roots (TOUTES racines)
 
       if( fromtcl && argv[3][0]=='*' && argv[3][1]=='\0' ) {         
-        di << "All Geometry Transfer"<<"\n";
-        di<<"spline_continuity (read) : "<<Interface_Static::IVal("read.iges.bspline.continuity")<<" (0 : no modif, 1 : C1, 2 : C2)"<<"\n";
-        di<<"  To modify : command  param read.iges.bspline.continuity"<<"\n";
+        di << "All Geometry Transfer\n";
+        di<<"spline_continuity (read) : "<<Interface_Static::IVal("read.iges.bspline.continuity")<<" (0 : no modif, 1 : C1, 2 : C2)\n";
+        di<<"  To modify : command  param read.iges.bspline.continuity\n";
         Handle(XSControl_WorkSession) thesession = Reader.WS();
         thesession->ClearContext();
-        XSDRAW::SetTransferProcess (thesession->MapReader());
+        XSDRAW::SetTransferProcess (thesession->TransferReader()->TransientProcess());
         progress->NewScope ( 80, "Translation" );
         progress->Show();
-        thesession->MapReader()->SetProgress ( progress );
+        thesession->TransferReader()->TransientProcess()->SetProgress ( progress );
       
         Reader.SetReadVisible (Standard_True);
         Reader.TransferRoots();
       
-        thesession->MapReader()->SetProgress ( 0 );
+        thesession->TransferReader()->TransientProcess()->SetProgress ( 0 );
         progress->EndScope();
         progress->Show();
         
@@ -4799,7 +4801,7 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
         catch(Standard_Failure) {
           di << "** Exception : ";
          di << Standard_Failure::Caught()->GetMessageString();
-         di<<" ** Skip"<<"\n";
+         di<<" ** Skip\n";
           di << "Saving shape in variable Draw : " << fname << "\n";
           IGESToBRep::WriteShape (shape,1);
         }                                                                             
@@ -4818,7 +4820,7 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
          list = XSDRAW::GetList (compart.ToCString());
        }
        if (list.IsNull()) {
-          di<<"No list defined. Give a selection name or * for all visible transferrable roots"<<"\n";
+          di<<"No list defined. Give a selection name or * for all visible transferrable roots\n";
           continue;
         }
       }
@@ -4852,28 +4854,28 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
          Standard_Integer nbt = 0;
          Handle(XSControl_WorkSession) thesession = Reader.WS();
        
-         XSDRAW::SetTransferProcess (thesession->MapReader());
+         XSDRAW::SetTransferProcess (thesession->TransferReader()->TransientProcess());
           progress->NewScope ( 80, "Translation" );
           progress->Show();
-          thesession->MapReader()->SetProgress ( progress );
+          thesession->TransferReader()->TransientProcess()->SetProgress ( progress );
 
           Message_ProgressSentry PSentry ( progress, "Root", 0, nbl, 1 );
          for (Standard_Integer ill = 1; ill <= nbl && PSentry.More(); ill ++, PSentry.Next()) {
          
            nent = Reader.Model()->Number(list->Value(ill));
            if (nent == 0) continue;
-           if (!Reader.TransferOne(nent)) di<<"Transfer entity n0 "<<nent<<" : no result"<<"\n";
+           if (!Reader.TransferOne(nent)) di<<"Transfer entity n0 "<<nent<<" : no result\n";
            else {
              nbs = Reader.NbShapes();
              char shname[30];  Sprintf (shname,"%s_%d",rnom.ToCString(),nbs);
              di<<"Transfer entity n0 "<<nent<<" OK  -> DRAW Shape: "<<shname<<"\n";
-             di<<"Now, "<<nbs<<" Shapes produced"<<"\n";
+             di<<"Now, "<<nbs<<" Shapes produced\n";
              TopoDS_Shape sh = Reader.Shape(nbs);
              DBRep::Set (shname,sh);
               nbt++;
            }
          }
-         thesession->MapReader()->SetProgress ( 0 );
+         thesession->TransferReader()->TransientProcess()->SetProgress ( 0 );
           progress->EndScope();
           progress->Show();
          di<<"Nb Shapes successfully produced : "<<nbt<<"\n";
@@ -4886,8 +4888,8 @@ static Standard_Integer OCC18612igesbrep (Draw_Interpretor& di, Standard_Integer
 
   // *New* 
   //In order to clear memory after IGES reading you could add the following code
-  Handle(XSControl_TransferReader) TR = Reader.WS()->TransferReader();
-  Handle(Transfer_TransientProcess) TP = TR->TransientProcess();
+  const Handle(XSControl_TransferReader) &TR = Reader.WS()->TransferReader();
+  const Handle(Transfer_TransientProcess) &TP = TR->TransientProcess();
   TP->Clear();
   TR->Clear(2);
   Reader.WS()->Model()->Clear();
@@ -4926,7 +4928,7 @@ static Standard_Integer OCC20627 (Draw_Interpretor& di, Standard_Integer argc, c
 {
   if(argc!=2)
     {
-      di << "Usage : " << argv[0] << " MaxNbr" << "\n";
+      di << "Usage : " << argv[0] << " MaxNbr\n";
       return -1;
     }
   Standard_Integer aMaxNbr = Draw::Atoi(argv[1]);
@@ -4949,7 +4951,7 @@ Standard_Integer OCC22762 (Draw_Interpretor& di, Standard_Integer argc, const ch
 {
     if (argc!=7)
        {
-           di << "Wrong number of arguments" << "\n";
+           di << "Wrong number of arguments\n";
            return -1;
        }
     Standard_Real X1_Pnt = Draw::Atof(argv[1]);
@@ -4975,7 +4977,7 @@ Standard_Integer OCC17424 (Draw_Interpretor& di, Standard_Integer argc, const ch
 {
   if(argc!=9)
     {
-      di << "Usage : " << argv[0] << " shape X_Pnt Y_Pnt Z_Pnt X_Dir Y_Dir Z_Dir PInf" << "\n";
+      di << "Usage : " << argv[0] << " shape X_Pnt Y_Pnt Z_Pnt X_Dir Y_Dir Z_Dir PInf\n";
       return -1;
     }
 
@@ -5033,8 +5035,8 @@ Standard_Integer OCC22301 (Draw_Interpretor& di, Standard_Integer argc, const ch
   for (Standard_Integer i = 0; i < 2; i++)
     aPartMask.Add(i);
   
-  di << "aFullMask = 1111" << "\n";
-  di << "aPartMask = 1100" << "\n";
+  di << "aFullMask = 1111\n";
+  di << "aPartMask = 1100\n";
   
   Standard_Boolean isAffected;
   
@@ -5180,7 +5182,7 @@ Standard_Integer OCC22736 (Draw_Interpretor& di, Standard_Integer argc, const ch
   return 0;
 }
 
-Standard_Integer OCC23429(Draw_Interpretor& di,
+Standard_Integer OCC23429(Draw_Interpretor& /*di*/,
                           Standard_Integer narg, const char** a)
 {
   if (narg < 4) return 1;
@@ -5253,12 +5255,14 @@ Standard_Integer CR23403 (Draw_Interpretor& di, Standard_Integer argc, const cha
 
 #include <Quantity_NameOfColor.hxx>
 #include <TopAbs_ShapeEnum.hxx>
+#include <Geom_Curve.hxx>
+#include <AIS_InteractiveObject.hxx>
 Standard_Integer CR23234 (Draw_Interpretor& di, Standard_Integer argc, const char ** argv)
 {
   // Check the command arguments
   if (argc != 2)
   {
-    di <<"Error: "<<argv[0]<<" - invalid number of arguments"<< "\n";
+    di <<"Error: "<<argv[0]<<" - invalid number of arguments\n";
     di << "Usage : " << argv[0] << " mode(0/1)\n";
     return 1; //TCL_ERROR
   }
@@ -5270,7 +5274,7 @@ Standard_Integer CR23234 (Draw_Interpretor& di, Standard_Integer argc, const cha
   Handle(AIS_InteractiveContext) aisContext = ViewerTest::GetAISContext();
   if (aisContext.IsNull())
   {
-    di <<"Error: call 'vinit' first"<< "\n";
+    di <<"Error: call 'vinit' first\n";
     return 1; //TCL_ERROR
   }
 
@@ -5278,13 +5282,13 @@ Standard_Integer CR23234 (Draw_Interpretor& di, Standard_Integer argc, const cha
   {
     aisContext->CloseAllContexts();
     aisContext->RemoveAll(false);
-    aisContext->EraseSelected(false, false);
+    aisContext->EraseSelected(false);
   }
-  aisContext->EraseAll(false,false);
+  aisContext->EraseAll(false);
   Handle(Geom_Axis2Placement) trihedronAxis = new Geom_Axis2Placement(gp::XOY());
   Handle(AIS_Trihedron) trihedron = new AIS_Trihedron(trihedronAxis);
   if (aMode)
-    trihedron->UnsetSelectionMode(); // this line causes an exception on OpenLocalContext
+    aisContext->SetAutoActivateSelection (Standard_False); // if selection must not be activated
   trihedron->SetSize(20);
   trihedron->SetColor(Quantity_NOC_GRAY30);
   trihedron->SetArrowColor(Quantity_NOC_GRAY30);
@@ -5299,7 +5303,7 @@ Standard_Integer CR23234 (Draw_Interpretor& di, Standard_Integer argc, const cha
   aisContext->OpenLocalContext();
   //aisContext->ActivateStandardMode(TopAbs_ShapeEnum::TopAbs_EDGE);
   aisContext->ActivateStandardMode(TopAbs_EDGE);
-  aisContext->SetSensitivity(8);
+  aisContext->SetPixelTolerance(8);
 
   return 0; //TCL_OK
 }
@@ -5314,7 +5318,6 @@ void QABugs::Commands_11(Draw_Interpretor& theCommands) {
 
   theCommands.Add("OCC136", "OCC136", __FILE__, OCC136, group);
   theCommands.Add("BUC60610","BUC60610 iges_input [name]",__FILE__,BUC60610,group);
-  theCommands.Add("BUC60661","BUC60661 file.igs",__FILE__,BUC60661,  group);
 
 //====================================================
 //