Salome HOME
Copyright update 2021
[modules/geom.git] / src / GEOMBase / GEOMBase.cxx
index 6bae916e32e216e6b31ea0f5b113622f8b26e6ea..257bb3a1e312c2cd1d18da39c216769ac0c494cf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2021  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -307,7 +307,7 @@ Handle(GEOM_AISShape) GEOMBase::ConvertIORinGEOMAISShape(const QString& IOR, boo
             if ( it.Value()->IsInstance( STANDARD_TYPE(GEOM_AISShape) ) ) {
               Handle(GEOM_AISShape) sh = Handle(GEOM_AISShape)::DownCast( it.Value() );
               if ( !sh.IsNull() && sh->hasIO() ) {
-                Handle(SALOME_InteractiveObject) IO = Handle(SALOME_InteractiveObject)::DownCast( sh->getIO() );
+                Handle(SALOME_InteractiveObject) IO = sh->getIO();
                 if ( !IO.IsNull() && IO->hasEntry() && obj->GetID() == IO->getEntry() )
                   shape = sh;
               }
@@ -354,7 +354,7 @@ GEOM_Actor* GEOMBase::ConvertIORinGEOMActor(const QString& IOR, bool onlyInActiv
             if ( a->IsA( "GEOM_Actor" ) ) {
               GEOM_Actor* ga = GEOM_Actor::SafeDownCast( a );
               if ( ga && ga->hasIO() ) {
-                Handle(SALOME_InteractiveObject) IO = Handle(SALOME_InteractiveObject)::DownCast( ga->getIO() );
+                Handle(SALOME_InteractiveObject) IO = ga->getIO();
                 if ( !IO.IsNull() && IO->hasEntry() && obj->GetID() == IO->getEntry() )
                   actor = ga;
               }
@@ -374,7 +374,7 @@ GEOM_Actor* GEOMBase::ConvertIORinGEOMActor(const QString& IOR, bool onlyInActiv
 // purpose  :
 //=======================================================================
 Handle(AIS_InteractiveObject) GEOMBase::GetAIS( const Handle(SALOME_InteractiveObject)& IO,
-                                                bool onlyInActiveView, bool onlyGeom )
+                                                bool onlyInActiveView, bool /*onlyGeom*/ )
 {
   Handle(AIS_InteractiveObject) aisObject;
 
@@ -450,12 +450,11 @@ GEOM::GEOM_Object_ptr GEOMBase::ConvertIOinGEOMObject( const Handle(SALOME_Inter
     SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( SUIT_Session::session()->activeApplication()->activeStudy() );
     if ( study ) {
       _PTR(Study) studyDS = study->studyDS();
-      _PTR(SObject) obj( studyDS->FindObjectID( IO->getEntry() ) );
-      if ( obj ) {
-        CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject( obj );
-        if ( !CORBA::is_nil( corbaObj ) )
+      _PTR(SObject)   obj = studyDS->FindObjectID( IO->getEntry() );
+      if ( GeometryGUI::IsInGeomComponent( obj )) {
+          CORBA::Object_var corbaObj = GeometryGUI::ClientSObjectToObject( obj );
           object = GEOM::GEOM_Object::_narrow( corbaObj );
-      }
+        }
     }
   }
   return object._retn();
@@ -489,7 +488,6 @@ void GEOMBase::ConvertListOfIOInListOfGO( const SALOME_ListIO& IObjects,
   }
 }
 
-
 //=================================================================================
 // function : CreateArrowForLinearEdge()
 // purpose  : Create a cone topology to be used to display an arrow in the middle
@@ -526,7 +524,7 @@ TopoDS_Shape GEOMBase::CreateArrowForLinearEdge( const TopoDS_Shape& shape )
         }
       }
     }
-    catch ( Standard_Failure ) {
+    catch ( Standard_Failure& ) {
       // OCC failures are hard to catch in GUI.
       // This is because of the position for #include <Standard_ErrorHandler.hxx> that is very critical to find
       // in SALOME environment : compilation error !
@@ -747,7 +745,10 @@ bool GEOMBase::GetShape( GEOM::GEOM_Object_ptr object, TopoDS_Shape& shape, cons
   if ( !CORBA::is_nil( object ) ) {
     TopAbs_ShapeEnum stype = (TopAbs_ShapeEnum)( object->GetShapeType() );
     if ( type == TopAbs_SHAPE || type == stype )
-      shape = GEOM_Client::get_client().GetShape(  GeometryGUI::GetGeomGen(), object );
+    {
+      GEOM::GEOM_Gen_var gen = object->GetGen();
+      shape = GEOM_Client::get_client().GetShape( gen, object );
+    }
   }
   return !shape.IsNull();
 }