diff --git a/src/Mod/Points/App/Points.cpp b/src/Mod/Points/App/Points.cpp index e603bb6a17..169f29491a 100644 --- a/src/Mod/Points/App/Points.cpp +++ b/src/Mod/Points/App/Points.cpp @@ -99,6 +99,21 @@ void PointKernel::transformGeometry(const Base::Matrix4D& rclMat) #endif } +void PointKernel::moveGeometry(const Base::Vector3d& vec) +{ + Base::Vector3f offset = Base::toVector(vec); + std::vector& kernel = getBasicPoints(); +#ifdef _MSC_VER + Concurrency::parallel_for_each(kernel.begin(), kernel.end(), [offset](value_type& value) { + value += offset; + }); +#else + QtConcurrent::blockingMap(kernel, [offset](value_type& value) { + value += offset; + }); +#endif +} + Base::BoundBox3d PointKernel::getBoundBox() const { Base::BoundBox3d bnd; diff --git a/src/Mod/Points/App/Points.h b/src/Mod/Points/App/Points.h index 8ddec22a1e..23e149acfa 100644 --- a/src/Mod/Points/App/Points.h +++ b/src/Mod/Points/App/Points.h @@ -106,6 +106,7 @@ public: double Accuracy, uint16_t flags = 0) const override; void transformGeometry(const Base::Matrix4D& rclMat) override; + void moveGeometry(const Base::Vector3d& vec); Base::BoundBox3d getBoundBox() const override; /** @name I/O */