0028895: Visualization, V3d_View::SetComputedMode() - HLR calculation is performed...
[occt.git] / samples / CSharp / OCCTProxy / OCCTProxy.cpp
index fd7d542..91d4364 100644 (file)
@@ -4,8 +4,6 @@
 //for OCC graphic
 #include <Aspect_DisplayConnection.hxx>
 #include <WNT_Window.hxx>
-#include <Graphic3d.hxx>
-#include <Graphic3d_GraphicDRiver.hxx>
 #include <OpenGl_GraphicDriver.hxx>
 //for object display
 #include <V3d_Viewer.hxx>
 //brep tools
 #include <BRep_Builder.hxx>
 #include <BRepTools.hxx>
-#include <MgtBRep.hxx>
-#include <PTColStd_PersistentTransientMap.hxx>
-//csfdb I/E
-#include <FSD_File.hxx>
-#include <ShapeSchema.hxx>
-#include <Storage_Data.hxx>
-#include <Storage_HSeqOfRoot.hxx>
-#include <Storage_Root.hxx>
 // iges I/E
 #include <IGESControl_Reader.hxx>
 #include <IGESControl_Controller.hxx>
@@ -46,9 +36,6 @@
 #pragma comment(lib, "TKernel.lib")
 #pragma comment(lib, "TKMath.lib")
 #pragma comment(lib, "TKBRep.lib")
-#pragma comment(lib, "PTKernel.lib")
-#pragma comment(lib, "TKPShape.lib")
-#pragma comment(lib, "TKShapeSchema.lib")
 #pragma comment(lib, "TKXSBase.lib")
 #pragma comment(lib, "TKService.lib")
 #pragma comment(lib, "TKV3d.lib")
@@ -85,12 +72,7 @@ public:
       return false;
     }
 
-    TCollection_ExtendedString a3DName("Visu3D");
-    myViewer() = new V3d_Viewer (myGraphicDriver(), a3DName.ToExtString(),"", 1000.0, 
-                                V3d_XposYnegZpos, Quantity_NOC_GRAY30,
-                                V3d_ZBUFFER,V3d_GOURAUD,V3d_WAIT, 
-                                Standard_True, Standard_False);
-
+    myViewer() = new V3d_Viewer (myGraphicDriver());
     myViewer()->SetDefaultLights();
     myViewer()->SetLightOn();
     myView() = myViewer()->CreateView();
@@ -151,6 +133,7 @@ public:
     if (!myView().IsNull())
     {
       myView()->SetComputedMode (Standard_False);
+      myView()->Redraw();
     }
   }
 
@@ -162,6 +145,7 @@ public:
     if (!myView().IsNull())
     {
       myView()->SetComputedMode (Standard_True);
+      myView()->Redraw();
     }
   }
 
@@ -182,7 +166,7 @@ public:
   /// <param name="theZoomFactor">Current zoom</param>
   void Place(int theX, int theY, float theZoomFactor)
   {    
-    Quantity_Factor aZoomFactor = theZoomFactor;
+    Standard_Real aZoomFactor = theZoomFactor;
     if (!myView().IsNull())
     {
       myView()->Place(theX, theY, aZoomFactor);
@@ -240,7 +224,7 @@ public:
   {
     if (!myAISContext().IsNull())
     {
-      myAISContext()->Select(theX1, theY1, theX2, theY2, myView());
+      myAISContext()->Select (theX1, theY1, theX2, theY2, myView(), Standard_True);
     }
   }
 
@@ -251,7 +235,7 @@ public:
   {
     if (!myAISContext().IsNull())
     {
-      myAISContext()->Select();
+      myAISContext()->Select (Standard_True);
     }
   }
 
@@ -262,7 +246,7 @@ public:
   {
     if ((!myAISContext().IsNull()) && (!myView().IsNull()))
     {
-      myAISContext()->MoveTo(theX, theY, myView());
+      myAISContext()->MoveTo (theX, theY, myView(), Standard_True);
     }
   }
 
@@ -273,7 +257,7 @@ public:
   {
     if ((!myAISContext().IsNull()) && (!myView().IsNull()))
     {
-      myAISContext()->ShiftSelect(theX1, theY1, theX2, theY2, myView());
+      myAISContext()->ShiftSelect (theX1, theY1, theX2, theY2, myView(), Standard_True);
     }
   }
 
@@ -284,7 +268,7 @@ public:
   {
     if (!myAISContext().IsNull())
     {
-      myAISContext()->ShiftSelect();
+      myAISContext()->ShiftSelect (Standard_True);
     }
   }
 
@@ -353,7 +337,7 @@ public:
   {
     if (!myView().IsNull())
     {
-      myView()->SetProj(V3d_Xpos);
+      myView()->SetProj(V3d_Yneg);
     }
   }
 
@@ -375,7 +359,7 @@ public:
   {
     if (!myView().IsNull())
     {
-      myView()->SetProj(V3d_Ypos);
+      myView()->SetProj(V3d_Xneg);
     }
   }
 
@@ -386,7 +370,7 @@ public:
   {
     if (!myView().IsNull())
     {
-      myView()->SetProj(V3d_Xneg);
+      myView()->SetProj(V3d_Ypos);
     }
   }
 
@@ -397,7 +381,7 @@ public:
   {
     if (!myView().IsNull())
     {
-      myView()->SetProj(V3d_Yneg);
+      myView()->SetProj(V3d_Xpos);
     }
   }
 
@@ -481,15 +465,15 @@ public:
       aCurrentMode=AIS_Shaded;
     }
 
-    if(myAISContext()->NbCurrents()==0 || myAISContext()->NbSelected()==0)
+    if(myAISContext()->NbSelected()==0)
     {
-       myAISContext()->SetDisplayMode(aCurrentMode);
+       myAISContext()->SetDisplayMode (aCurrentMode, Standard_False);
     }
     else 
     {
-       for(myAISContext()->InitCurrent(); myAISContext()->MoreCurrent(); myAISContext()->NextCurrent())
+       for(myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected())
        {
-         myAISContext()->SetDisplayMode(myAISContext()->Current(), theMode, Standard_False);
+         myAISContext()->SetDisplayMode (myAISContext()->SelectedInteractive(), theMode, Standard_False);
        }
     }
     myAISContext()->UpdateCurrentViewer();
@@ -505,10 +489,11 @@ public:
       return;
     }
     Quantity_Color aCol =  Quantity_Color(theR/255.,theG/255.,theB/255.,Quantity_TOC_RGB);
-    for (;myAISContext()->MoreCurrent ();myAISContext()->NextCurrent ())
+    for (; myAISContext()->MoreSelected(); myAISContext()->NextSelected())
     {
-      myAISContext()->SetColor (myAISContext()->Current(),aCol.Name());
+      myAISContext()->SetColor (myAISContext()->SelectedInteractive(), aCol, Standard_False);
     }
+    myAISContext()->UpdateCurrentViewer();
   }
 
   /// <summary>
@@ -543,18 +528,18 @@ public:
     theRed=255;
     theGreen=255;
     theBlue=255;
-    Handle_AIS_InteractiveObject aCurrent ;
-    Quantity_Color anObjCol;
-    myAISContext()->InitCurrent();
-    if (!myAISContext()->MoreCurrent())
+    Handle(AIS_InteractiveObject) aCurrent ;
+    myAISContext()->InitSelected();
+    if (!myAISContext()->MoreSelected())
     {
       return;
     }
-    aCurrent = myAISContext()->Current();
+    aCurrent = myAISContext()->SelectedInteractive();
     if ( aCurrent->HasColor () ) 
     {
-      anObjCol = myAISContext()->Color(myAISContext()->Current());
-      Quantity_Parameter r1, r2, r3;
+      Quantity_Color anObjCol;
+      myAISContext()->Color (aCurrent, anObjCol);
+      Standard_Real r1, r2, r3;
       anObjCol.Values(r1, r2, r3, Quantity_TOC_RGB);
       theRed=(int)r1*255;
       theGreen=(int)r2*255;
@@ -592,11 +577,9 @@ public:
     {
       return;
     }
-    for(myAISContext()->InitCurrent();myAISContext()->MoreCurrent();myAISContext()->NextCurrent())
-    {
-        myAISContext()->Erase(myAISContext()->Current(),Standard_True);
-    }
-    myAISContext()->ClearCurrents();
+
+    myAISContext()->EraseSelected (Standard_False);
+    myAISContext()->ClearSelected (Standard_True);
   }
 
   /// <summary>
@@ -616,9 +599,9 @@ public:
     {
       return;
     }
-    for ( myAISContext()->InitCurrent(); myAISContext()->MoreCurrent (); myAISContext()->NextCurrent () )
+    for (myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected())
     {
-      myAISContext()->SetMaterial( myAISContext()->Current(), (Graphic3d_NameOfMaterial)theMaterial );
+      myAISContext()->SetMaterial (myAISContext()->SelectedInteractive(), (Graphic3d_NameOfMaterial)theMaterial, Standard_False);
     }
     myAISContext()->UpdateCurrentViewer();
   }
@@ -632,10 +615,11 @@ public:
     {
       return;
     }
-    for( myAISContext()->InitCurrent(); myAISContext()->MoreCurrent(); myAISContext()->NextSelected() )
+    for( myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected() )
     {
-      myAISContext()->SetTransparency( myAISContext()->Current(), ((Standard_Real)theTrans) / 10.0 );
+      myAISContext()->SetTransparency (myAISContext()->SelectedInteractive(), ((Standard_Real)theTrans) / 10.0, Standard_False);
     }
+    myAISContext()->UpdateCurrentViewer();
   }
 
   /// <summary>
@@ -647,8 +631,8 @@ public:
     {
       return false;
     }
-    myAISContext()->InitCurrent();
-    return myAISContext()->MoreCurrent() != Standard_False;
+    myAISContext()->InitSelected();
+    return myAISContext()->MoreSelected() != Standard_False;
   }
 
   /// <summary>
@@ -663,13 +647,13 @@ public:
     int aMode = -1;
     bool OneOrMoreInShading = false;
     bool OneOrMoreInWireframe = false;
-    for (myAISContext()->InitCurrent(); myAISContext()->MoreCurrent(); myAISContext()->NextCurrent())
+    for (myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected())
     {
-      if ( myAISContext()->IsDisplayed( myAISContext()->Current(), 1 ) )
+      if ( myAISContext()->IsDisplayed( myAISContext()->SelectedInteractive(), 1 ) )
       {
         OneOrMoreInShading = true;
       }
-      if ( myAISContext()->IsDisplayed( myAISContext()->Current(), 0 ) )
+      if ( myAISContext()->IsDisplayed( myAISContext()->SelectedInteractive(), 0 ) )
       {
         OneOrMoreInWireframe = true;
       }
@@ -703,8 +687,7 @@ public:
     myView() = myAISContext()->CurrentViewer()->CreateView();
     if (myGraphicDriver().IsNull())
     {
-      Handle(Aspect_DisplayConnection) aDisplayConnection;
-      myGraphicDriver() = Graphic3d::InitGraphicDriver (aDisplayConnection);
+      myGraphicDriver() = new OpenGl_GraphicDriver (Handle(Aspect_DisplayConnection)());
     }
     Handle(WNT_Window) aWNTWindow = new WNT_Window (reinterpret_cast<HWND> (theWnd.ToPointer()));
     myView()->SetWindow(aWNTWindow);
@@ -732,7 +715,7 @@ public:
   /// <summary>
   ///Get AISContext
   /// </summary>
-  Handle_AIS_InteractiveContext GetContext(void)
+  Handle(AIS_InteractiveContext) GetContext(void)
   {
     return myAISContext();
   }
@@ -774,56 +757,8 @@ public:
     {
       return false;
     }
-    if(myAISContext()->HasOpenedContext())
-    {
-      myAISContext()->CloseLocalContext();
-    }
-    myAISContext()->Display(new AIS_Shape(aShape));
-    return true;
-  }
-
-  /// <summary>
-  ///Import Csfdb file
-  /// </summary>
-  /// <param name="theFileName">Name of import file</param>
-  bool ImportCsfdb(char* theFileName)
-  {
-    Standard_CString aFileName = (Standard_CString) theFileName;
-    if ( FSD_File::IsGoodFileType(aFileName) != Storage_VSOk )
-    {
-      return false;
-    }
-
-    FSD_File aFileDriver;
-    TCollection_AsciiString aName( aFileName );
-    if ( aFileDriver.Open( aName, Storage_VSRead ) != Storage_VSOk )
-    {
-      return false;
-    }
-
-    Handle(ShapeSchema) aSchema = new ShapeSchema();
-    Handle(Storage_Data) data  = aSchema->Read( aFileDriver );
-    if ( data->ErrorStatus() != Storage_VSOk )
-    {
-      return false;
-    }
-    aFileDriver.Close();
-
-    Handle(Storage_HSeqOfRoot) aRoots = data->Roots();
-    for ( int i = 1; i <= aRoots->Length() ; i++ )
-    {
-      Handle(Storage_Root) aStorRoot = aRoots->Value( i );
-      Handle(Standard_Persistent) aStandPersistent = aStorRoot->Object();
-      Handle(PTopoDS_HShape) aPShape = Handle(PTopoDS_HShape)::DownCast(aStandPersistent);
-      if ( !aPShape.IsNull() )
-      {
-        PTColStd_PersistentTransientMap aMap;
-        TopoDS_Shape aTShape;
-        MgtBRep::Translate( aPShape, aMap, aTShape, MgtBRep_WithTriangle );
-        myAISContext()->Display(new AIS_Shape(aTShape));
-      }
-    }
 
+    myAISContext()->Display (new AIS_Shape (aShape), Standard_True);
     return true;
   }
 
@@ -852,8 +787,9 @@ public:
           for ( int i = 1; i <= aNbShap; i++ )
           {
             TopoDS_Shape aShape = aReader.Shape( i );
-            myAISContext()->Display(new AIS_Shape(aShape));
+            myAISContext()->Display (new AIS_Shape (aShape), Standard_False);
           }
+          myAISContext()->UpdateCurrentViewer();
         }
       }
     }
@@ -879,7 +815,7 @@ public:
     {
       aReader.TransferRoots();
       TopoDS_Shape aShape = aReader.OneShape();
-      myAISContext()->Display(new AIS_Shape(aShape));
+      myAISContext()->Display (new AIS_Shape (aShape), Standard_False);
     }
     else
     {
@@ -896,14 +832,14 @@ public:
   /// <param name="theFileName">Name of export file</param>
   bool ExportBRep(char* theFileName)
   {
-    myAISContext()->InitCurrent();
-    if (!myAISContext()->MoreCurrent())
+    myAISContext()->InitSelected();
+    if (!myAISContext()->MoreSelected())
     {
       return false;
     }
 
-    Handle_AIS_InteractiveObject anIO = myAISContext()->Current();
-    Handle_AIS_Shape anIS = Handle_AIS_Shape::DownCast(anIO);
+    Handle(AIS_InteractiveObject) anIO = myAISContext()->SelectedInteractive();
+    Handle(AIS_Shape) anIS = Handle(AIS_Shape)::DownCast(anIO);
     return BRepTools::Write (anIS->Shape(), (Standard_CString)theFileName) != Standard_False;
   }
 
@@ -916,10 +852,10 @@ public:
     STEPControl_StepModelType aType = STEPControl_AsIs;
     IFSelect_ReturnStatus aStatus;
     STEPControl_Writer aWriter;
-    for ( myAISContext()->InitCurrent(); myAISContext()->MoreCurrent(); myAISContext()->NextCurrent() )
+    for ( myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected() )
     {
-      Handle_AIS_InteractiveObject anIO = myAISContext()->Current();
-      Handle_AIS_Shape anIS=Handle_AIS_Shape::DownCast(anIO);
+      Handle(AIS_InteractiveObject) anIO = myAISContext()->SelectedInteractive();
+      Handle(AIS_Shape) anIS=Handle(AIS_Shape)::DownCast(anIO);
       TopoDS_Shape aShape = anIS->Shape();
       aStatus = aWriter.Transfer( aShape , aType );
       if ( aStatus != IFSelect_RetDone )
@@ -947,10 +883,10 @@ public:
     IGESControl_Writer aWriter( Interface_Static::CVal( "XSTEP.iges.unit" ),
       Interface_Static::IVal( "XSTEP.iges.writebrep.mode" ) );
 
-    for ( myAISContext()->InitCurrent(); myAISContext()->MoreCurrent(); myAISContext()->NextCurrent() )
+    for ( myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected() )
     {
-      Handle_AIS_InteractiveObject anIO = myAISContext()->Current();
-      Handle_AIS_Shape anIS=Handle_AIS_Shape::DownCast(anIO);
+      Handle(AIS_InteractiveObject) anIO = myAISContext()->SelectedInteractive();
+      Handle(AIS_Shape) anIS=Handle(AIS_Shape)::DownCast(anIO);
       TopoDS_Shape aShape = anIS->Shape();
       aWriter.AddShape ( aShape );
     }
@@ -969,10 +905,10 @@ public:
     BRep_Builder aBuilder;
     aBuilder.MakeCompound( aRes );
 
-    for ( myAISContext()->InitCurrent(); myAISContext()->MoreCurrent(); myAISContext()->NextCurrent() )
+    for ( myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected() )
     {
-      Handle_AIS_InteractiveObject anIO = myAISContext()->Current();
-      Handle_AIS_Shape anIS=Handle_AIS_Shape::DownCast(anIO);
+      Handle(AIS_InteractiveObject) anIO = myAISContext()->SelectedInteractive();
+      Handle(AIS_Shape) anIS=Handle(AIS_Shape)::DownCast(anIO);
       TopoDS_Shape aShape = anIS->Shape();
       if ( aShape.IsNull() )
       {
@@ -998,10 +934,10 @@ public:
     BRep_Builder aBuilder;
     aBuilder.MakeCompound( aComp );
 
-    for ( myAISContext()->InitCurrent(); myAISContext()->MoreCurrent(); myAISContext()->NextCurrent() )
+    for ( myAISContext()->InitSelected(); myAISContext()->MoreSelected(); myAISContext()->NextSelected() )
     {
-      Handle_AIS_InteractiveObject anIO = myAISContext()->Current();
-      Handle_AIS_Shape anIS=Handle_AIS_Shape::DownCast(anIO);
+      Handle(AIS_InteractiveObject) anIO = myAISContext()->SelectedInteractive();
+      Handle(AIS_Shape) anIS=Handle(AIS_Shape)::DownCast(anIO);
       TopoDS_Shape aShape = anIS->Shape();
       if ( aShape.IsNull() ) 
       {
@@ -1040,12 +976,9 @@ public:
         isResult = ImportBrep(aFilename);
         break;
       case 1:
-        isResult = ImportCsfdb(aFilename);
-        break;
-      case 2:
         isResult = ImportStep(aFilename);
         break;
-      case 3:
+      case 2:
         isResult = ImportIges(aFilename);
         break;
       default:
@@ -1059,19 +992,19 @@ public:
       case 0:
         isResult = ExportBRep(aFilename);
         break;
-      case 2:
+      case 1:
         isResult = ExportStep(aFilename);
         break;
-      case 3:
+      case 2:
         isResult = ExportIges(aFilename);
         break;
-      case 4:
+      case 3:
         isResult = ExportVrml(aFilename);
         break;
-      case 5:
+      case 4:
         isResult = ExportStl(aFilename);
         break;
-      case 6:
+      case 5:
         isResult = Dump(aFilename);
         break;
       default:
@@ -1094,8 +1027,8 @@ public:
 
 private:
   // fields
-  NCollection_Haft<Handle_V3d_Viewer> myViewer;
-  NCollection_Haft<Handle_V3d_View> myView;
-  NCollection_Haft<Handle_AIS_InteractiveContext> myAISContext;
-  NCollection_Haft<Handle_Graphic3d_GraphicDriver> myGraphicDriver;
+  NCollection_Haft<Handle(V3d_Viewer)> myViewer;
+  NCollection_Haft<Handle(V3d_View)> myView;
+  NCollection_Haft<Handle(AIS_InteractiveContext)> myAISContext;
+  NCollection_Haft<Handle(OpenGl_GraphicDriver)> myGraphicDriver;
 };