diff --git a/src/libslic3r/GCode/GCodeProcessor.cpp b/src/libslic3r/GCode/GCodeProcessor.cpp index 08aad18b60..240a05ca03 100644 --- a/src/libslic3r/GCode/GCodeProcessor.cpp +++ b/src/libslic3r/GCode/GCodeProcessor.cpp @@ -4233,15 +4233,19 @@ void GCodeProcessor::run_post_process() } // add the given gcode line to the cache - void append_line(const std::string& line) { + void append_line(const std::string& line, const bool ignore_from_move = false) { + if (line.empty()) return; + m_lines.push_back({ line, m_times }); #ifndef NDEBUG m_statistics.add_line(line.length()); #endif // NDEBUG m_size += line.length(); ++m_added_lines_counter; - assert(!m_gcode_lines_map.empty()); - m_gcode_lines_map.back().second = m_added_lines_counter; + if (!ignore_from_move) { + assert(!m_gcode_lines_map.empty()); + m_gcode_lines_map.back().second = m_added_lines_counter; + } } // Insert the gcode lines required by the command cmd by backtracing into the cache @@ -4458,6 +4462,7 @@ void GCodeProcessor::run_post_process() char buf[128]; sprintf(buf, "; total layer number: %u\n", m_layer_id); export_lines.append_line(buf); + processed = true; } } @@ -4534,7 +4539,7 @@ void GCodeProcessor::run_post_process() time_in_minutes(machine.time - it->elapsed_time) }; if (last_exported_main[i] != to_export_main) { export_lines.append_line(format_line_M73_main(machine.line_m73_main_mask.c_str(), - to_export_main.first, to_export_main.second)); + to_export_main.first, to_export_main.second), true); last_exported_main[i] = to_export_main; } // export remaining time to next printer stop @@ -4545,7 +4550,7 @@ void GCodeProcessor::run_post_process() if (last_exported_stop[i] != to_export_stop) { if (to_export_stop > 0) { if (last_exported_stop[i] != to_export_stop) { - export_lines.append_line(format_line_M73_stop_int(machine.line_m73_stop_mask.c_str(), to_export_stop)); + export_lines.append_line(format_line_M73_stop_int(machine.line_m73_stop_mask.c_str(), to_export_stop), true); last_exported_stop[i] = to_export_stop; } } @@ -4566,9 +4571,9 @@ void GCodeProcessor::run_post_process() if (is_last) { if (std::distance(machine.stop_times.begin(), it_stop) == static_cast(machine.stop_times.size() - 1)) - export_lines.append_line(format_line_M73_stop_int(machine.line_m73_stop_mask.c_str(), to_export_stop)); + export_lines.append_line(format_line_M73_stop_int(machine.line_m73_stop_mask.c_str(), to_export_stop), true); else - export_lines.append_line(format_line_M73_stop_float(machine.line_m73_stop_mask.c_str(), time_in_last_minute(it_stop->elapsed_time - it->elapsed_time))); + export_lines.append_line(format_line_M73_stop_float(machine.line_m73_stop_mask.c_str(), time_in_last_minute(it_stop->elapsed_time - it->elapsed_time)), true); last_exported_stop[i] = to_export_stop; }