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:
authorLukáš Hejl <hejl.lukas@gmail.com>2022-08-18 22:12:25 +0300
committerLukáš Hejl <hejl.lukas@gmail.com>2022-08-18 22:17:39 +0300
commit263b23fb468a4d0981de8ecf590cfd5f6d4edbb6 (patch)
tree50e1f1432c2dffac2085baf67a4c7250b9494039
parentbe9cae74a03c1e54cb3819336da1fd531d6f1ffd (diff)
Follow-up to 6f5813a849e40b1bcae97270a317222dff92f5ec: Recalculate infill surfaces when infill_only_where_needed is enabled while switching from the Lightning infill to another infill or vice versa.
-rw-r--r--src/libslic3r/PrintObject.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp
index 5cebbb056..419536bf4 100644
--- a/src/libslic3r/PrintObject.cpp
+++ b/src/libslic3r/PrintObject.cpp
@@ -627,12 +627,21 @@ bool PrintObject::invalidate_state_by_config_options(
|| opt_key == "bottom_fill_pattern"
|| opt_key == "external_fill_link_max_length"
|| opt_key == "fill_angle"
- || opt_key == "fill_pattern"
|| opt_key == "infill_anchor"
|| opt_key == "infill_anchor_max"
|| opt_key == "top_infill_extrusion_width"
|| opt_key == "first_layer_extrusion_width") {
steps.emplace_back(posInfill);
+ } else if (opt_key == "fill_pattern") {
+ steps.emplace_back(posInfill);
+
+ const auto *old_fill_pattern = old_config.option<ConfigOptionEnum<InfillPattern>>(opt_key);
+ const auto *new_fill_pattern = new_config.option<ConfigOptionEnum<InfillPattern>>(opt_key);
+ assert(old_infill && new_infill);
+ // We need to recalculate infill surfaces when infill_only_where_needed is enabled, and we are switching from
+ // the Lightning infill to another infill or vice versa.
+ if (m_config.infill_only_where_needed && (new_fill_pattern->value == ipLightning || old_fill_pattern->value == ipLightning))
+ steps.emplace_back(posPrepareInfill);
} else if (opt_key == "fill_density") {
// One likely wants to reslice only when switching between zero infill to simulate boolean difference (subtracting volumes),
// normal infill and 100% (solid) infill.