From 9917b8e58b4b5ad77ce18d8e156874600f1a26bf Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Thu, 17 Feb 2022 15:16:47 +0100 Subject: [PATCH] Cut: fixed clipping plane when it is not horizonal --- src/slic3r/GUI/Gizmos/GLGizmoCut.cpp | 4 ++-- src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp | 11 +++-------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index 208549bc45..f365323abd 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -130,9 +130,9 @@ void GLGizmoCut3D::update_clipper() { const Vec3d& angles = m_rotation_gizmo.get_rotation(); Matrix3d m; - m = Eigen::AngleAxisd(angles[X], Vec3d::UnitX()) + m = Eigen::AngleAxisd(angles[Z], Vec3d::UnitZ()) * Eigen::AngleAxisd(angles[Y], Vec3d::UnitY()) - * Eigen::AngleAxisd(angles[Z], Vec3d::UnitZ()); + * Eigen::AngleAxisd(angles[X], Vec3d::UnitX()); Vec3d plane_center = m_move_gizmo.get_center(); BoundingBoxf3 box = m_move_gizmo.bounding_box(); diff --git a/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp b/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp index c4828da8b2..7f5567d83b 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmosCommon.cpp @@ -458,17 +458,12 @@ void ObjectClipper::set_position_by_ratio(double pos, bool keep_normal) void ObjectClipper::set_range_and_pos(const Vec3d& origin, const Vec3d& end, double pos) { - std::cout << "origin:\t"<< origin.x() << "\t" << origin.y() << "\t"<< origin.z() << "\n"; - std::cout << "end:\t" << end.x() << "\t" << end.y() << "\t"<< end.z() << "\n"; - Vec3d normal = end-origin; double norm = normal.norm(); pos = std::clamp(pos, 0.0001, norm); - - std::cout << "NORM:\t" << norm << "\tPOS:\t" << pos << "\n\n"; - - m_clp.reset(new ClippingPlane(normal, pos)); - m_clp_ratio = pos/norm; + normal.normalize(); + m_clp.reset(new ClippingPlane(normal, normal.dot(origin)+pos)); + m_clp_ratio = pos; get_pool()->get_canvas()->set_as_dirty(); }