diff --git a/xs/src/libslic3r/Print.cpp b/xs/src/libslic3r/Print.cpp index 3339162c74..c4a231c786 100644 --- a/xs/src/libslic3r/Print.cpp +++ b/xs/src/libslic3r/Print.cpp @@ -173,6 +173,7 @@ bool Print::invalidate_state_by_config_options(const std::vector &opt_keys) { std::set steps; + std::set osteps; // this method only accepts PrintConfig option keys for (std::vector::const_iterator opt_key = opt_keys.begin(); opt_key != opt_keys.end(); ++opt_key) { @@ -223,6 +224,7 @@ Print::invalidate_state_by_config_options(const std::vector || *opt_key == "output_filename_format" || *opt_key == "perimeter_acceleration" || *opt_key == "post_process" + || *opt_key == "pressure_advance" || *opt_key == "retract_before_travel" || *opt_key == "retract_layer_change" || *opt_key == "retract_length" @@ -245,6 +247,12 @@ Print::invalidate_state_by_config_options(const std::vector || *opt_key == "wipe" || *opt_key == "z_offset") { // these options only affect G-code export, so nothing to invalidate + } else if (*opt_key == "first_layer_extrusion_width") { + osteps.insert(posPerimeters); + osteps.insert(posInfill); + osteps.insert(posSupportMaterial); + steps.insert(psSkirt); + steps.insert(psBrim); } else { // for legacy, if we can't handle this option let's invalidate all steps return this->invalidate_all_steps(); @@ -255,6 +263,11 @@ Print::invalidate_state_by_config_options(const std::vector for (std::set::const_iterator step = steps.begin(); step != steps.end(); ++step) { if (this->invalidate_step(*step)) invalidated = true; } + for (std::set::const_iterator ostep = osteps.begin(); ostep != osteps.end(); ++ostep) { + FOREACH_OBJECT(this, object) { + if ((*object)->invalidate_step(*ostep)) invalidated = true; + } + } return invalidated; } diff --git a/xs/src/libslic3r/PrintObject.cpp b/xs/src/libslic3r/PrintObject.cpp index b4ce83e064..309012c7ca 100644 --- a/xs/src/libslic3r/PrintObject.cpp +++ b/xs/src/libslic3r/PrintObject.cpp @@ -203,6 +203,7 @@ PrintObject::invalidate_state_by_config_options(const std::vector