1 #include <SketchSolver_ConstraintMultiTranslation.h>
2 #include <SketchSolver_Error.h>
3 #include <SketchSolver_Manager.h>
5 #include <SketchPlugin_MultiTranslation.h>
8 void SketchSolver_ConstraintMultiTranslation::getAttributes(
9 EntityWrapperPtr& theStartPoint, EntityWrapperPtr& theEndPoint,
10 std::list< std::list<EntityWrapperPtr> >& theEntities)
12 DataPtr aData = myBaseConstraint->data();
13 AttributePtr aStartPointAttr = aData->attribute(SketchPlugin_MultiTranslation::START_POINT_ID());
14 AttributePtr aEndPointAttr = aData->attribute(SketchPlugin_MultiTranslation::END_POINT_ID());
15 if (!aStartPointAttr || !aStartPointAttr->isInitialized() ||
16 !aEndPointAttr || !aEndPointAttr->isInitialized()) {
17 myErrorMsg = SketchSolver_Error::NOT_INITIALIZED();
21 myType = CONSTRAINT_MULTI_TRANSLATION;
23 myStorage->update(aStartPointAttr);
24 theStartPoint = myStorage->entity(aStartPointAttr);
25 myStorage->update(aEndPointAttr);
26 theEndPoint = myStorage->entity(aEndPointAttr);
28 getEntitiesAndCopies(theEntities);
32 void SketchSolver_ConstraintMultiTranslation::process()
35 if (!myBaseConstraint || !myStorage || myGroupID == GID_UNKNOWN) {
36 /// TODO: Put error message here
40 EntityWrapperPtr aStartPoint, aEndPoint;
41 std::list<std::list<EntityWrapperPtr> > anEntitiesAndCopies;
42 getAttributes(aStartPoint, aEndPoint, anEntitiesAndCopies);
43 if (!myErrorMsg.empty())
46 BuilderPtr aBuilder = SketchSolver_Manager::instance()->builder();
47 std::list<ConstraintWrapperPtr> aTransConstraints;
49 std::list< std::list<EntityWrapperPtr> >::iterator anEntIt = anEntitiesAndCopies.begin();
50 for (; anEntIt != anEntitiesAndCopies.end(); ++anEntIt) {
51 std::list<ConstraintWrapperPtr> aNewConstraints =
52 aBuilder->createConstraint(myBaseConstraint, myGroupID, mySketchID, myType,
53 0.0, aStartPoint, aEndPoint, *anEntIt);
54 aTransConstraints.insert(aTransConstraints.end(), aNewConstraints.begin(), aNewConstraints.end());
56 myStorage->addConstraint(myBaseConstraint, aTransConstraints);
62 const std::string& SketchSolver_ConstraintMultiTranslation::nameNbObjects()
64 return SketchPlugin_MultiTranslation::NUMBER_OF_OBJECTS_ID();