Salome HOME
Issue #1608 : Dimension in sketcher is not always correctly updated
[modules/shaper.git] / src / SketcherPrs / SketcherPrs_Angle.cpp
index 1fb78cb7564de906509ee6db375014279acef1fa..99ac0c247e54fcd4539949978fbe1a406103cf95 100644 (file)
@@ -25,8 +25,6 @@
 #include <TopExp.hxx>
 #include <BRep_Tool.hxx>
 
-#include <Events_Error.h>
-
 #define PI 3.1415926535897932
 
 IMPLEMENT_STANDARD_HANDLE(SketcherPrs_Angle, AIS_AngleDimension);
@@ -37,7 +35,7 @@ SketcherPrs_Angle::SketcherPrs_Angle(ModelAPI_Feature* theConstraint,
 : AIS_AngleDimension(gp_Pnt(0,0,0), gp_Pnt(1,0,0), gp_Pnt(0,1,0)), myConstraint(theConstraint),
   mySketcherPlane(thePlane),
   myFirstPoint(gp_Pnt(0,0,0)), myCenterPoint(gp_Pnt(1,0,0)), mySecondPoint(gp_Pnt(0,1,0)),
-  myAngle(90), myValue("90"), myFlyOutPoint(0, 0.5, 0)
+  myValue(90., false, ""), myFlyOutPoint(0, 0.5, 0)
 {
   myAspect = new Prs3d_DimensionAspect();
   myAspect->MakeArrows3d(false);
@@ -145,9 +143,8 @@ void SketcherPrs_Angle::Compute(const Handle(PrsMgr_PresentationManager3d)& theP
     myCenterPoint = aCenterPoint;
 
     DataPtr aData = myConstraint->data();
-    AttributeDoublePtr aVal = aData->real(SketchPlugin_ConstraintAngle::ANGLE_VALUE_ID());
-    myAngle = aVal->value();
-    myValue = aVal->text();
+    AttributeDoublePtr anAttributeValue = aData->real(SketchPlugin_ConstraintAngle::ANGLE_VALUE_ID());
+    myValue.init(anAttributeValue);
 
     std::shared_ptr<GeomDataAPI_Point2D> aFlyoutAttr = 
                                 std::dynamic_pointer_cast<GeomDataAPI_Point2D>
@@ -193,15 +190,12 @@ void SketcherPrs_Angle::Compute(const Handle(PrsMgr_PresentationManager3d)& theP
     aDist = calculateDistanceToFlyoutPoint();
   SetFlyout(aDist);
 
-  // Angle value is in degrees
-  SetCustomValue(myAngle);
+  // Update text visualization: parameter value or parameter text
+  myStyleListener->updateDimensions(this, myValue);
 
   myAspect->SetExtensionSize(myAspect->ArrowAspect()->Length());
   myAspect->SetArrowTailSize(myAspect->ArrowAspect()->Length());
 
-  // Update text visualization: parameter value or parameter text
-  myStyleListener->updateDimensions(this, myHasParameters, myValue);
-
   AIS_AngleDimension::Compute(thePresentationManager, thePresentation, theMode);
 
   if (!aReadyToDisplay)