Salome HOME
Fix the problem moving arc with radius constraint (issue #1375)
[modules/shaper.git] / src / SketchSolver / SolveSpaceSolver / SolveSpaceSolver_Storage.cpp
index d796f7964206c4a6598a9f7dab289f2ac8724ad1..d63622683115195836f410da652ec0d5e4e3b8b1 100644 (file)
@@ -832,6 +832,21 @@ bool SolveSpaceSolver_Storage::removeConstraint(const Slvs_hConstraint& theConst
     myConstraints.erase(myConstraints.begin() + aPos);
     myConstrMaxID = myConstraints.empty() ? SLVS_E_UNKNOWN : myConstraints.back().h;
     myNeedToResolve = true;
+
+    if (myDuplicatedConstraint) {
+      // Find a constraint with same type uses same arguments
+      std::vector<Slvs_Constraint>::iterator aCIt = myConstraints.begin();
+      for (; aCIt != myConstraints.end(); aCIt++) {
+        if (aConstraint.type != aCIt->type)
+          continue;
+        if (aConstraint.ptA == aCIt->ptA && aConstraint.ptB == aCIt->ptB &&
+            aConstraint.entityA == aCIt->entityA && aConstraint.entityB == aCIt->entityB &&
+            aConstraint.entityC == aCIt->entityC && aConstraint.entityD == aCIt->entityD) {
+          myDuplicatedConstraint = false;
+          break;
+        }
+      }
+    }
   }
   return true;
 }