diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 9e77f3e30..ae0e54b45 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1840,6 +1840,7 @@ void ObjectList::load_mesh_object( const TextConfiguration *text_config /* = nullptr*/, const Transform3d * transformation /* = nullptr*/) { + PlaterAfterLoadAutoArrange plater_after_load_auto_arrange; // Add mesh to model as a new object Model& model = wxGetApp().plater()->model(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 0dc178aad..a5b054748 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2440,6 +2440,8 @@ std::vector Plater::priv::load_files(const std::vector& input_ auto *nozzle_dmrs = config->opt("nozzle_diameter"); + PlaterAfterLoadAutoArrange plater_after_load_auto_arrange; + bool one_by_one = input_files.size() == 1 || printer_technology == ptSLA || nozzle_dmrs->values.size() <= 1; if (! one_by_one) { for (const auto &path : input_files) { @@ -2699,6 +2701,9 @@ std::vector Plater::priv::load_files(const std::vector& input_ new_model->add_object(*model_object); } } + + if (is_project_file) + plater_after_load_auto_arrange.disable(); } } @@ -7588,4 +7593,18 @@ SuppressBackgroundProcessingUpdate::~SuppressBackgroundProcessingUpdate() wxGetApp().plater()->schedule_background_process(m_was_scheduled); } +PlaterAfterLoadAutoArrange::PlaterAfterLoadAutoArrange() +{ + Plater* plater = wxGetApp().plater(); + m_enabled = plater->model().objects.empty() && + plater->printer_technology() == ptFFF && + plater->fff_print().config().printer_model.value == "XL"; +} + +PlaterAfterLoadAutoArrange::~PlaterAfterLoadAutoArrange() +{ + if (m_enabled) + wxGetApp().plater()->arrange(); +} + }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index db4349101..fa2ec6508 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -507,6 +507,16 @@ private: bool m_was_scheduled; }; +class PlaterAfterLoadAutoArrange +{ + bool m_enabled{ false }; + +public: + PlaterAfterLoadAutoArrange(); + ~PlaterAfterLoadAutoArrange(); + void disable() { m_enabled = false; } +}; + } // namespace GUI } // namespace Slic3r