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:
Diffstat (limited to 'src/PrusaSlicer.cpp')
-rw-r--r--src/PrusaSlicer.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/PrusaSlicer.cpp b/src/PrusaSlicer.cpp
index 17811f3c9..ff951e6b4 100644
--- a/src/PrusaSlicer.cpp
+++ b/src/PrusaSlicer.cpp
@@ -110,7 +110,8 @@ int CLI::run(int argc, char **argv)
boost::algorithm::iends_with(boost::filesystem::path(argv[0]).filename().string(), GCODEVIEWER_APP_CMD);
#endif // _WIN32
- const std::vector<std::string> &load_configs = m_config.option<ConfigOptionStrings>("load", true)->values;
+ const std::vector<std::string> &load_configs = m_config.option<ConfigOptionStrings>("load", true)->values;
+ const ForwardCompatibilitySubstitutionRule config_substitution_rule = m_config.option<ConfigOptionEnum<ForwardCompatibilitySubstitutionRule>>("config_compatibility", true)->value;
// load config files supplied via --load
for (auto const &file : load_configs) {
@@ -122,13 +123,19 @@ int CLI::run(int argc, char **argv)
return 1;
}
}
- DynamicPrintConfig config;
+ DynamicPrintConfig config;
+ ConfigSubstitutions config_substitutions;
try {
- config.load(file);
+ config_substitutions = config.load(file, config_substitution_rule);
} catch (std::exception &ex) {
- boost::nowide::cerr << "Error while reading config file: " << ex.what() << std::endl;
+ boost::nowide::cerr << "Error while reading config file \"" << file << "\": " << ex.what() << std::endl;
return 1;
}
+ if (! config_substitutions.empty()) {
+ boost::nowide::cout << "The following configuration values were substituted when loading \" << file << \":\n";
+ for (const ConfigSubstitution &subst : config_substitutions)
+ boost::nowide::cout << "\tkey = \"" << subst.opt_def->opt_key << "\"\t loaded = \"" << subst.old_value << "\tsubstituted = \"" << subst.new_value->serialize() << "\"\n";
+ }
config.normalize_fdm();
PrinterTechnology other_printer_technology = Slic3r::printer_technology(config);
if (printer_technology == ptUnknown) {
@@ -166,7 +173,9 @@ int CLI::run(int argc, char **argv)
try {
// When loading an AMF or 3MF, config is imported as well, including the printer technology.
DynamicPrintConfig config;
- model = Model::read_from_file(file, &config, true);
+ ConfigSubstitutionContext config_substitutions(config_substitution_rule);
+ //FIXME should we check the version here? // | Model::LoadAttribute::CheckVersion ?
+ model = Model::read_from_file(file, &config, &config_substitutions, Model::LoadAttribute::AddDefaultInstances);
PrinterTechnology other_printer_technology = Slic3r::printer_technology(config);
if (printer_technology == ptUnknown) {
printer_technology = other_printer_technology;
@@ -175,6 +184,11 @@ int CLI::run(int argc, char **argv)
boost::nowide::cerr << "Mixing configurations for FFF and SLA technologies" << std::endl;
return 1;
}
+ if (! config_substitutions.substitutions.empty()) {
+ boost::nowide::cout << "The following configuration values were substituted when loading \" << file << \":\n";
+ for (const ConfigSubstitution& subst : config_substitutions.substitutions)
+ boost::nowide::cout << "\tkey = \"" << subst.opt_def->opt_key << "\"\t loaded = \"" << subst.old_value << "\tsubstituted = \"" << subst.new_value->serialize() << "\"\n";
+ }
// config is applied to m_print_config before the current m_config values.
config += std::move(m_print_config);
m_print_config = std::move(config);