diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 0d8f557a6..ff51d5821 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -3339,7 +3339,8 @@ std::pair PresetBundle::load_vendor_configs_ std::map& config_maps, std::map& filament_id_maps, PresetCollection* presets_collection, - size_t& count) -> std::string { + size_t& count, + std::map&description_maps) -> std::string { std::string subfile = path + "/" + vendor_name + "/" + subfile_iter.second; // Load the print, filament or printer preset. @@ -3361,7 +3362,6 @@ std::pair PresetBundle::load_vendor_configs_ return reason; } preset_name = key_values[BBL_JSON_KEY_NAME]; - description = key_values[BBL_JSON_KEY_DESCRIPTION]; instantiation = key_values[BBL_JSON_KEY_INSTANTIATION]; auto setting_it = key_values.find(BBL_JSON_KEY_SETTING_ID); if (setting_it != key_values.end()) @@ -3389,6 +3389,8 @@ std::pair PresetBundle::load_vendor_configs_ reason = "Can not find inherits: " + inherits; return reason; } + if (auto ds_iter = description_maps.find(inherits); ds_iter != description_maps.end()) + description = ds_iter->second; } else { if (presets_collection->type() == Preset::TYPE_PRINTER) @@ -3397,6 +3399,13 @@ std::pair PresetBundle::load_vendor_configs_ default_config = &presets_collection->default_preset().config; } config = *default_config; + + if ( auto ds_iter=key_values.find(BBL_JSON_KEY_DESCRIPTION); ds_iter != key_values.end()) + description = ds_iter->second; + + if (!description.empty()) + description_maps.emplace(preset_name, description); + config.apply(config_src); if (instantiation == "false" && "Template" != vendor_name) { config_maps.emplace(preset_name, std::move(config)); @@ -3521,13 +3530,14 @@ std::pair PresetBundle::load_vendor_configs_ std::map configs; std::map filament_id_maps; + std::map description_maps; //3.1) paste the process presets = &this->prints; configs.clear(); filament_id_maps.clear(); for (auto& subfile : process_subfiles) { - std::string reason = parse_subfile(substitution_context, substitutions, flags, subfile, configs, filament_id_maps, presets, presets_loaded); + std::string reason = parse_subfile(substitution_context, substitutions, flags, subfile, configs, filament_id_maps, presets, presets_loaded, description_maps); if (!reason.empty()) { //parse error std::string subfile_path = path + "/" + vendor_name + "/" + subfile.second; @@ -3542,7 +3552,7 @@ std::pair PresetBundle::load_vendor_configs_ filament_id_maps.clear(); for (auto& subfile : filament_subfiles) { - std::string reason = parse_subfile(substitution_context, substitutions, flags, subfile, configs, filament_id_maps, presets, presets_loaded); + std::string reason = parse_subfile(substitution_context, substitutions, flags, subfile, configs, filament_id_maps, presets, presets_loaded, description_maps); if (!reason.empty()) { //parse error std::string subfile_path = path + "/" + vendor_name + "/" + subfile.second; @@ -3557,7 +3567,7 @@ std::pair PresetBundle::load_vendor_configs_ filament_id_maps.clear(); for (auto& subfile : machine_subfiles) { - std::string reason = parse_subfile(substitution_context, substitutions, flags, subfile, configs, filament_id_maps, presets, presets_loaded); + std::string reason = parse_subfile(substitution_context, substitutions, flags, subfile, configs, filament_id_maps, presets, presets_loaded, description_maps); if (!reason.empty()) { //parse error std::string subfile_path = path + "/" + vendor_name + "/" + subfile.second;