diff --git a/src/GUI/Plater.cpp b/src/GUI/Plater.cpp index 6336fc3f1..25b99ec16 100644 --- a/src/GUI/Plater.cpp +++ b/src/GUI/Plater.cpp @@ -373,12 +373,15 @@ void Plater::refresh_canvases() { } void Plater::arrange() { - // pause background process - Slic3r::Log::info(LogChannel, L"Called arrange()"); - auto bb {Slic3r::BoundingBoxf(this->config->get("bed_shape").values)}; - bool success {this->model->arrange_objects(5, &bb)}; + // TODO pause background process + const Slic3r::BoundingBoxf bb {Slic3r::BoundingBoxf(this->config->get("bed_shape").values)}; + bool success {this->model->arrange_objects(this->config->min_object_distance(), &bb)}; - GetFrame()->statusbar->SetStatusText(_("Objects were arranged.")); + if (success) { + GetFrame()->statusbar->SetStatusText(_("Objects were arranged.")); + } else { + GetFrame()->statusbar->SetStatusText(_("Arrange failed.")); + } this->on_model_change(true); } diff --git a/src/GUI/Plater.hpp b/src/GUI/Plater.hpp index 8898ea037..394cd2843 100644 --- a/src/GUI/Plater.hpp +++ b/src/GUI/Plater.hpp @@ -39,7 +39,7 @@ public: Plater(wxWindow* parent, const wxString& title, std::shared_ptr _settings); void add(); - /// Arrange models + /// Arrange models via a simple packing mechanism based on bounding boxes. void arrange(); /// Ask if there are any unsaved changes. @@ -90,8 +90,9 @@ private: int get_object_index(size_t object_id); Slic3r::Pointf bed_centerf() { - auto bed_shape { Slic3r::Polygon::new_scale(this->config->get("bed_shape").values) }; - return Slic3r::Pointf(); + const auto& bed_shape { Slic3r::Polygon::new_scale(this->config->get("bed_shape").values) }; + const auto& bed_center {BoundingBox(bed_shape).center()}; + return Slic3r::Pointf::new_unscale(bed_center); } /// Build thumbnails for the models