diff --git a/src/libslic3r/Config.hpp b/src/libslic3r/Config.hpp index fb77e85e5..2b87968f5 100644 --- a/src/libslic3r/Config.hpp +++ b/src/libslic3r/Config.hpp @@ -550,6 +550,8 @@ public: if (inherits->size() != rhs->size()) throw ConfigurationError("ConfigOptionVector::set_with_nil(): rhs size different with inherits size"); + this->values.resize(inherits->size(), this->values.front()); + for (size_t i = 0; i < inherits_opt->size(); i= i+stride) { bool set_nil = true; for (size_t j = 0; j < stride; j++) { diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index ca3cc2c8f..965159ca3 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -544,7 +544,9 @@ bool Preset::save(DynamicPrintConfig* parent_config) ConfigOptionVectorBase* opt_vec_src = static_cast(opt_src); ConfigOptionVectorBase* opt_vec_dst = static_cast(opt_dst); ConfigOptionVectorBase* opt_vec_inherit = static_cast(parent_config->option(option)); - if (key_set1->find(option) != key_set1->end()) { + if (opt_vec_src->size() == 1) + opt_dst->set(opt_src); + else if (key_set1->find(option) != key_set1->end()) { opt_vec_dst->set_with_nil(opt_vec_src, opt_vec_inherit, 1); } else if (key_set2->find(option) != key_set2->end()) {