From 55b483fcf140b8e533dca534305fc2f4fad2c192 Mon Sep 17 00:00:00 2001 From: supermerill Date: Mon, 8 Jun 2020 00:17:09 +0200 Subject: [PATCH] #276 fix klipper dual extruder problem small voron config fix --- resources/profiles/Voron.ini | 4 ++-- src/libslic3r/GCode/Analyzer.cpp | 13 +++++++++++++ src/libslic3r/GCodeWriter.cpp | 10 ++++++++-- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/resources/profiles/Voron.ini b/resources/profiles/Voron.ini index 23abf85eeaf..7db1d046138 100644 --- a/resources/profiles/Voron.ini +++ b/resources/profiles/Voron.ini @@ -235,12 +235,12 @@ printer_model = Voron_v2_250_aferburner printer_notes = Unoffical profile, for now.\nE3DV6 [printer:*Voron_v2_300_aferburner*] -inherits = *Voron_v2_250*; *afterburner* +inherits = *Voron_v2_300*; *afterburner* printer_model = Voron_v2_300_aferburner printer_notes = Unoffical profile, for now.\nE3DV6 [printer:*Voron_v2_350_aferburner*] -inherits = *Voron_v2_250*; *afterburner* +inherits = *Voron_v2_350*; *afterburner* printer_model = Voron_v2_350_aferburner printer_notes = Unoffical profile, for now.\nE3DV6 diff --git a/src/libslic3r/GCode/Analyzer.cpp b/src/libslic3r/GCode/Analyzer.cpp index 15a71593aa6..9e05fa00f6b 100644 --- a/src/libslic3r/GCode/Analyzer.cpp +++ b/src/libslic3r/GCode/Analyzer.cpp @@ -301,6 +301,19 @@ void GCodeAnalyzer::_process_gcode_line(GCodeReader&, const GCodeReader::GCodeLi break; } } + if (this->m_gcode_flavor == GCodeFlavor::gcfKlipper) { + if (cmd == "ACTIVATE_EXTRUDER") { + std::string rawline = line.raw(); + std::string trsf; + while (rawline.back() >= '0' && rawline.back() <= '9') { + trsf = rawline.back() + trsf; + rawline.resize(rawline.size() - 1); + } + if (trsf.empty()) + trsf = "0"; + _processT("T"+ trsf); + } + } } // puts the line back into the gcode diff --git a/src/libslic3r/GCodeWriter.cpp b/src/libslic3r/GCodeWriter.cpp index d666556fa19..5b428885b1f 100644 --- a/src/libslic3r/GCodeWriter.cpp +++ b/src/libslic3r/GCodeWriter.cpp @@ -260,7 +260,7 @@ std::string GCodeWriter::toolchange_prefix() const { return FLAVOR_IS(gcfMakerWare) ? "M135 T" : FLAVOR_IS(gcfSailfish) ? "M108 T" : - FLAVOR_IS(gcfKlipper) ? "ACTIVATE_EXTRUDER EXTRUDER=extruder" : + FLAVOR_IS(gcfKlipper) ? "ACTIVATE_EXTRUDER EXTRUDER=" : "T"; } @@ -292,7 +292,13 @@ std::string GCodeWriter::toolchange(unsigned int tool_id) // if we are running a single-extruder setup, just set the extruder and return nothing std::ostringstream gcode; if (this->multiple_extruders) { - gcode << this->toolchange_prefix() << tool_id; + if (FLAVOR_IS(gcfKlipper)) { + gcode << this->toolchange_prefix() << "extruder"; + if (tool_id > 0) + gcode << tool_id; + } else { + gcode << this->toolchange_prefix() << tool_id; + } if (this->config.gcode_comments) gcode << " ; change extruder"; gcode << "\n";