From 2bc6679a6214d7fd24aafb3f456f309ff93247ae Mon Sep 17 00:00:00 2001 From: Vojtech Bubnik Date: Tue, 19 Jan 2021 15:17:47 +0100 Subject: [PATCH] Partial revert of 1bffc2b99bedb0d0d76baeec52523dc1fef737e1 (deriving the printer technology from the merged configs). --- src/PrusaSlicer.cpp | 24 +++++++++++++++++------- src/libslic3r/PrintConfig.cpp | 26 ++++++++------------------ src/libslic3r/PrintConfig.hpp | 2 +- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/PrusaSlicer.cpp b/src/PrusaSlicer.cpp index a990620f5..fbcf531b5 100644 --- a/src/PrusaSlicer.cpp +++ b/src/PrusaSlicer.cpp @@ -57,6 +57,12 @@ using namespace Slic3r; +static PrinterTechnology get_printer_technology(const DynamicConfig &config) +{ + const ConfigOptionEnum *opt = config.option>("printer_technology"); + return (opt == nullptr) ? ptUnknown : opt->value; +} + int CLI::run(int argc, char **argv) { // Mark the main thread for the debugger and for runtime checks. @@ -95,7 +101,7 @@ int CLI::run(int argc, char **argv) m_extra_config.apply(m_config, true); m_extra_config.normalize_fdm(); - PrinterTechnology printer_technology = Slic3r::printer_technology(m_config); + PrinterTechnology printer_technology = get_printer_technology(m_config); bool start_gui = m_actions.empty() && // cutting transformations are setting an "export" action. @@ -130,7 +136,7 @@ int CLI::run(int argc, char **argv) return 1; } config.normalize_fdm(); - PrinterTechnology other_printer_technology = Slic3r::printer_technology(config); + PrinterTechnology other_printer_technology = get_printer_technology(config); if (printer_technology == ptUnknown) { printer_technology = other_printer_technology; } else if (printer_technology != other_printer_technology && other_printer_technology != ptUnknown) { @@ -167,7 +173,7 @@ int CLI::run(int argc, char **argv) // 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); - PrinterTechnology other_printer_technology = Slic3r::printer_technology(config); + PrinterTechnology other_printer_technology = get_printer_technology(config); if (printer_technology == ptUnknown) { printer_technology = other_printer_technology; } @@ -224,10 +230,12 @@ int CLI::run(int argc, char **argv) m_print_config.apply(sla_print_config, true); } - std::string validity = m_print_config.validate(); - if (!validity.empty()) { - boost::nowide::cerr << "error: " << validity << std::endl; - return 1; + { + std::string validity = m_print_config.validate(); + if (! validity.empty()) { + boost::nowide::cerr << "Error: The composite configation is not valid: " << validity << std::endl; + return 1; + } } // Loop through transform options. @@ -645,6 +653,7 @@ bool CLI::setup(int argc, char **argv) set_logging_level(opt_loglevel->value); } + //FIXME Validating at this stage most likely does not make sense, as the config is not fully initialized yet. std::string validity = m_config.validate(); // Initialize with defaults. @@ -654,6 +663,7 @@ bool CLI::setup(int argc, char **argv) set_data_dir(m_config.opt_string("datadir")); + //FIXME Validating at this stage most likely does not make sense, as the config is not fully initialized yet. if (!validity.empty()) { boost::nowide::cerr << "error: " << validity << std::endl; return false; diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index b3084f550..da2b65568 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3299,15 +3299,20 @@ DynamicPrintConfig* DynamicPrintConfig::new_from_defaults_keys(const std::vector double min_object_distance(const ConfigBase &cfg) { + const ConfigOptionEnum *opt_printer_technology = cfg.option>("printer_technology"); + auto printer_technology = opt_printer_technology ? opt_printer_technology->value : ptUnknown; + double ret = 0.; - - if (printer_technology(cfg) == ptSLA) ret = 6.; + + if (printer_technology == ptSLA) + ret = 6.; else { auto ecr_opt = cfg.option("extruder_clearance_radius"); auto dd_opt = cfg.option("duplicate_distance"); auto co_opt = cfg.option("complete_objects"); - if (!ecr_opt || !dd_opt || !co_opt) ret = 0.; + if (!ecr_opt || !dd_opt || !co_opt) + ret = 0.; else { // min object distance is max(duplicate_distance, clearance_radius) ret = (co_opt->value && ecr_opt->value > dd_opt->value) ? @@ -3318,21 +3323,6 @@ double min_object_distance(const ConfigBase &cfg) return ret; } -PrinterTechnology printer_technology(const ConfigBase &cfg) -{ - const ConfigOptionEnum *opt = cfg.option>("printer_technology"); - - if (opt) return opt->value; - - const ConfigOptionBool *export_opt = cfg.option("export_sla"); - if (export_opt && export_opt->getBool()) return ptSLA; - - export_opt = cfg.option("export_gcode"); - if (export_opt && export_opt->getBool()) return ptFFF; - - return ptUnknown; -} - void DynamicPrintConfig::normalize_fdm() { if (this->has("extruder")) { diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp index b5896891e..fa09cfb17 100644 --- a/src/libslic3r/PrintConfig.hpp +++ b/src/libslic3r/PrintConfig.hpp @@ -246,7 +246,7 @@ extern const PrintConfigDef print_config_def; class StaticPrintConfig; -PrinterTechnology printer_technology(const ConfigBase &cfg); +// Minimum object distance for arrangement, based on printer technology. double min_object_distance(const ConfigBase &cfg); // Slic3r dynamic configuration, used to override the configuration