diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 9534b968d0..674073fae3 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2666,8 +2666,18 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato //BBS: gcode writer doesn't know where the real position of extruder is after inserting custom gcode m_writer.set_current_position_clear(false); m_start_gcode_filament = GCodeProcessor::get_gcode_last_filament(machine_start_gcode); - // mark the first filament used in print - file.write_format(";VT%d\n",initial_extruder_id); + + m_writer.init_extruder(initial_non_support_extruder_id); + // add the missing filament start gcode in machine start gcode + { + DynamicConfig config; + config.set_key_value("filament_extruder_id", new ConfigOptionInt((int)(initial_non_support_extruder_id))); + config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); + std::string filament_start_gcode = this->placeholder_parser_process("filament_start_gcode", print.config().filament_start_gcode.values.at(initial_non_support_extruder_id), initial_non_support_extruder_id); + file.writeln(filament_start_gcode); + // mark the first filament used in print + file.write_format(";VT%d\n", initial_extruder_id); + } //flush FanMover buffer to avoid modifying the start gcode if it's manual. if (!machine_start_gcode.empty() && this->m_fan_mover.get() != nullptr)