From c25c435d523d377ef7bce1b70f9f4bd62eb1b7ba Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Fri, 5 Mar 2021 13:54:29 +0100 Subject: [PATCH] Added a new placeholder for custom toolchange gcode (toolchange_z) This always contains the actual print_z of the toolchange, while layer_z contains the print_z of the print. The two differ in case that wipe tower without sparse layers is used. Related to #3834. --- src/libslic3r/GCode.cpp | 2 ++ src/libslic3r/PrintConfig.cpp | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp index ca714549dbb..51203579856 100644 --- a/src/libslic3r/GCode.cpp +++ b/src/libslic3r/GCode.cpp @@ -285,6 +285,7 @@ namespace Slic3r { config.set_key_value("next_extruder", new ConfigOptionInt((int)new_extruder_id)); config.set_key_value("layer_num", new ConfigOptionInt(gcodegen.m_layer_index)); config.set_key_value("layer_z", new ConfigOptionFloat(tcr.print_z)); + config.set_key_value("toolchange_z", new ConfigOptionFloat(z)); // config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); toolchange_gcode_str = gcodegen.placeholder_parser_process("toolchange_gcode", toolchange_gcode, new_extruder_id, &config); check_add_eol(toolchange_gcode_str); @@ -3003,6 +3004,7 @@ std::string GCode::set_extruder(unsigned int extruder_id, double print_z) config.set_key_value("next_extruder", new ConfigOptionInt((int)extruder_id)); config.set_key_value("layer_num", new ConfigOptionInt(m_layer_index)); config.set_key_value("layer_z", new ConfigOptionFloat(print_z)); + config.set_key_value("toolchange_z", new ConfigOptionFloat(print_z)); config.set_key_value("max_layer_z", new ConfigOptionFloat(m_max_layer_z)); toolchange_gcode_parsed = placeholder_parser_process("toolchange_gcode", toolchange_gcode, extruder_id, &config); gcode += toolchange_gcode_parsed; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 810b651c402..1b44bdf41ff 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -2438,7 +2438,7 @@ void PrintConfigDef::init_fff_params() def = this->add("toolchange_gcode", coString); def->label = L("Tool change G-code"); def->tooltip = L("This custom code is inserted before every toolchange. Placeholder variables for all PrusaSlicer settings " - "as well as {previous_extruder} and {next_extruder} can be used. When a tool-changing command " + "as well as {toolchange_z}, {previous_extruder} and {next_extruder} can be used. When a tool-changing command " "which changes to the correct extruder is included (such as T{next_extruder}), PrusaSlicer will emit no other such command. " "It is therefore possible to script custom behaviour both before and after the toolchange."); def->multiline = true;