From 53be2ee55457c1684be2adbb63427db28fbb4a3b Mon Sep 17 00:00:00 2001 From: "qing.zhang" Date: Fri, 2 Sep 2022 10:29:08 +0800 Subject: [PATCH] FIX: fix the topmost iron issue Signed-off-by: qing.zhang Change-Id: I79a034f188aaa1ef4528b944c725008f926b7b1f --- src/libslic3r/GCode/GCodeProcessor.cpp | 16 +++++++--------- src/libslic3r/GCode/GCodeProcessor.hpp | 2 +- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index f3ec27529..a7dc0c369 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -2469,7 +2469,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) AxisCoords delta_pos; for (unsigned char a = X; a <= E; ++a) { delta_pos[a] = m_end_position[a] - m_start_position[a]; - max_abs_delta = std::max(max_abs_delta, std::abs(delta_pos[a])); + max_abs_delta = std::max(max_abs_delta, std::abs(delta_pos[a])); } // no displacement, return @@ -2575,7 +2575,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) minimum_feedrate(static_cast(i), m_feedrate); //BBS: calculeta enter and exit direction - curr.enter_direction = { delta_pos[X], delta_pos[Y], delta_pos[Z] }; + curr.enter_direction = { static_cast(delta_pos[X]), static_cast(delta_pos[Y]), static_cast(delta_pos[Z]) }; float norm = curr.enter_direction.norm(); if (!is_extrusion_only_move(delta_pos)) curr.enter_direction = curr.enter_direction / norm; @@ -2624,8 +2624,7 @@ void GCodeProcessor::process_G1(const GCodeReader::GCodeLine& line) curr.abs_axis_feedrate[a] = std::abs(curr.axis_feedrate[a]); if (curr.abs_axis_feedrate[a] != 0.0f) { float axis_max_feedrate = get_axis_max_feedrate(static_cast(i), static_cast(a)); - if (axis_max_feedrate != 0.0f) - min_feedrate_factor = std::min(min_feedrate_factor, axis_max_feedrate / curr.abs_axis_feedrate[a]); + if (axis_max_feedrate != 0.0f) min_feedrate_factor = std::min(min_feedrate_factor, axis_max_feedrate / curr.abs_axis_feedrate[a]); } } //BBS: update curr.feedrate @@ -2914,6 +2913,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line) EMoveType type = move_type(delta_pos[E]); + float delta_xyz = std::sqrt(sqr(arc_length) + sqr(delta_pos[Z])); if (type == EMoveType::Extrude) { float volume_extruded_filament = area_filament_cross_section * delta_pos[E]; @@ -3020,8 +3020,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line) curr.abs_axis_feedrate[a] = std::abs(curr.axis_feedrate[a]); if (curr.abs_axis_feedrate[a] != 0.0f) { float axis_max_feedrate = get_axis_max_feedrate(static_cast(i), static_cast(a)); - if (axis_max_feedrate != 0.0f) - min_feedrate_factor = std::min(min_feedrate_factor, axis_max_feedrate / curr.abs_axis_feedrate[a]); + if (axis_max_feedrate != 0.0f) min_feedrate_factor = std::min(min_feedrate_factor, axis_max_feedrate / curr.abs_axis_feedrate[a]); } } curr.feedrate *= min_feedrate_factor; @@ -3048,8 +3047,7 @@ void GCodeProcessor::process_G2_G3(const GCodeReader::GCodeLine& line) if (axis_acc[a] != 0.0f) { float axis_max_acceleration = get_axis_max_acceleration(static_cast(i), static_cast(a)); - if (axis_max_acceleration != 0.0f && axis_acc[a] > axis_max_acceleration) - min_acc_factor = std::min(min_acc_factor, axis_max_acceleration / axis_acc[a]); + if (axis_max_acceleration != 0.0f && axis_acc[a] > axis_max_acceleration) min_acc_factor = std::min(min_acc_factor, axis_max_acceleration / axis_acc[a]); } } block.acceleration = acceleration * min_acc_factor; @@ -3697,7 +3695,7 @@ void GCodeProcessor::store_move_vertex(EMoveType type, EMovePathType path_type) m_cp_color.current, //BBS: add plate's offset to the rendering vertices Vec3f(m_end_position[X] + m_x_offset, m_end_position[Y] + m_y_offset, m_processing_start_custom_gcode ? m_first_layer_height : m_end_position[Z]) + m_extruder_offsets[m_extruder_id], - m_end_position[E] - m_start_position[E], + static_cast(m_end_position[E] - m_start_position[E]), m_feedrate, m_width, m_height, diff --git a/src/libslic3r/GCode/GCodeProcessor.hpp b/src/libslic3r/GCode/GCodeProcessor.hpp index abfe6054e..52bcf66ca 100644 --- a/src/libslic3r/GCode/GCodeProcessor.hpp +++ b/src/libslic3r/GCode/GCodeProcessor.hpp @@ -219,7 +219,7 @@ namespace Slic3r { #endif // ENABLE_GCODE_VIEWER_DATA_CHECKING private: - using AxisCoords = std::array; + using AxisCoords = std::array; using ExtruderColors = std::vector; using ExtruderTemps = std::vector;