X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_Fillet.cpp;h=cb856fdc8bc03e6dde57bf87f887cf754ca6a2f6;hb=b5893b0a30fac08134c24de4565cb513a43affa6;hp=89b2c6df850b7135d98a066fecc551a9787a3991;hpb=4a56d705d8a85c486ad4d0ab903112339bb74684;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_Fillet.cpp b/src/SketchPlugin/SketchPlugin_Fillet.cpp index 89b2c6df8..cb856fdc8 100644 --- a/src/SketchPlugin/SketchPlugin_Fillet.cpp +++ b/src/SketchPlugin/SketchPlugin_Fillet.cpp @@ -13,6 +13,7 @@ #include "SketchPlugin_ConstraintEqual.h" #include "SketchPlugin_ConstraintCoincidence.h" #include "SketchPlugin_ConstraintLength.h" +#include "SketchPlugin_ConstraintMiddle.h" #include "SketchPlugin_ConstraintTangent.h" #include "SketchPlugin_ConstraintRadius.h" #include "SketchPlugin_Tools.h" @@ -24,6 +25,7 @@ #include #include +#include #include #include @@ -83,6 +85,9 @@ void SketchPlugin_Fillet::execute() if (isUpdateFlushed) Events_Loop::loop()->setFlushed(anUpdateEvent, false); + // set flag here to avoid building Fillet presentation if "Redisplay" event appears + myFilletCreated = true; + // Calculate Fillet parameters if does not yet if (!myBaseFeatures[0] || !myBaseFeatures[1]) calculateFilletParameters(); @@ -177,8 +182,6 @@ void SketchPlugin_Fillet::execute() if(isUpdateFlushed) { Events_Loop::loop()->setFlushed(anUpdateEvent, true); } - - myFilletCreated = true; } AISObjectPtr SketchPlugin_Fillet::getAISObject(AISObjectPtr thePrevious) @@ -410,9 +413,13 @@ void calculateFilletCenter(FeaturePtr theFilletFeatures[2], GeomShapePtr aShapeA = theFilletFeatures[0]->lastResult()->shape(); GeomShapePtr aShapeB = theFilletFeatures[1]->lastResult()->shape(); - std::shared_ptr aFilletCircle( - new GeomAPI_Circ2d(aShapeA, aShapeB, theFilletRadius, theSketchPlane)); - if (!aFilletCircle->implPtr()) + GeomAlgoAPI_Circ2dBuilder aCircBuilder(theSketchPlane); + aCircBuilder.addTangentCurve(aShapeA); + aCircBuilder.addTangentCurve(aShapeB); + aCircBuilder.setRadius(theFilletRadius); + + std::shared_ptr aFilletCircle = aCircBuilder.circle(); + if (!aFilletCircle) return; theCenter = aFilletCircle->center()->xy(); @@ -516,7 +523,8 @@ std::set findFeaturesToRemove(const FeaturePtr theFeature, continue; } if(aFeature->getKind() == SketchPlugin_ConstraintLength::ID() - || aFeature->getKind() == SketchPlugin_ConstraintEqual::ID()) { + || aFeature->getKind() == SketchPlugin_ConstraintEqual::ID() + || aFeature->getKind() == SketchPlugin_ConstraintMiddle::ID()) { aFeaturesToBeRemoved.insert(aFeature); } else { std::list anAttrs =