void GCodeExport::switchExtruder(int new_extruder) { if (current_extruder == new_extruder) return; writeRetraction_extruderSwitch(); resetExtrusionValue(); // should be called on the old extruder int old_extruder = current_extruder; current_extruder = new_extruder; if (flavor == EGCodeFlavor::MACH3) { resetExtrusionValue(); // also zero the E value on the new extruder } writeCode(extruder_attr[old_extruder].end_code.c_str()); if (flavor == EGCodeFlavor::MAKERBOT) { *output_stream << "M135 T" << current_extruder << "\n"; } else { *output_stream << "T" << current_extruder << "\n"; } writeCode(extruder_attr[new_extruder].start_code.c_str()); //Change the Z position so it gets re-writting again. We do not know if the switch code modified the Z position. currentPosition.z += 1; }
void GCodeExport::switchExtruder(int new_extruder) { if (current_extruder == new_extruder) return; if (!isRetracted) // assumes the last retraction already was an extruder switch retraction { writeRetraction_extruderSwitch(); } int old_extruder = current_extruder; current_extruder = new_extruder; if (flavor == EGCodeFlavor::MACH3) resetExtrusionValue(); isRetracted = true; writeCode(extruder_attr[old_extruder].end_code.c_str()); if (flavor == EGCodeFlavor::MAKERBOT) *output_stream << "M135 T" << current_extruder << "\n"; else // TinyG TODO: find out what a T code does *output_stream << "T" << current_extruder << "\n"; writeCode(extruder_attr[new_extruder].start_code.c_str()); //Change the Z position so it gets re-writting again. We do not know if the switch code modified the Z position. currentPosition.z += 1; }