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

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbubnikv <bubnikv@gmail.com>2020-01-13 18:01:01 +0300
committerbubnikv <bubnikv@gmail.com>2020-01-13 18:01:20 +0300
commit9a3901e159b618e3e708f40b38cb9a883d592902 (patch)
tree653c6d990ad7c9f36359c34f62bbbee757b189f5 /src/slic3r/GUI/Preset.cpp
parent19f0f50e9816bbef8f328a4e6d48324c3b44cfd5 (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.cpp24
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