From 20a4593ee19197815564ca92adc90984dff3281d Mon Sep 17 00:00:00 2001 From: Lukas Matena <lukasmatena@seznam.cz> Date: Fri, 21 Dec 2018 13:19:10 +0100 Subject: [PATCH 1/2] Flatten gizmo now respects sla_shift_z --- src/slic3r/GUI/GLGizmo.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/slic3r/GUI/GLGizmo.cpp b/src/slic3r/GUI/GLGizmo.cpp index 69dbdddcf..0a61e7900 100644 --- a/src/slic3r/GUI/GLGizmo.cpp +++ b/src/slic3r/GUI/GLGizmo.cpp @@ -1466,6 +1466,7 @@ void GLGizmoFlatten::on_render(const GLCanvas3D::Selection& selection) const const Transform3d& m = selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_transformation().get_matrix(); ::glPushMatrix(); ::glMultMatrixd(m.data()); + ::glTranslatef(0.f, 0.f, selection.get_volume(*selection.get_volume_idxs().begin())->get_sla_shift_z()); for (int i = 0; i < (int)m_planes.size(); ++i) { if (i == m_hover_id) @@ -1497,6 +1498,7 @@ void GLGizmoFlatten::on_render_for_picking(const GLCanvas3D::Selection& selectio const Transform3d& m = selection.get_volume(*selection.get_volume_idxs().begin())->get_instance_transformation().get_matrix(); ::glPushMatrix(); ::glMultMatrixd(m.data()); + ::glTranslatef(0.f, 0.f, selection.get_volume(*selection.get_volume_idxs().begin())->get_sla_shift_z()); for (int i = 0; i < (int)m_planes.size(); ++i) { ::glColor3f(1.0f, 1.0f, picking_color_component(i)); From f288af0b5e339f540c651b89555d5483cf93dce8 Mon Sep 17 00:00:00 2001 From: Lukas Matena <lukasmatena@seznam.cz> Date: Fri, 21 Dec 2018 13:55:14 +0100 Subject: [PATCH 2/2] Fixed an out-of-bound situation in SLA support generator --- src/libslic3r/SLA/SLAAutoSupports.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libslic3r/SLA/SLAAutoSupports.cpp b/src/libslic3r/SLA/SLAAutoSupports.cpp index 5a7ce6aab..5011c485b 100644 --- a/src/libslic3r/SLA/SLAAutoSupports.cpp +++ b/src/libslic3r/SLA/SLAAutoSupports.cpp @@ -254,12 +254,11 @@ std::vector<Vec3d> SLAAutoSupports::uniformly_cover(const std::pair<ExPolygon, c // In case there is just one point to place, we'll place it into the polygon's centroid (unless it lies in a hole). if (num_of_points == 1) { Point out(island.first.contour.centroid()); - out(2) = island.second; for (const auto& hole : island.first.holes) if (hole.contains(out)) goto HOLE_HIT; - return std::vector<Vec3d>{unscale(out(0), out(1), out(2))}; + return std::vector<Vec3d>{unscale(out(0), out(1), island.second)}; } HOLE_HIT: @@ -296,10 +295,8 @@ HOLE_HIT: } } } - if (add_it) { - out(2) = island.second; + if (add_it) island_new_points.emplace_back(unscaled_out); - } } return island_new_points; }