From 2ec5a0d46ceac9c26876becef60e1a1f6e65db68 Mon Sep 17 00:00:00 2001 From: enricoturri1966 <enricoturri@seznam.cz> Date: Thu, 5 Nov 2020 11:00:04 +0100 Subject: [PATCH] Fixed visualization of gcode toolpaths for spiral vase mode --- src/slic3r/GUI/GCodeViewer.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index ed5431d19..2de21e7b4 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -112,16 +112,14 @@ bool GCodeViewer::Path::matches(const GCodeProcessor::MoveVertex& move) const case EMoveType::Custom_GCode: case EMoveType::Retract: case EMoveType::Unretract: - case EMoveType::Extrude: - { + case EMoveType::Extrude: { // use rounding to reduce the number of generated paths - return type == move.type && role == move.extrusion_role && height == round_to_nearest(move.height, 2) && + return type == move.type && move.position[2] <= first.position[2] && role == move.extrusion_role && height == round_to_nearest(move.height, 2) && width == round_to_nearest(move.width, 2) && feedrate == move.feedrate && fan_speed == move.fan_speed && volumetric_rate == round_to_nearest(move.volumetric_rate(), 2) && extruder_id == move.extruder_id && cp_color_id == move.cp_color_id; } - case EMoveType::Travel: - { + case EMoveType::Travel: { return type == move.type && feedrate == move.feedrate && extruder_id == move.extruder_id && cp_color_id == move.cp_color_id; } default: { return false; } @@ -1531,14 +1529,15 @@ void GCodeViewer::load_toolpaths(const GCodeProcessor::Result& gcode_result) // dismiss indices data, no more needed std::vector<MultiIndexBuffer>().swap(indices); - // layers zs / roles / extruder ids / cp color ids -> extract from result + // layers zs -> extract from result + for (const Path& path : m_buffers[buffer_id(EMoveType::Extrude)].paths) { + m_layers_zs.emplace_back(static_cast<double>(path.first.position[2])); +// m_layers_zs.emplace_back(static_cast<double>(path.last.position[2])); + } + // roles / extruder ids / cp color ids -> extract from result for (size_t i = 0; i < m_moves_count; ++i) { const GCodeProcessor::MoveVertex& move = gcode_result.moves[i]; - if (move.type == EMoveType::Extrude) - m_layers_zs.emplace_back(static_cast<double>(move.position[2])); - m_extruder_ids.emplace_back(move.extruder_id); - if (i > 0) m_roles.emplace_back(move.extrusion_role); }