X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_ConstraintRadius.cpp;h=03854444b38043e20e2ada403933b0f5a63849f7;hb=64fc7e4fdd63997ec7a502b233ef5f88186d5bbb;hp=9530bc2add833bcc01071a6d07379deaa65276b6;hpb=feb83de70e93d26ac5fc47f8b6ae82ebe965309a;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_ConstraintRadius.cpp b/src/SketchPlugin/SketchPlugin_ConstraintRadius.cpp index 9530bc2ad..03854444b 100644 --- a/src/SketchPlugin/SketchPlugin_ConstraintRadius.cpp +++ b/src/SketchPlugin/SketchPlugin_ConstraintRadius.cpp @@ -30,6 +30,7 @@ const double tolerance = 1.e-7; SketchPlugin_ConstraintRadius::SketchPlugin_ConstraintRadius() { + myFlyoutUpdate = false; } void SketchPlugin_ConstraintRadius::initAttributes() @@ -161,27 +162,10 @@ void SketchPlugin_ConstraintRadius::move(double theDeltaX, double theDeltaY) if (!aData->isValid()) return; - // The flyout point is calculated in local coordinates of the shape, - // so the center should be coincident with origin - std::shared_ptr aCenter(new GeomAPI_Pnt2d(0.0, 0.0)); - - // The specified delta applied on the circle curve, - // so it will be scaled due to distance between flyout and center points + myFlyoutUpdate = true; std::shared_ptr aFlyoutAttr = std::dynamic_pointer_cast< GeomDataAPI_Point2D>(aData->attribute(SketchPlugin_Constraint::FLYOUT_VALUE_PNT())); - std::shared_ptr aFlyout = aFlyoutAttr->pnt(); - - std::shared_ptr aRadius = std::dynamic_pointer_cast< - ModelAPI_AttributeDouble>(aData->attribute(SketchPlugin_Constraint::VALUE())); - double aScale = aFlyout->distance(aCenter) / aRadius->value(); - - std::shared_ptr aCircle(new GeomAPI_Circ2d(aCenter, aFlyout)); - aFlyout->setX(aFlyout->x() + aScale * theDeltaX); - aFlyout->setY(aFlyout->y() + aScale * theDeltaY); - aFlyout = aCircle->project(aFlyout); - - myFlyoutUpdate = true; - aFlyoutAttr->setValue(aFlyout->x(), aFlyout->y()); + aFlyoutAttr->setValue(aFlyoutAttr->x() + theDeltaX, aFlyoutAttr->y() + theDeltaY); myFlyoutUpdate = false; }