X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Ellipse.cpp;h=6ff0a30216d053d61726816b6a0dd2982ac810c8;hb=f0ff622da83f8272bd5d8ef3dcc00116fd2573dd;hp=f5ca951760467791ec47f1520de2726ae40e08ff;hpb=747178d21dce4fb034ff0e84c1280406ab64d566;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Ellipse.cpp b/src/SketchPlugin/SketchPlugin_Ellipse.cpp index f5ca95176..6ff0a3021 100644 --- a/src/SketchPlugin/SketchPlugin_Ellipse.cpp +++ b/src/SketchPlugin/SketchPlugin_Ellipse.cpp @@ -134,7 +134,7 @@ bool SketchPlugin_Ellipse::fillCharacteristicPoints() return false; } - data()->blockSendAttributeUpdated(true); + bool aWasBlocked = data()->blockSendAttributeUpdated(true); GeomPnt2dPtr aCenter2d = aCenterAttr->pnt(); GeomPnt2dPtr aFocus2d = aFocusAttr->pnt(); GeomDir2dPtr aMajorDir2d(new GeomAPI_Dir2d(aFocus2d->x() - aCenter2d->x(), @@ -144,7 +144,9 @@ bool SketchPlugin_Ellipse::fillCharacteristicPoints() AttributeDoublePtr aMajorRadiusAttr = real(MAJOR_RADIUS_ID()); double aFocalDist = aCenter2d->distance(aFocus2d); double aMajorRadius = sqrt(aFocalDist * aFocalDist + aMinorRadius * aMinorRadius); - aMajorRadiusAttr->setValue(aMajorRadius); + if (!aMajorRadiusAttr->isInitialized() || + fabs(aMajorRadiusAttr->value() - aMajorRadius) > tolerance) + aMajorRadiusAttr->setValue(aMajorRadius); std::dynamic_pointer_cast(attribute(SECOND_FOCUS_ID())) ->setValue(2.0 * aCenter2d->x() - aFocus2d->x(), 2.0 * aCenter2d->y() - aFocus2d->y()); @@ -160,7 +162,7 @@ bool SketchPlugin_Ellipse::fillCharacteristicPoints() std::dynamic_pointer_cast(attribute(MINOR_AXIS_END_ID())) ->setValue(aCenter2d->x() + aMinorDir2d->x() * aMinorRadius, aCenter2d->y() + aMinorDir2d->y() * aMinorRadius); - data()->blockSendAttributeUpdated(false); + data()->blockSendAttributeUpdated(aWasBlocked); return true; }