]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Fix bug with annotation update.
authorapl <anton.poletaev@opencascade.com>
Tue, 15 Nov 2016 15:33:40 +0000 (18:33 +0300)
committerapl <anton.poletaev@opencascade.com>
Wed, 16 Nov 2016 08:12:03 +0000 (11:12 +0300)
src/GEOMGUI/GEOMGUI_AnnotationMgr.cxx
src/OBJECT/GEOM_Annotation.cxx

index d7e8f32496715468fffab3ba391b95499c12d544..9f085c5d132c3c7044fca66fcf9ca10cb1069f7c 100755 (executable)
@@ -395,6 +395,12 @@ void GEOMGUI_AnnotationMgr::UpdateVisibleAnnotations( const QString& theEntry, S
     SOCC_Prs* aPrs =
       dynamic_cast<SOCC_Prs*> (anIt.value());
 
+    GEOMGUI_AnnotationAttrs::Properties aProperty;
+    GEOM::GEOM_Object_ptr anObject;
+    getObject( theEntry, anIt.key(), anObject, aProperty );
+    TopoDS_Shape aShape = GEOM_Client::get_client().GetShape( GeometryGUI::GetGeomGen(), anObject );
+    gp_Ax3 aShapeLCS = gp_Ax3().Transformed( aShape.Location().Transformation() );
+
     AIS_ListOfInteractive aIObjects;
     aPrs->GetObjects( aIObjects );
     AIS_ListOfInteractive::Iterator aIOIt( aIObjects );
@@ -407,6 +413,24 @@ void GEOMGUI_AnnotationMgr::UpdateVisibleAnnotations( const QString& theEntry, S
         continue;
 
       setDisplayProperties( aPresentation, aView, theEntry );
+
+      if ( !aShape.IsNull() ) {
+
+        gp_Ax3 aShapeLCS = gp_Ax3().Transformed( aShape.Location().Transformation() );
+        GEOMGUI_AnnotationAttrs::SetupPresentation( aPresentation, aProperty, aShapeLCS );
+        if ( aProperty.ShapeType == TopAbs_SHAPE ) {
+          aPresentation->SetHilightShape( aShape );
+        }
+        else if ( aProperty.ShapeIndex > 0 ) {
+          TopTools_IndexedMapOfShape aSubShapeMap;
+          TopExp::MapShapes( aShape, static_cast<TopAbs_ShapeEnum>( aProperty.ShapeType ), aSubShapeMap );
+          if ( aProperty.ShapeIndex <= aSubShapeMap.Extent() ) {
+            aPresentation->SetHilightShape( aSubShapeMap( aProperty.ShapeIndex ) );
+          }
+        }
+      }
+
+      aView->getAISContext()->Redisplay( aPresentation );
     }
   }
   getDisplayer()->UpdateViewer();
index 71d92ddfd1a0e703cb59cf1edb756947529dad6e..1d966bb3d695cfe2e6dc26c6a89b0af073143165 100755 (executable)
@@ -64,7 +64,7 @@ GEOM_Annotation::GEOM_Annotation() : AIS_InteractiveObject()
   SetIsScreenFixed( Standard_False );
   SetAttachPoint( gp_Pnt( 0.0, 0.0, 0.0 ) );
   SetDisplayMode( 0 );
-  SetZLayer( Graphic3d_ZLayerId_Top );
+  SetZLayer( Graphic3d_ZLayerId_Default );
   SetAutoHide( Standard_True );
   SetHilightMode( HighlightAll );
   SetMutable( Standard_True );
@@ -156,7 +156,7 @@ void GEOM_Annotation::SetIsScreenFixed( const Standard_Boolean theIsFixed )
 
   AIS_InteractiveObject::SetTransformPersistence( aPersistence );
 
-  SetZLayer( myIsScreenFixed ? Graphic3d_ZLayerId_Topmost : Graphic3d_ZLayerId_Top );
+  SetZLayer( myIsScreenFixed ? Graphic3d_ZLayerId_Topmost : Graphic3d_ZLayerId_Default );
 
   SetToUpdate();
 
@@ -363,7 +363,7 @@ void GEOM_Annotation::SetDepthCulling( const Standard_Boolean theToEnable )
 // =======================================================================
 void GEOM_Annotation::SetDefaultZLayer()
 {
-  SetZLayer( myIsScreenFixed ? Graphic3d_ZLayerId_Topmost : Graphic3d_ZLayerId_Top );
+  SetZLayer( myIsScreenFixed ? Graphic3d_ZLayerId_Topmost : Graphic3d_ZLayerId_Default );
 
   SetToUpdate();
 }
@@ -906,7 +906,8 @@ void GEOM_Annotation::GEOM_AnnotationOwner::HilightWithColor( const Handle(PrsMg
 
   myPrsSh->SetZLayer ( Selectable()->ZLayer() );
 
-  thePM->Color( Selectable(), theStyle, theMode, NULL, Selectable()->ZLayer() );
+  thePM->Color( Selectable(), theStyle, theMode, NULL, Graphic3d_ZLayerId_Topmost );
+
   thePM->Color( myPrsSh, theStyle, theMode, Selectable(), Graphic3d_ZLayerId_Topmost );
 }