X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchPlugin%2FSketchPlugin_ConstraintDistance.cpp;h=3c46ab4a557ac098c9488f49eca7a04b4a989cf3;hb=af7e6fdbea92a91e74a3c7b6ab340c19badb9d6a;hp=190665560738fe40d32815a7d238e5e61277ba96;hpb=26eb9df03b20bbec3ecafbda1a1b1fcfe5f06bbc;p=modules%2Fshaper.git diff --git a/src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp b/src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp index 190665560..3c46ab4a5 100644 --- a/src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp +++ b/src/SketchPlugin/SketchPlugin_ConstraintDistance.cpp @@ -18,6 +18,8 @@ #include +const double tolerance = 1e-7; + SketchPlugin_ConstraintDistance::SketchPlugin_ConstraintDistance() { } @@ -98,6 +100,10 @@ bool SketchPlugin_ConstraintDistance::compute(const std::string& theAttributeId) std::shared_ptr aPoint1 = sketch()->to3D(aPnt_A->x(), aPnt_A->y()); std::shared_ptr aPoint2 = sketch()->to3D(aPnt_B->x(), aPnt_B->y()); + // it is not possible to create lin2d on the points with equal position + if (aPoint1->distance(aPoint1) < tolerance) + return false; + std::shared_ptr aLine = std::shared_ptr(new GeomAPI_Lin2d(aPnt_A, aPnt_B)); double aDist = aPoint1->distance(aPoint2)/5.; std::shared_ptr aFPnt = aLine->shiftedLocation(aDist);