X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSketchSolver%2FSketchSolver_Builder.cpp;h=ba7074e50c5447f3f292ef5b604a128de2c56f51;hb=3a927e455d0639a65e2bf4fd3f1dfe4459fc9608;hp=c01e8817a418d2951a545b288dc6c7a3e3d5881d;hpb=29d446f4dd2969d80087745fe44adb5638d13de7;p=modules%2Fshaper.git diff --git a/src/SketchSolver/SketchSolver_Builder.cpp b/src/SketchSolver/SketchSolver_Builder.cpp index c01e8817a..ba7074e50 100644 --- a/src/SketchSolver/SketchSolver_Builder.cpp +++ b/src/SketchSolver/SketchSolver_Builder.cpp @@ -8,10 +8,13 @@ #include #include #include +#include #include #include #include +#include #include +#include #include #include #include @@ -27,9 +30,11 @@ #include #include +#include #include #include #include +#include #include #include #include @@ -76,12 +81,16 @@ SolverConstraintPtr SketchSolver_Builder::createConstraint(ConstraintPtr theCons if (theConstraint->getKind() == SketchPlugin_ConstraintCoincidence::ID()) { return SolverConstraintPtr(new SketchSolver_ConstraintCoincidence(theConstraint)); + } else if (theConstraint->getKind() == SketchPlugin_ConstraintCollinear::ID()) { + return SolverConstraintPtr(new SketchSolver_ConstraintCollinear(theConstraint)); } else if (theConstraint->getKind() == SketchPlugin_ConstraintDistance::ID()) { return SolverConstraintPtr(new SketchSolver_ConstraintDistance(theConstraint)); } else if (theConstraint->getKind() == SketchPlugin_ConstraintEqual::ID()) { return SolverConstraintPtr(new SketchSolver_ConstraintEqual(theConstraint)); } else if (theConstraint->getKind() == SketchPlugin_ConstraintLength::ID()) { return SolverConstraintPtr(new SketchSolver_ConstraintLength(theConstraint)); + } else if (theConstraint->getKind() == SketchPlugin_ConstraintMiddle::ID()) { + return SolverConstraintPtr(new SketchSolver_ConstraintMiddle(theConstraint)); } else if (theConstraint->getKind() == SketchPlugin_ConstraintMirror::ID()) { return SolverConstraintPtr(new SketchSolver_ConstraintMirror(theConstraint)); } else if (theConstraint->getKind() == SketchPlugin_ConstraintTangent::ID()) { @@ -107,6 +116,14 @@ SolverConstraintPtr SketchSolver_Builder::createFixedConstraint(FeaturePtr theFi return SolverConstraintPtr(new SketchSolver_ConstraintFixed(theFixedFeature)); } +SolverConstraintPtr SketchSolver_Builder::createFixedArcRadiusConstraint(FeaturePtr theArc) const +{ + DataPtr aData = theArc->data(); + if (!aData || !aData->isValid()) + return SolverConstraintPtr(); + return SolverConstraintPtr(new SketchSolver_ConstraintFixedArcRadius(theArc)); +} + SolverConstraintPtr SketchSolver_Builder::createMovementConstraint(FeaturePtr theFixedFeature) const { DataPtr aData = theFixedFeature->data(); @@ -119,6 +136,8 @@ std::shared_ptr SketchSolver_Builder::point(EntityWrapperPtr theE { if (theEntity->type() != ENTITY_POINT) return std::shared_ptr(); + if (theEntity->subEntities().size() == 1) // SketchPlugin_Point wrapper + return point(theEntity->subEntities().front()); double aXY[2]; std::list aParams = theEntity->parameters();