]> SALOME platform Git repositories - modules/shaper.git/commitdiff
Salome HOME
Avoid crash when creating presentation of the Tangency constraint.
authorazv <azv@opencascade.com>
Fri, 12 Jan 2018 11:50:22 +0000 (14:50 +0300)
committerazv <azv@opencascade.com>
Fri, 12 Jan 2018 13:43:57 +0000 (16:43 +0300)
src/SketcherPrs/SketcherPrs_PositionMgr.cpp

index 00faae45de942e305e327ef3b5b98170a1c4129f..85aa05217cbe08cfe9473e4fef71f228f08d6174 100644 (file)
@@ -300,7 +300,8 @@ std::list<ObjectPtr> getCurves(const GeomPointPtr& thePnt, const SketcherPrs_Sym
       GeomPnt2dPtr aPnt1 = aSPnt1->pnt();
       GeomPnt2dPtr aPnt2 = aSPnt2->pnt();
 
-      if (aPnt1->isEqual(aPnt2d) || aPnt2->isEqual(aPnt2d)) {
+      if (aPnt1->distance(aPnt2d) <= Precision::Confusion() ||
+          aPnt2->distance(aPnt2d) <= Precision::Confusion()) {
         // a point corresponds to one of the line end
         GeomShapePtr aShp = SketcherPrs_Tools::getShape(aFeature->firstResult());
         GeomCurvePtr aCurv = std::shared_ptr<GeomAPI_Curve>(new GeomAPI_Curve(aShp));
@@ -394,7 +395,7 @@ gp_Pnt SketcherPrs_PositionMgr::getPointPosition(
   gp_Vec aVecPos;
   // If number of angle less then number of symbols then each symbol can be placed
   // directly inside of the angle
-  if (aAngles.size() >= aPos[1]) {
+  if (aAngles.size() >= aPos[1] && !aVectors.empty()) {
     int aId = aPos[0];
     aVecPos = *(std::next(aVectors.begin(), aId));