From c6ca180142fcc1ff3b87e31444f7c99f41e61495 Mon Sep 17 00:00:00 2001 From: Enrico Turri <enricoturri@seznam.cz> Date: Thu, 6 Feb 2020 15:19:53 +0100 Subject: [PATCH] Use frontend data to update labels --- src/slic3r/GUI/GLCanvas3D.cpp | 13 +++++++------ src/slic3r/GUI/GLCanvas3D.hpp | 5 +---- src/slic3r/GUI/GUI_ObjectList.cpp | 2 ++ 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 4096e99c4..2e1a6f082 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1238,7 +1238,7 @@ void GLCanvas3D::LegendTexture::render(const GLCanvas3D& canvas) const } #if ENABLE_SHOW_SCENE_LABELS -void GLCanvas3D::Labels::render(const std::vector<const PrintInstance*>& sorted_instances) const +void GLCanvas3D::Labels::render(const std::vector<const ModelInstance*>& sorted_instances) const { if (!m_enabled || !is_shown()) return; @@ -1298,7 +1298,7 @@ void GLCanvas3D::Labels::render(const std::vector<const PrintInstance*>& sorted_ // updates print order strings if (sorted_instances.size() > 1) { for (int i = 0; i < sorted_instances.size(); ++i) { - size_t id = sorted_instances[i]->model_instance->id().id; + size_t id = sorted_instances[i]->id().id; std::vector<Owner>::iterator it = std::find_if(owners.begin(), owners.end(), [id](const Owner& owner) { return owner.model_instance_id == id; }); @@ -5101,11 +5101,12 @@ void GLCanvas3D::_render_overlays() const #if ENABLE_SHOW_SCENE_LABELS const ConfigOptionBool* opt = dynamic_cast<const ConfigOptionBool*>(m_config->option("complete_objects")); bool sequential_print = (opt != nullptr) ? m_config->opt_bool("complete_objects") : false; - std::vector<const PrintInstance*> sorted_instances; + std::vector<const ModelInstance*> sorted_instances; if (sequential_print) { - const Print* print = fff_print(); - if (print != nullptr) - sorted_instances = sort_object_instances_by_model_order(*print); + for (ModelObject* model_object : m_model->objects) + for (ModelInstance* model_instance : model_object->instances) { + sorted_instances.push_back(model_instance); + } } m_labels.render(sorted_instances); #endif // ENABLE_SHOW_SCENE_LABELS diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 71523a433..21f3f012c 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -40,9 +40,6 @@ class GCodePreviewData; struct ThumbnailData; #endif // ENABLE_THUMBNAIL_GENERATOR struct SlicingParameters; -#if ENABLE_SHOW_SCENE_LABELS -struct PrintInstance; -#endif // ENABLE_SHOW_SCENE_LABELS enum LayerHeightEditActionType : unsigned int; namespace GUI { @@ -390,7 +387,7 @@ private: void enable(bool enable) { m_enabled = enable; } void show(bool show) { m_shown = m_enabled ? show : false; } bool is_shown() const { return m_shown; } - void render(const std::vector<const PrintInstance*>& sorted_instances) const; + void render(const std::vector<const ModelInstance*>& sorted_instances) const; }; #endif // ENABLE_SHOW_SCENE_LABELS diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index c07d50a0e..f4c2c7093 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1134,6 +1134,8 @@ void ObjectList::OnDrop(wxDataViewEvent &event) changed_object(m_dragged_data.obj_idx()); m_dragged_data.clear(); + + wxGetApp().plater()->set_current_canvas_as_dirty(); }