diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index b83ec3f79..21d3233da 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -2632,7 +2632,22 @@ int SketchObject::addCopy(const std::vector &geoIdList, const Base::Vector3 if(it == geoIdList.begin()) iterfirstpoint = geoaoe->getStartPoint(true); - } + } + else if(geocopy->getTypeId() == Part::GeomBSplineCurve::getClassTypeId()){ + Part::GeomBSplineCurve *geobsp = static_cast(geocopy); + + std::vector poles = geobsp->getPoles(); + + for(std::vector::iterator it = poles.begin(); it != poles.end(); ++it){ + + (*it) = (*it) + double(x)*displacement + double(y)*perpendicularDisplacement; + } + + geobsp->setPoles(poles); + + if(it == geoIdList.begin()) + iterfirstpoint = geobsp->getStartPoint(); + } else if(geocopy->getTypeId() == Part::GeomPoint::getClassTypeId()){ Part::GeomPoint *geopoint = static_cast(geocopy); Base::Vector3d cp = geopoint->getPoint();