From a99b006b98a302436e7d965f052a7a9ab5034773 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Sat, 20 May 2017 15:29:25 +0200 Subject: [PATCH] Implemented https://github.com/prusa3d/Slic3r/issues/199 by merging the work by @lordofhyphens done on https://github.com/alexrj/Slic3r/issues/3268 --- lib/Slic3r/GUI/Tab.pm | 3 ++- slic3r.pl | 1 + xs/src/libslic3r/GCode.cpp | 2 +- xs/src/libslic3r/PrintConfig.cpp | 6 ++++++ xs/src/libslic3r/PrintConfig.hpp | 2 ++ 5 files changed, 12 insertions(+), 2 deletions(-) diff --git a/lib/Slic3r/GUI/Tab.pm b/lib/Slic3r/GUI/Tab.pm index 3652fb74e..9009264e1 100644 --- a/lib/Slic3r/GUI/Tab.pm +++ b/lib/Slic3r/GUI/Tab.pm @@ -1159,7 +1159,7 @@ sub build { serial_port serial_speed octoprint_host octoprint_apikey use_firmware_retraction - use_volumetric_e variable_layer_height + use_volumetric_e set_and_wait_temperatures variable_layer_height single_extruder_multi_material start_gcode end_gcode before_layer_gcode layer_gcode toolchange_gcode nozzle_diameter extruder_offset retract_length retract_lift retract_speed deretract_speed retract_before_wipe retract_restart_extra retract_before_travel retract_layer_change wipe @@ -1366,6 +1366,7 @@ sub build { $optgroup->append_single_option_line('use_firmware_retraction'); $optgroup->append_single_option_line('use_volumetric_e'); $optgroup->append_single_option_line('variable_layer_height'); + $optgroup->append_single_option_line('set_and_wait_temperatures'); } } { diff --git a/slic3r.pl b/slic3r.pl index a6eee4881..681b2fa6d 100755 --- a/slic3r.pl +++ b/slic3r.pl @@ -304,6 +304,7 @@ $j --use-relative-e-distances Enable this to get relative E values (default: no) --use-firmware-retraction Enable firmware-controlled retraction using G10/G11 (default: no) --use-volumetric-e Express E in cubic millimeters and prepend M200 (default: no) + --set-and-wait-temperatures Use M190 instead of M140 for temperature changes past the first (default: no) --gcode-comments Make G-code verbose by adding comments (default: no) Filament options: diff --git a/xs/src/libslic3r/GCode.cpp b/xs/src/libslic3r/GCode.cpp index 601293b2d..5d045deed 100644 --- a/xs/src/libslic3r/GCode.cpp +++ b/xs/src/libslic3r/GCode.cpp @@ -398,7 +398,7 @@ bool GCode::do_export(FILE *file, Print &print) if (print.config.first_layer_bed_temperature.value > 0 && boost::ifind_first(print.config.start_gcode.value, std::string("M140")).empty() && boost::ifind_first(print.config.start_gcode.value, std::string("M190")).empty()) - write(file, m_writer.set_bed_temperature(print.config.first_layer_bed_temperature.value, true)); + write(file, m_writer.set_bed_temperature(print.config.first_layer_bed_temperature.value, print.config.set_and_wait_temperatures.value)); // Get optimal tool ordering to minimize tool switches of a multi-exruder print. // For a print by objects, find the 1st printing object. diff --git a/xs/src/libslic3r/PrintConfig.cpp b/xs/src/libslic3r/PrintConfig.cpp index 9eb661ea2..c4b0df611 100644 --- a/xs/src/libslic3r/PrintConfig.cpp +++ b/xs/src/libslic3r/PrintConfig.cpp @@ -1498,6 +1498,12 @@ PrintConfigDef::PrintConfigDef() def->cli = "use-volumetric-e!"; def->default_value = new ConfigOptionBool(false); + def = this->add("set_and_wait_temperatures", coBool); + def->label = "Use Set and Wait for changing bed temperatures"; + def->tooltip = "Check this to change gcode for temperature changes from not waiting (usually M140) to waiting (usually M190). Only necessary if you have a slow-to-heat bed and the first layer bed temp is lower than the other layers."; + def->cli = "set-and-wait-temperatures!"; + def->default_value = new ConfigOptionBool(false); + def = this->add("variable_layer_height", coBool); def->label = "Enable variable layer height feature"; def->tooltip = "Some printers or printer setups may have difficulties printing with a variable layer height. Enabled by default."; diff --git a/xs/src/libslic3r/PrintConfig.hpp b/xs/src/libslic3r/PrintConfig.hpp index a30d39172..cac7b3ad2 100644 --- a/xs/src/libslic3r/PrintConfig.hpp +++ b/xs/src/libslic3r/PrintConfig.hpp @@ -350,6 +350,7 @@ public: ConfigOptionBool use_firmware_retraction; ConfigOptionBool use_relative_e_distances; ConfigOptionBool use_volumetric_e; + ConfigOptionBool set_and_wait_temperatures; ConfigOptionBool variable_layer_height; GCodeConfig(bool initialize = true) : StaticPrintConfig() { @@ -392,6 +393,7 @@ public: OPT_PTR(use_firmware_retraction); OPT_PTR(use_relative_e_distances); OPT_PTR(use_volumetric_e); + OPT_PTR(set_and_wait_temperatures); OPT_PTR(variable_layer_height); return NULL; };