diff options
author | bubnikv <bubnikv@gmail.com> | 2020-01-13 18:01:01 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2020-01-13 18:01:20 +0300 |
commit | 9a3901e159b618e3e708f40b38cb9a883d592902 (patch) | |
tree | 653c6d990ad7c9f36359c34f62bbbee757b189f5 /src/slic3r/GUI/Preset.cpp | |
parent | 19f0f50e9816bbef8f328a4e6d48324c3b44cfd5 (diff) |
Support for new "default_materials" property at PrinterModel
of system profiles. The "default_materials" key accepts
"default_filaments" as well.
Diffstat (limited to 'src/slic3r/GUI/Preset.cpp')
-rw-r--r-- | src/slic3r/GUI/Preset.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index c20a5bb28..b89000891 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -184,6 +184,14 @@ VendorProfile VendorProfile::from_ini(const ptree &tree, const boost::filesystem } else { BOOST_LOG_TRIVIAL(error) << boost::format("Vendor bundle: `%1%`: Malformed variants field: `%2%`") % id % variants_field; } + auto default_materials_field = section.second.get<std::string>("default_materials", ""); + if (default_materials_field.empty()) + default_materials_field = section.second.get<std::string>("default_filaments", ""); + if (Slic3r::unescape_strings_cstyle(default_materials_field, model.default_materials)) { + Slic3r::sort_remove_duplicates(model.default_materials); + } else { + BOOST_LOG_TRIVIAL(error) << boost::format("Vendor bundle: `%1%`: Malformed default_materials field: `%2%`") % id % default_materials_field; + } model.bed_model = section.second.get<std::string>("bed_model", ""); model.bed_texture = section.second.get<std::string>("bed_texture", ""); if (! model.id.empty() && ! model.variants.empty()) @@ -1502,4 +1510,20 @@ const Preset* PrinterPresetCollection::find_by_model_id(const std::string &model return it != cend() ? &*it : nullptr; } +namespace PresetUtils { + const VendorProfile::PrinterModel* system_printer_model(const Preset &preset) + { + const VendorProfile::PrinterModel *out = nullptr; + if (preset.vendor != nullptr) { + auto *printer_model = preset.config.opt<ConfigOptionString>("printer_model"); + if (printer_model != nullptr && ! printer_model->value.empty()) { + auto it = std::find_if(preset.vendor->models.begin(), preset.vendor->models.end(), [printer_model](const VendorProfile::PrinterModel &pm) { return pm.id == printer_model->value; }); + if (it != preset.vendor->models.end()) + out = &(*it); + } + } + return out; + } +} // namespace PresetUtils + } // namespace Slic3r |