482 {
483 unsigned int extruder_id = gcodegen.writer().filament()->id();
484
485
486 bool is_last_use = false;
487 if (gcodegen.m_print != nullptr && !gcodegen.m_print->tool_ordering().empty()) {
488 coordf_t current_z = gcodegen.layer() ? gcodegen.layer()->print_z : gcodegen.writer().get_position().z();
489 const auto& tool_ordering = gcodegen.m_print->tool_ordering();
490 const auto& cfg = gcodegen.config();
492 is_last_use = tool_ordering.is_last_extrusion_layer(current_z, extruder_id);
493 for (
unsigned int f : tool_ordering.all_extruders())
495 is_last_use = tool_ordering.is_last_extrusion_layer(current_z,
f);
496 }
497
498 int temp = 0;
499 if (!is_last_use) {
500 const auto& filament_idle_temp = gcodegen.config().idle_temperature;
501 if (filament_idle_temp.get_at(extruder_id) == 0) {
502 if (gcodegen.config().standby_temperature_delta.value == 0)
503 return std::string();
504 temp = this->
_get_temp(gcodegen) + gcodegen.config().standby_temperature_delta.value;
505 } else {
506 temp = filament_idle_temp.get_at(extruder_id);
507 }
508 }
509
510 std::string
gcode = gcodegen.writer().set_temperature(temp,
false, extruder_id);
512 gcode +=
" ;cooldown\n";
514 }
@ gcode
Definition Time.hpp:14
int imex_physical_heater_for(bool is_imex, const ConfigOptionInts &pem, int logical_id)
Definition IMEXHelpers.cpp:88
double coordf_t
Definition GUI_ObjectList.hpp:46
static double f(double x, double z_sin, double z_cos, bool vertical, bool flip)
Definition FillGyroid.cpp:124