mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-01 10:11:58 +08:00
After issuing the color change custom G-code, which is most likely
just M600, reset the internal retract counter, so that a retract will happen after the firmware returns from M600 to the initial position. Fixes "Blobs on print after manual color change #6362"
This commit is contained in:
parent
573d2d8a22
commit
f1ef8a013f
@ -1905,6 +1905,7 @@ std::vector<GCode::InstanceToPrint> GCode::sort_print_object_instances(
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::string GCode::emit_custom_gcode_per_print_z(
|
std::string GCode::emit_custom_gcode_per_print_z(
|
||||||
|
GCode &gcodegen,
|
||||||
const CustomGCode::Item *custom_gcode,
|
const CustomGCode::Item *custom_gcode,
|
||||||
// ID of the first extruder printing this layer.
|
// ID of the first extruder printing this layer.
|
||||||
uint16_t first_extruder_id,
|
uint16_t first_extruder_id,
|
||||||
@ -1966,6 +1967,10 @@ std::string GCode::emit_custom_gcode_per_print_z(
|
|||||||
} else {
|
} else {
|
||||||
gcode += print.config().color_change_gcode;//ColorChangeCode;
|
gcode += print.config().color_change_gcode;//ColorChangeCode;
|
||||||
gcode += "\n";
|
gcode += "\n";
|
||||||
|
//FIXME Tell G-code writer that M600 filled the extruder, thus the G-code writer shall reset the extruder to unretracted state after
|
||||||
|
// return from M600. Thus the G-code generated by the following line is ignored.
|
||||||
|
// see GH issue #6362
|
||||||
|
gcodegen.writer().unretract();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (gcode_type == CustomGCode::PausePrint) // Pause print
|
if (gcode_type == CustomGCode::PausePrint) // Pause print
|
||||||
@ -2186,7 +2191,7 @@ void GCode::process_layer(
|
|||||||
|
|
||||||
if (single_object_instance_idx == size_t(-1)) {
|
if (single_object_instance_idx == size_t(-1)) {
|
||||||
// Normal (non-sequential) print.
|
// Normal (non-sequential) print.
|
||||||
gcode += this->emit_custom_gcode_per_print_z(layer_tools.custom_gcode, first_extruder_id, print, print_stat);
|
gcode += this->emit_custom_gcode_per_print_z(*this, layer_tools.custom_gcode, first_extruder_id, print, print_stat);
|
||||||
}
|
}
|
||||||
// Extrude skirt at the print_z of the raft layers and normal object layers
|
// Extrude skirt at the print_z of the raft layers and normal object layers
|
||||||
// not at the print_z of the interlaced support material layers.
|
// not at the print_z of the interlaced support material layers.
|
||||||
|
@ -183,7 +183,7 @@ public:
|
|||||||
static void append_full_config(const Print& print, std::string& str);
|
static void append_full_config(const Print& print, std::string& str);
|
||||||
|
|
||||||
// called by porcess_layer, do the color change / custom gcode
|
// called by porcess_layer, do the color change / custom gcode
|
||||||
std::string emit_custom_gcode_per_print_z(const CustomGCode::Item* custom_gcode, uint16_t first_extruder_id, const Print& print, PrintStatistics& stats);
|
std::string emit_custom_gcode_per_print_z(GCode& gcodegen, const CustomGCode::Item* custom_gcode, uint16_t first_extruder_id, const Print& print, PrintStatistics& stats);
|
||||||
|
|
||||||
// Object and support extrusions of the same PrintObject at the same print_z.
|
// Object and support extrusions of the same PrintObject at the same print_z.
|
||||||
// public, so that it could be accessed by free helper functions from GCode.cpp
|
// public, so that it could be accessed by free helper functions from GCode.cpp
|
||||||
|
Loading…
x
Reference in New Issue
Block a user