#include <SketchPlugin_ConstraintAngle.h>
#include <SketchPlugin_ConstraintCoincidence.h>
+#include <SketchPlugin_ConstraintCollinear.h>
#include <SketchPlugin_ConstraintDistance.h>
#include <SketchPlugin_ConstraintEqual.h>
#include <SketchPlugin_ConstraintHorizontal.h>
#include <SketchPlugin_ConstraintLength.h>
+#include <SketchPlugin_ConstraintMiddle.h>
#include <SketchPlugin_ConstraintMirror.h>
#include <SketchPlugin_ConstraintParallel.h>
#include <SketchPlugin_ConstraintPerpendicular.h>
return CONSTRAINT_RADIUS;
else if (aType == SketchPlugin_ConstraintTangent::ID())
return CONSTRAINT_TANGENT;
+ else if (aType == SketchPlugin_ConstraintCollinear::ID())
+ return CONSTRAINT_COLLINEAR;
+ else if (aType == SketchPlugin_ConstraintMiddle::ID())
+ return CONSTRAINT_MIDDLE_POINT;
return CONSTRAINT_UNKNOWN;
}
if (aRefAttr) {
if (aRefAttr->isObject()) {
FeaturePtr aFeat = ModelAPI_Feature::feature(aRefAttr->object());
- aFeatures.insert(aFeat);
+ if (myBaseConstraint->getKind() != SketchPlugin_ConstraintLength::ID())
+ aFeatures.insert(aFeat);
+ else {
+ // Workaround for the Length constraint: add points of line, not line itself
+ anAttributes.insert(aFeat->attribute(SketchPlugin_Line::START_ID()));
+ anAttributes.insert(aFeat->attribute(SketchPlugin_Line::END_ID()));
+ }
} else
anAttributes.insert(aRefAttr->attr());
} else
bool SketchSolver_Constraint::remove()
{
cleanErrorMsg();
+ myType = CONSTRAINT_UNKNOWN;
return myStorage->removeConstraint(myBaseConstraint);
}
{
static const int anInitNbOfAttr = 4;
theAttributes.assign(anInitNbOfAttr, EntityWrapperPtr());
+ myAttributes.clear();
DataPtr aData = myBaseConstraint->data();
BuilderPtr aBuilder = SketchSolver_Manager::instance()->builder();
myStorage->update(*anIter/*, myGroupID*/);
EntityWrapperPtr anEntity = myStorage->entity(*anIter);
+ myAttributes.push_back(anEntity);
SketchSolver_EntityType aType = anEntity->type();
if (aType == ENTITY_UNKNOWN)