1965 {
1966 std::string gcode;
1967 bool single_extruder_printer = config.nozzle_diameter.size() == 1;
1968
1969 if (custom_gcode != nullptr) {
1970
1971 assert(custom_gcode->
type != CustomGCode::ToolChange);
1972
1974 bool color_change = gcode_type == CustomGCode::ColorChange;
1975 bool tool_change = gcode_type == CustomGCode::ToolChange;
1976
1977 assert(! tool_change || single_extruder_printer);
1978
1979 std::string pause_print_msg;
1980 int m600_extruder_before_layer = -1;
1981 if (color_change && custom_gcode->
extruder > 0)
1982 m600_extruder_before_layer = custom_gcode->
extruder - 1;
1983 else if (gcode_type == CustomGCode::PausePrint)
1984 pause_print_msg = custom_gcode->
extra;
1985
1986
1987 if (color_change || tool_change)
1988 {
1989 assert(m600_extruder_before_layer >= 0);
1990
1991
1992 gcode +=
";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Color_Change) +
",T" + std::to_string(m600_extruder_before_layer) +
"," + custom_gcode->
color +
"\n";
1993
1994 if (!single_extruder_printer && m600_extruder_before_layer >= 0 && first_extruder_id != (unsigned)m600_extruder_before_layer
1995
1996 ) {
1998
1999
2003 gcode += "\n";
2004 gcode += "M117 Change filament for Extruder " + std::to_string(m600_extruder_before_layer) + "\n";
2005 }
2006 else {
2008 gcode += "\n";
2009
2010
2011
2013 }
2014 }
2015 else {
2016 if (gcode_type == CustomGCode::PausePrint)
2017 {
2018
2019 gcode +=
";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Pause_Print) +
"\n";
2021 if (!pause_print_msg.empty())
2022 gcode +=
"M117 " + pause_print_msg +
"\n";
2024 }
2025 else {
2026
2027 gcode +=
";" + GCodeProcessor::reserved_tag(GCodeProcessor::ETags::Custom_Code) +
"\n";
2028 if (gcode_type == CustomGCode::Template)
2030 else
2032
2033 }
2035 }
2036 }
2037
2039 }
Definition Config.hpp:720
Definition Config.hpp:2323
bool set_key_value(const std::string &opt_key, ConfigOption *opt)
Definition Config.hpp:2431
std::string placeholder_parser_process(const std::string &name, const std::string &templ, unsigned int current_extruder_id, const DynamicConfig *config_override=nullptr)
Definition GCode.cpp:1683
GCodeWriter & writer()
Definition GCode.hpp:174
std::string unretract()
Definition GCodeWriter.cpp:435
Type
Definition CustomGCode.hpp:14
std::string extra
Definition CustomGCode.hpp:42
int extruder
Definition CustomGCode.hpp:37
Type type
Definition CustomGCode.hpp:36
std::string color
Definition CustomGCode.hpp:40