diff --git a/src/PrusaSlicer.cpp b/src/PrusaSlicer.cpp index 4ca32a2113..105078fa39 100644 --- a/src/PrusaSlicer.cpp +++ b/src/PrusaSlicer.cpp @@ -964,7 +964,12 @@ std::set query_options = { bool CLI::processed_profiles_sharing() { if (m_profiles_sharing.empty()) +#if 0 // fsFIXME !!! just for the test + DynamicPrintConfig config = Slic3r::load_full_print_config("0.20mm QUALITY @MINI", "Prusament PLA", "Original Prusa MINI & MINI+"); + return true; +#else return false; +#endif std::string ret; for (auto const& opt_key : m_profiles_sharing) { diff --git a/src/slic3r/Utils/ProfilesSharingUtils.cpp b/src/slic3r/Utils/ProfilesSharingUtils.cpp index 4857704f34..92c19cca56 100644 --- a/src/slic3r/Utils/ProfilesSharingUtils.cpp +++ b/src/slic3r/Utils/ProfilesSharingUtils.cpp @@ -452,4 +452,40 @@ std::string get_json_print_filament_profiles(const std::string& printer_profile) return ""; } +// Helper function for FS +DynamicPrintConfig load_full_print_config(const std::string& print_preset_name, const std::string& filament_preset_name, const std::string& printer_preset_name) +{ + DynamicPrintConfig config = {}; + + if (is_datadir()) { + PresetBundle preset_bundle; + + if (load_preset_bandle_from_datadir(preset_bundle)) { + config.apply(FullPrintConfig::defaults()); + + const Preset* print_preset = preset_bundle.prints.find_preset(print_preset_name); + if (print_preset) + config.apply_only(print_preset->config, print_preset->config.keys()); + else + printf("Print profile '%s' wasn't found.\n", print_preset->name.c_str()); + + const Preset* filament_preset = preset_bundle.filaments.find_preset(filament_preset_name); + if (filament_preset) + config.apply_only(filament_preset->config, filament_preset->config.keys()); + else + printf("Filament profile '%s' wasn't found.\n", filament_preset->name.c_str()); + + const Preset* printer_preset = preset_bundle.printers.find_preset(printer_preset_name); + if (printer_preset) + config.apply_only(printer_preset->config, printer_preset->config.keys()); + else + printf("Printer profile '%s' wasn't found.\n", printer_preset->name.c_str()); + } + } + else + printf("Datadir wasn't found\n"); + + return config; +} + } // namespace Slic3r diff --git a/src/slic3r/Utils/ProfilesSharingUtils.hpp b/src/slic3r/Utils/ProfilesSharingUtils.hpp index 62de5a15b5..0edb0a96eb 100644 --- a/src/slic3r/Utils/ProfilesSharingUtils.hpp +++ b/src/slic3r/Utils/ProfilesSharingUtils.hpp @@ -5,7 +5,7 @@ #ifndef slic3r_ProfilesSharingUtils_hpp_ #define slic3r_ProfilesSharingUtils_hpp_ -#include "libslic3r/Config.hpp" +#include "libslic3r/PrintConfig.hpp" namespace Slic3r { @@ -18,6 +18,8 @@ std::string get_json_print_filament_profiles(const std::string& printer_profile) std::string GetDataDir(); #endif //__APPLE__ +DynamicPrintConfig load_full_print_config(const std::string& print_preset, const std::string& filament_preset, const std::string& printer_preset); + } // namespace Slic3r #endif // slic3r_ProfilesSharingUtils_hpp_