Salome HOME
Using test for testing number of sub-shapes.
[modules/shaper.git] / src / SketchSolver / SketchSolver_ConstraintMultiTranslation.cpp
index dd740003a3654babe6ea50769994edfa856991f8..4f1741e7662916798ecae0c844f21434d02118ed 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
 #include <SketchSolver_ConstraintMultiTranslation.h>
 #include <SketchSolver_Error.h>
 #include <SketchSolver_Manager.h>
@@ -60,7 +62,8 @@ void SketchSolver_ConstraintMultiTranslation::process()
     std::list<ConstraintWrapperPtr> aNewConstraints =
         aBuilder->createConstraint(myBaseConstraint, myGroupID, mySketchID, myType,
         0.0, aFullValue, aStartPoint, aEndPoint, std::list<EntityWrapperPtr>(1, *anEntIt));
-    aTransConstraints.insert(aTransConstraints.end(), aNewConstraints.begin(), aNewConstraints.end());
+    aTransConstraints.insert(aTransConstraints.end(),
+                             aNewConstraints.begin(), aNewConstraints.end());
   }
 
   myStorage->addConstraint(myBaseConstraint, aTransConstraints);
@@ -111,7 +114,8 @@ void SketchSolver_ConstraintMultiTranslation::updateLocal()
                                                   aSLast = aConstraintEntities.end();
       EntityWrapperPtr aStartEntity = *aSIt++;
       if (aStartPointChanged) {
-        AttributePtr aStartPointAttr = aData->attribute(SketchPlugin_MultiTranslation::START_POINT_ID());
+        AttributePtr aStartPointAttr =
+          aData->attribute(SketchPlugin_MultiTranslation::START_POINT_ID());
         myStorage->update(aStartPointAttr);
         aStartEntity = myStorage->entity(aStartPointAttr);
       }
@@ -119,7 +123,8 @@ void SketchSolver_ConstraintMultiTranslation::updateLocal()
 
       EntityWrapperPtr anEndEntity = *aSIt++;
       if (anEndPointChanged) {
-        AttributePtr anEndPointAttr = aData->attribute(SketchPlugin_MultiTranslation::END_POINT_ID());
+        AttributePtr anEndPointAttr =
+          aData->attribute(SketchPlugin_MultiTranslation::END_POINT_ID());
         myStorage->update(anEndPointAttr);
         anEndEntity = myStorage->entity(anEndPointAttr);
       }
@@ -148,9 +153,15 @@ void SketchSolver_ConstraintMultiTranslation::adjustConstraint()
   EntityWrapperPtr aEnd = myStorage->entity(
       myBaseConstraint->attribute(SketchPlugin_MultiTranslation::END_POINT_ID()));
   std::list<ParameterWrapperPtr> aEndParams = aEnd->parameters();
+
   myDelta[0] = aEndParams.front()->value() - aStartParams.front()->value();
   myDelta[1] = aEndParams.back()->value() - aStartParams.back()->value();
 
+  if (myIsFullValue && myNumberOfCopies > 0) {
+    myDelta[0] /= myNumberOfCopies;
+    myDelta[1] /= myNumberOfCopies;
+  }
+
   SketchSolver_ConstraintMulti::adjustConstraint();
 }