diff --git a/src/CLI/LoadPrintData.cpp b/src/CLI/LoadPrintData.cpp index 2418527c1c..fa64c43dc8 100644 --- a/src/CLI/LoadPrintData.cpp +++ b/src/CLI/LoadPrintData.cpp @@ -129,7 +129,7 @@ static bool process_input_files(std::vector& models, DynamicPrintConfig& Model model; try { - if (has_full_config_from_profiles(cli)) { + if (has_full_config_from_profiles(cli) || !FileReader::is_project_file(file)) { // we have full banch of options from profiles set // so, just load a geometry model = FileReader::load_model(file); @@ -154,7 +154,7 @@ static bool process_input_files(std::vector& models, DynamicPrintConfig& } // If model for slicing is loaded from 3mf file, then its geometry has to be used and arrange couldn't be apply for this model. - if ((boost::algorithm::iends_with(file, ".3mf") || boost::algorithm::iends_with(file, ".zip")) && + if (FileReader::is_project_file(file) && (!cli.transform_config.has("dont_arrange") || !cli.transform_config.opt_bool("dont_arrange"))) { //So, check a state of "dont_arrange" parameter and set it to true, if its value is false. cli.transform_config.set_key_value("dont_arrange", new ConfigOptionBool(true)); diff --git a/src/libslic3r/FileReader.cpp b/src/libslic3r/FileReader.cpp index cf05144e56..71c87dd1df 100644 --- a/src/libslic3r/FileReader.cpp +++ b/src/libslic3r/FileReader.cpp @@ -30,6 +30,12 @@ namespace Slic3r::FileReader { + +bool is_project_file(const std::string& input_file) +{ + return boost::algorithm::iends_with(input_file, ".3mf") || boost::algorithm::iends_with(input_file, ".zip"); +} + // Loading model from a file, it may be a simple geometry file as STL or OBJ, however it may be a project file as well. static Model read_model_from_file(const std::string& input_file, LoadAttributes options) { @@ -83,15 +89,14 @@ static Model read_all_from_file(const std::string& input_file, boost::optional &prusaslicer_generator_version, LoadAttributes options) { - const bool is_project_file = boost::algorithm::iends_with(input_file, ".3mf") || boost::algorithm::iends_with(input_file, ".zip"); - assert(is_project_file); + assert(is_project_file(input_file)); assert(config != nullptr); assert(config_substitutions != nullptr); Model model; bool result = false; - if (is_project_file) + if (is_project_file(input_file)) result = load_3mf(input_file.c_str(), *config, *config_substitutions, &model, options & LoadAttribute::CheckVersion, prusaslicer_generator_version); else throw Slic3r::RuntimeError(L("Unknown file format. Input file must have .3mf extension.")); diff --git a/src/libslic3r/FileReader.hpp b/src/libslic3r/FileReader.hpp index ab3cb63132..661328b580 100644 --- a/src/libslic3r/FileReader.hpp +++ b/src/libslic3r/FileReader.hpp @@ -35,6 +35,8 @@ namespace FileReader bool looks_like_multipart_object { false }; }; + bool is_project_file(const std::string& input_file); + // Load model from input file and return the its mesh. // Throw RuntimeError if some problem was detected during model loading TriangleMesh load_mesh(const std::string& input_file);