Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsupermerill <merill@fr.fr>2019-01-03 21:56:30 +0300
committersupermerill <merill@fr.fr>2019-01-03 21:57:18 +0300
commitb053a23e1e9c870fbf88ed703167f3a0a337c40b (patch)
tree3a0d257d60fa8f32bf59d9175a00b4b78b31c975
parenta48e190137b3345a552bd1588c6bb145af55212a (diff)
option for no z-lift on top solid infill.1.42.0-alpha1.0
-rw-r--r--src/libslic3r/GCode.cpp10
-rw-r--r--src/libslic3r/Print.cpp1
-rw-r--r--src/libslic3r/PrintConfig.cpp7
-rw-r--r--src/libslic3r/PrintConfig.hpp2
-rw-r--r--src/slic3r/GUI/Preset.cpp4
-rw-r--r--src/slic3r/GUI/PresetHints.cpp6
-rw-r--r--src/slic3r/GUI/Tab.cpp7
7 files changed, 25 insertions, 12 deletions
diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp
index 13d439740..4704c65f3 100644
--- a/src/libslic3r/GCode.cpp
+++ b/src/libslic3r/GCode.cpp
@@ -2482,15 +2482,15 @@ std::string GCode::_extrude(const ExtrusionPath &path, std::string description,
{
if (path.role() != m_last_extrusion_role)
{
- m_last_extrusion_role = path.role();
if (m_enable_extrusion_role_markers)
{
char buf[32];
- sprintf(buf, ";_EXTRUSION_ROLE:%d\n", int(m_last_extrusion_role));
+ sprintf(buf, ";_EXTRUSION_ROLE:%d\n", int(path.role()));
gcode += buf;
}
}
}
+ m_last_extrusion_role = path.role();
// adds analyzer tags and updates analyzer's tracking data
if (m_enable_analyzer)
@@ -2665,9 +2665,9 @@ std::string GCode::retract(bool toolchange)
methods even if we performed wipe, since this will ensure the entire retraction
length is honored in case wipe path was too short. */
gcode += toolchange ? m_writer.retract_for_toolchange() : m_writer.retract();
-
- if (m_writer.extruder()->retract_length() > 0 || m_config.use_firmware_retraction)
- gcode += m_writer.lift();
+ if (toolchange || !this->m_config.retract_lift_not_last_layer.value || !(this->m_last_extrusion_role == ExtrusionRole::erTopSolidInfill))
+ if (m_writer.extruder()->retract_length() > 0 || m_config.use_firmware_retraction)
+ gcode += m_writer.lift();
return gcode;
}
diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp
index cab1578d8..407ad5625 100644
--- a/src/libslic3r/Print.cpp
+++ b/src/libslic3r/Print.cpp
@@ -153,6 +153,7 @@ bool Print::invalidate_state_by_config_options(const std::vector<t_config_option
"retract_lift",
"retract_lift_above",
"retract_lift_below",
+ "retract_lift_not_last_layer",
"retract_restart_extra",
"retract_restart_extra_toolchange",
"retract_speed",
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp
index 637de22f3..558e87309 100644
--- a/src/libslic3r/PrintConfig.cpp
+++ b/src/libslic3r/PrintConfig.cpp
@@ -1825,6 +1825,13 @@ void PrintConfigDef::init_fff_params()
def->mode = comAdvanced;
def->default_value = new ConfigOptionFloats { 0. };
+ def = this->add("retract_lift_not_last_layer", coBool);
+ def->label = L("Not on top");
+ def->category = L("Support material");
+ def->tooltip = L("Select this option to not use the z-lift on a top surface.");
+ def->mode = comAdvanced;
+ def->default_value = new ConfigOptionBool(false);
+
def = this->add("retract_restart_extra", coFloats);
def->label = L("Extra length on restart");
def->tooltip = L("When the retraction is compensated after the travel move, the extruder will push "
diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp
index 0cab33423..4c88f3a18 100644
--- a/src/libslic3r/PrintConfig.hpp
+++ b/src/libslic3r/PrintConfig.hpp
@@ -677,6 +677,7 @@ public:
ConfigOptionFloats retract_lift;
ConfigOptionFloats retract_lift_above;
ConfigOptionFloats retract_lift_below;
+ ConfigOptionBool retract_lift_not_last_layer;
ConfigOptionFloats retract_restart_extra;
ConfigOptionFloats retract_restart_extra_toolchange;
ConfigOptionFloats retract_speed;
@@ -747,6 +748,7 @@ protected:
OPT_PTR(retract_lift);
OPT_PTR(retract_lift_above);
OPT_PTR(retract_lift_below);
+ OPT_PTR(retract_lift_not_last_layer);
OPT_PTR(retract_restart_extra);
OPT_PTR(retract_restart_extra_toolchange);
OPT_PTR(retract_speed);
diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp
index 23d632b0c..876bb3b45 100644
--- a/src/slic3r/GUI/Preset.cpp
+++ b/src/slic3r/GUI/Preset.cpp
@@ -405,7 +405,9 @@ const std::vector<std::string>& Preset::nozzle_options()
// ConfigOptionFloats, ConfigOptionPercents, ConfigOptionBools, ConfigOptionStrings
static std::vector<std::string> s_opts {
"nozzle_diameter", "min_layer_height", "max_layer_height", "extruder_offset",
- "retract_length", "retract_lift", "retract_lift_above", "retract_lift_below", "retract_speed", "deretract_speed",
+ "retract_length", "retract_lift", "retract_lift_above", "retract_lift_below",
+ "retract_lift_not_last_layer",
+ "retract_speed", "deretract_speed",
"retract_before_wipe", "retract_restart_extra", "retract_before_travel", "wipe",
"retract_layer_change", "retract_length_toolchange", "retract_restart_extra_toolchange", "extruder_colour",
"default_filament_profile"
diff --git a/src/slic3r/GUI/PresetHints.cpp b/src/slic3r/GUI/PresetHints.cpp
index a7becfa16..01f240975 100644
--- a/src/slic3r/GUI/PresetHints.cpp
+++ b/src/slic3r/GUI/PresetHints.cpp
@@ -252,7 +252,7 @@ std::string PresetHints::recommended_thin_wall_thickness(const PresetBundle &pre
std::string out;
if (layer_height <= 0.f){
- out += _CHB(L("Recommended object thin wall thickness: Not available due to invalid layer height."));
+ out += _CHB(L("Recommended object min wall thickness: Not available due to invalid layer height."));
return out;
}
@@ -269,14 +269,14 @@ std::string PresetHints::recommended_thin_wall_thickness(const PresetBundle &pre
if (num_perimeters > 0) {
int num_lines = std::min(num_perimeters * 2, 10);
char buf[MIN_BUF_LENGTH/*256*/];
- sprintf(buf, _CHB(L("Recommended object thin wall thickness for layer height %.2f and ")), layer_height);
+ sprintf(buf, _CHB(L("Recommended object min wall thickness for layer height %.2f and ")), layer_height);
out += buf;
// Start with the width of two closely spaced
double width = external_perimeter_flow.width + external_perimeter_flow.spacing();
for (int i = 2; i <= num_lines; thin_walls ? ++ i : i += 2) {
if (i > 2)
out += ", ";
- sprintf(buf, _CHB(L("%d lines: %.2lf mm")), i, width);
+ sprintf(buf, _CHB(L("%d perimeter: %.2lf mm")), i/2, width);
out += buf;
width += perimeter_flow.spacing() * (thin_walls ? 1.f : 2.f);
}
diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp
index 7c66b8cf1..70751fd5d 100644
--- a/src/slic3r/GUI/Tab.cpp
+++ b/src/slic3r/GUI/Tab.cpp
@@ -2187,8 +2187,9 @@ void TabPrinter::build_extruder_pages()
optgroup->append_single_option_line("retract_length", extruder_idx);
optgroup->append_single_option_line("retract_lift", extruder_idx);
Line line = { _(L("Only lift Z")), "" };
- line.append_option(optgroup->get_option("retract_lift_above", extruder_idx));
- line.append_option(optgroup->get_option("retract_lift_below", extruder_idx));
+ line.append_option(optgroup->get_option("retract_lift_above", extruder_idx));
+ line.append_option(optgroup->get_option("retract_lift_below", extruder_idx));
+ line.append_option(optgroup->get_option("retract_lift_not_last_layer", extruder_idx));
optgroup->append_line(line);
optgroup->append_single_option_line("retract_speed", extruder_idx);
@@ -2319,7 +2320,7 @@ void TabPrinter::update_fff()
// retract lift above / below only applies if using retract lift
vec.resize(0);
- vec = { "retract_lift_above", "retract_lift_below" };
+ vec = { "retract_lift_above", "retract_lift_below", "retract_lift_not_last_layer" };
for (auto el : vec)
get_field(el, i)->toggle(retraction && m_config->opt_float("retract_lift", i) > 0);