ENH: Support skipping flushing when skipping object in sequential (by-object) printing.

Jira: O1-16971

Change-Id: I6b80f062f69bf02a77b2f8a3f9fa300a40b23e26
(cherry picked from commit 1679f0dd6121d6198b01e020799b3352579504f9)
This commit is contained in:
weizhen.xie
2025-09-25 12:13:41 +08:00
committed by Noisyfox
parent 97b07816ed
commit ff02fa7665

View File

@@ -3020,10 +3020,14 @@ void GCode::_do_export(Print& print, GCodeOutputStream &file, ThumbnailsGenerato
if (m_writer.need_toolchange(initial_extruder_id)) { if (m_writer.need_toolchange(initial_extruder_id)) {
const PrintObjectConfig& object_config = object.config(); const PrintObjectConfig& object_config = object.config();
coordf_t initial_layer_print_height = print.config().initial_layer_print_height.value; coordf_t initial_layer_print_height = print.config().initial_layer_print_height.value;
if (m_enable_exclude_object && print.config().support_object_skip_flush.value) {
m_filament_instances_code = _encode_label_ids_to_base64({(*print_object_instance_sequential_active)->model_instance->get_labeled_id()});
}
file.write(this->set_extruder(initial_extruder_id, initial_layer_print_height, true)); file.write(this->set_extruder(initial_extruder_id, initial_layer_print_height, true));
prime_extruder = true; prime_extruder = true;
} } else {
else {
file.write(this->retract()); file.write(this->retract());
} }
file.write(m_writer.travel_to_z(m_max_layer_z + m_writer.config.z_hop.get_at(initial_extruder_id))); file.write(m_writer.travel_to_z(m_max_layer_z + m_writer.config.z_hop.get_at(initial_extruder_id)));
@@ -4794,7 +4798,7 @@ LayerResult GCode::process_layer(
gcode += generate_skirt(print, print.skirt(), Point(0, 0), layer.object()->config().skirt_start_angle, layer_tools, layer, gcode += generate_skirt(print, print.skirt(), Point(0, 0), layer.object()->config().skirt_start_angle, layer_tools, layer,
extruder_id); extruder_id);
if (m_enable_exclude_object && print.config().support_object_skip_flush.value) { if (print.config().print_sequence == PrintSequence::ByLayer && m_enable_exclude_object && print.config().support_object_skip_flush.value) {
std::vector<size_t> filament_instances_id; std::vector<size_t> filament_instances_id;
for (InstanceToPrint &instance : filament_to_print_instances[extruder_id]) filament_instances_id.emplace_back(instance.label_object_id); for (InstanceToPrint &instance : filament_to_print_instances[extruder_id]) filament_instances_id.emplace_back(instance.label_object_id);
m_filament_instances_code = _encode_label_ids_to_base64(filament_instances_id); m_filament_instances_code = _encode_label_ids_to_base64(filament_instances_id);