diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index 8818cb3c21..e5622aefa8 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -2810,16 +2810,25 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato m_writer.set_current_position_clear(false); m_start_gcode_filament = GCodeProcessor::get_gcode_last_filament(machine_start_gcode); - 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,&config); - file.writeln(filament_start_gcode); - // mark the first filament used in print - file.write_format(";VT%d\n", initial_extruder_id); + if (is_bbl_printers) { + 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,&config); + file.writeln(filament_start_gcode); + // mark the first filament used in print + file.write_format(";VT%d\n", initial_extruder_id); + } + // Orca: add missing PA settings for initial filament + if (m_config.enable_pressure_advance.get_at(initial_non_support_extruder_id)) { + file.write(m_writer.set_pressure_advance(m_config.pressure_advance.get_at(initial_non_support_extruder_id))); + // Orca: Adaptive PA + // Reset Adaptive PA processor last PA value + m_pa_processor->resetPreviousPA(m_config.pressure_advance.get_at(initial_non_support_extruder_id)); + } } //flush FanMover buffer to avoid modifying the start gcode if it's manual. @@ -7352,6 +7361,9 @@ std::string GCode::set_extruder(unsigned int new_filament_id, double print_z, bo if (m_config.enable_pressure_advance.get_at(new_filament_id)) { gcode += m_writer.set_pressure_advance(m_config.pressure_advance.get_at(new_filament_id)); + // Orca: Adaptive PA + // Reset Adaptive PA processor last PA value + m_pa_processor->resetPreviousPA(m_config.pressure_advance.get_at(new_filament_id)); } //Orca: tool changer or IDEX's firmware may change Z position, so we set it to unknown/undefined m_last_pos_defined = false;