Salome HOME
21854: Add persistent dimensions
[modules/geom.git] / src / GEOMGUI / GEOM_Displayer.cxx
index 2683c9603d31901ed8f2525d19ac88ac80c7370e..77138e280a90527597343c81d66ce69f2480760d 100644 (file)
@@ -1100,6 +1100,7 @@ void GEOM_Displayer::updateDimensions( const Handle(SALOME_InteractiveObject)& t
     aStyle->MakeUnitsDisplayed( (Standard_Boolean) isUnitsShown );
     aStyle->MakeText3d( Standard_True );
     aStyle->MakeTextShaded( Standard_True );
+    aStyle->SetExtensionSize( aFontHeight * 0.5 );
     aStyle->TextAspect()->SetHeight( aFontHeight );
     aStyle->ArrowAspect()->SetLength( anArrowLength );
     aStyle->LineAspect()->SetWidth( aLineWidth );
@@ -1107,6 +1108,28 @@ void GEOM_Displayer::updateDimensions( const Handle(SALOME_InteractiveObject)& t
     aStyle->SetTextVerticalPosition( aPrs->DimensionAspect()->TextVerticalPosition() );
     aPrs->SetDimensionAspect( aStyle );
     aPrs->SetPolygonOffsets( Aspect_POM_Fill, -1.0, -1.0 );
+    aPrs->Attributes()->SetDimLengthDisplayUnits( aUnitsLength.toLatin1().data() );
+    aPrs->Attributes()->SetDimAngleDisplayUnits( aUnitsAngle.toLatin1().data() );
+
+    if ( aPrs->IsKind( STANDARD_TYPE(AIS_AngleDimension) ) )
+    {
+      // show degree symbol for dimension instead of label "deg"
+      if ( aUnitsAngle == "deg" )
+      {
+        aPrs->SetSpecialSymbol(0xB0);
+        aPrs->SetDisplaySpecialSymbol( isUnitsShown ? AIS_DSS_After : AIS_DSS_No );
+        aStyle->MakeUnitsDisplayed(Standard_False);
+      }
+      else
+      {
+        aPrs->SetDisplaySpecialSymbol(AIS_DSS_No);
+        aStyle->MakeUnitsDisplayed( (Standard_Boolean) isUnitsShown );
+      }
+    }
+    else
+    {
+      aStyle->MakeUnitsDisplayed( (Standard_Boolean) isUnitsShown );
+    }
 
     aListOfIO.Append( aPrs );
   }