From 94b5f9c567b7948a05fa47ff24af78137add6fef Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 22 Jan 2019 16:40:10 +0100 Subject: [PATCH 01/13] Implemented splitting of object instances by : - drag & drop outside of any object - set as a separated Object (context menu) --- src/slic3r/GUI/GUI_ObjectList.cpp | 71 +++++++++++++++++++++++-------- src/slic3r/GUI/GUI_ObjectList.hpp | 18 +++++--- src/slic3r/GUI/Plater.cpp | 33 +++++++++++--- src/slic3r/GUI/Plater.hpp | 1 + 4 files changed, 96 insertions(+), 27 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 3426fd02a..2d96c35e7 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -97,7 +97,7 @@ void ObjectList::create_objects_ctrl() // temporary workaround for the correct behavior of the Scrolled sidebar panel: // 1. set a height of the list to some big value // 2. change it to the normal min value (200) after first whole App updating/layouting - SetMinSize(wxSize(-1, 1500)); // #ys_FIXME + SetMinSize(wxSize(-1, 3000)); // #ys_FIXME m_sizer = new wxBoxSizer(wxVERTICAL); m_sizer->Add(this, 1, wxGROW | wxLEFT, 20); @@ -445,13 +445,21 @@ void ObjectList::OnBeginDrag(wxDataViewEvent &event) // only allow drags for item, not containers if (multiple_selection() || GetSelection()!=item || - m_objects_model->GetParent(item) == wxDataViewItem(0) || - m_objects_model->GetItemType(item) != itVolume ) { + m_objects_model->GetParent(item) == wxDataViewItem(0)) { + event.Veto(); + return; + } + + const ItemType& type = m_objects_model->GetItemType(item); + if (!(type & (itVolume | itInstance))) { event.Veto(); return; } - m_dragged_data.init(m_objects_model->GetObjectIdByItem(item), m_objects_model->GetVolumeIdByItem(item)); + m_dragged_data.init(m_objects_model->GetObjectIdByItem(item), + type&itVolume ? m_objects_model->GetVolumeIdByItem(item) : + m_objects_model->GetInstanceIdByItem(item), + type); /* Under MSW or OSX, DnD moves an item to the place of another selected item * But under GTK, DnD moves an item between another two items. @@ -470,31 +478,41 @@ void ObjectList::OnBeginDrag(wxDataViewEvent &event) event.SetDragFlags(wxDrag_DefaultMove); // allows both copy and move; } +bool ObjectList::can_drop(const wxDataViewItem& item) const +{ + return m_dragged_data.type() == itInstance && !item.IsOk() || + m_dragged_data.type() == itVolume && item.IsOk() && + m_objects_model->GetItemType(item) == itVolume && + m_dragged_data.obj_idx() == m_objects_model->GetObjectIdByItem(item); +} + void ObjectList::OnDropPossible(wxDataViewEvent &event) { - wxDataViewItem item(event.GetItem()); + const wxDataViewItem& item = event.GetItem(); - // only allow drags for item or background, not containers - if (!item.IsOk() || - m_objects_model->GetParent(item) == wxDataViewItem(0) || - m_objects_model->GetItemType(item) != itVolume || - m_dragged_data.obj_idx() != m_objects_model->GetObjectIdByItem(item)) + if (!can_drop(item)) event.Veto(); } void ObjectList::OnDrop(wxDataViewEvent &event) { - wxDataViewItem item(event.GetItem()); + const wxDataViewItem& item = event.GetItem(); - if (!item.IsOk() || m_objects_model->GetParent(item) == wxDataViewItem(0) || - m_objects_model->GetItemType(item) != itVolume || - m_dragged_data.obj_idx() != m_objects_model->GetObjectIdByItem(item)) { + if (!can_drop(item)) + { event.Veto(); m_dragged_data.clear(); return; } - const int from_volume_id = m_dragged_data.vol_idx(); + if (m_dragged_data.type() == itInstance) + { + instance_to_separated_object(m_dragged_data.obj_idx(), m_dragged_data.sub_obj_idx()); + m_dragged_data.clear(); + return; + } + + const int from_volume_id = m_dragged_data.sub_obj_idx(); int to_volume_id = m_objects_model->GetVolumeIdByItem(item); // It looks like a fixed in current version of the wxWidgets @@ -506,7 +524,7 @@ void ObjectList::OnDrop(wxDataViewEvent &event) // if (to_volume_id > from_volume_id) to_volume_id--; // #endif // __WXGTK__ - auto& volumes = (*m_objects)[/*m_selected_object_id*/m_dragged_data.obj_idx()]->volumes; + auto& volumes = (*m_objects)[m_dragged_data.obj_idx()]->volumes; auto delta = to_volume_id < from_volume_id ? -1 : 1; int cnt = 0; for (int id = from_volume_id; cnt < abs(from_volume_id - to_volume_id); id += delta, cnt++) @@ -516,7 +534,7 @@ void ObjectList::OnDrop(wxDataViewEvent &event) m_objects_model->GetParent(item))); m_parts_changed = true; - parts_changed(/*m_selected_object_id*/m_dragged_data.obj_idx()); + parts_changed(m_dragged_data.obj_idx()); m_dragged_data.clear(); } @@ -1729,6 +1747,25 @@ void ObjectList::update_settings_items() UnselectAll(); } +void ObjectList::instance_to_separated_object(const int obj_idx, const int inst_idx) +{ + // create new object from selected instance + ModelObject* model_object = (*m_objects)[obj_idx]->get_model()->add_object(*(*m_objects)[obj_idx]); + for (int i = model_object->instances.size() - 1; i >= 0; i--) + { + if (i == inst_idx) + continue; + model_object->delete_instance(i); + } + + // Add new object to the object_list + add_object_to_list(m_objects->size() - 1); + + // delete selected instance from the object + del_subobject_from_object(obj_idx, inst_idx, itInstance); + delete_instance_from_list(obj_idx, inst_idx); +} + void ObjectList::ItemValueChanged(wxDataViewEvent &event) { if (event.GetColumn() == 0) diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 7631782df..21db30ad5 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -56,22 +56,27 @@ class ObjectList : public wxDataViewCtrl struct dragged_item_data { - void init(const int obj_idx, const int vol_idx) { + void init(const int obj_idx, const int subobj_idx, const ItemType type) { m_obj_idx = obj_idx; - m_vol_idx = vol_idx; + m_subobj_idx = subobj_idx; + m_type = type; } void clear() { m_obj_idx = -1; - m_vol_idx = -1; + m_subobj_idx = -1; + m_type = itUndef; } int obj_idx() const { return m_obj_idx; } - int vol_idx() const { return m_vol_idx; } + int sub_obj_idx() const { return m_subobj_idx; } + ItemType type() const { return m_type; } private: int m_obj_idx = -1; - int m_vol_idx = -1; + int m_subobj_idx = -1; + ItemType m_type = itUndef; + } m_dragged_data; wxBoxSizer *m_sizer {nullptr}; @@ -222,6 +227,8 @@ public: bool has_multi_part_objects(); void update_settings_items(); + void instance_to_separated_object(const int obj_idx, const int inst_idx); + private: void OnChar(wxKeyEvent& event); void OnContextMenu(wxDataViewEvent &event); @@ -229,6 +236,7 @@ private: void OnBeginDrag(wxDataViewEvent &event); void OnDropPossible(wxDataViewEvent &event); void OnDrop(wxDataViewEvent &event); + bool can_drop(const wxDataViewItem& item) const ; void ItemValueChanged(wxDataViewEvent &event); void OnEditingDone(wxDataViewEvent &event); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index da11044bc..17f5a2a63 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1063,6 +1063,7 @@ private: bool can_delete_object() const; bool can_increase_instances() const; bool can_decrease_instances() const; + bool can_set_instance_to_object() const; bool can_split_to_objects() const; bool can_split_to_volumes() const; bool can_split() const; @@ -2359,11 +2360,17 @@ bool Plater::priv::init_common_menu(wxMenu* menu, const bool is_part/* = false*/ [this](wxCommandEvent&) { q->decrease_instances(); }, "delete.png"); wxMenuItem* item_set_number_of_copies = append_menu_item(menu, wxID_ANY, _(L("Set number of copies")) + dots, _(L("Change the number of copies of the selected object")), [this](wxCommandEvent&) { q->set_number_of_copies(); }, "textfield.png"); + + menu->AppendSeparator(); + wxMenuItem* item_instance_to_object = append_menu_item(menu, wxID_ANY, _(L("Set as a Separated Object")) + dots, _(L("Set an Instance as a Separate Object")), + [this](wxCommandEvent&) { q->instance_to_separated_object(); }, ""); + if (q != nullptr) { q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_increase_instances()); }, item_increase->GetId()); q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_decrease_instances()); }, item_decrease->GetId()); q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_increase_instances()); }, item_set_number_of_copies->GetId()); + q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_set_instance_to_object()); }, item_instance_to_object->GetId()); } menu->AppendSeparator(); @@ -2426,9 +2433,9 @@ bool Plater::priv::complit_init_object_menu() // ui updates needs to be binded to the parent panel if (q != nullptr) { - q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split/*_to_objects() || can_split_to_volumes*/()); }, item_split->GetId()); - q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split/*_to_objects*/()); }, item_split_objects->GetId()); - q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split/*_to_volumes*/()); }, item_split_volumes->GetId()); + q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split()); }, item_split->GetId()); + q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split()); }, item_split_objects->GetId()); + q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split()); }, item_split_volumes->GetId()); } return true; } @@ -2447,7 +2454,7 @@ bool Plater::priv::complit_init_sla_object_menu() // ui updates needs to be binded to the parent panel if (q != nullptr) { - q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split/*_to_objects*/()); }, item_split->GetId()); + q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split()); }, item_split->GetId()); } return true; @@ -2466,7 +2473,7 @@ bool Plater::priv::complit_init_part_menu() // ui updates needs to be binded to the parent panel if (q != nullptr) { - q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split/*_to_volumes*/()); }, item_split->GetId()); + q->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_split()); }, item_split->GetId()); } return true; @@ -2534,6 +2541,12 @@ bool Plater::priv::can_increase_instances() const return (0 <= obj_idx) && (obj_idx < (int)model.objects.size()); } +bool Plater::priv::can_set_instance_to_object() const +{ + const int obj_idx = get_selected_object_idx(); + return (0 <= obj_idx) && (obj_idx < (int)model.objects.size()) && (model.objects[obj_idx]->instances.size() > 1); +} + bool Plater::priv::can_decrease_instances() const { int obj_idx = get_selected_object_idx(); @@ -2760,6 +2773,16 @@ void Plater::set_number_of_copies(/*size_t num*/) decrease_instances(-diff); } +void Plater::instance_to_separated_object() +{ + const int obj_idx = p->get_selected_object_idx(); + const int inst_idx = p->get_selection().get_instance_idx(); + if (obj_idx == -1 || inst_idx == -1) + return; + + sidebar().obj_list()->instance_to_separated_object(obj_idx, inst_idx); +} + bool Plater::is_selection_empty() const { return p->get_selection().is_empty(); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 7b19d6f31..a0655ed55 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -136,6 +136,7 @@ public: void increase_instances(size_t num = 1); void decrease_instances(size_t num = 1); void set_number_of_copies(/*size_t num*/); + void instance_to_separated_object(); bool is_selection_empty() const; void cut(size_t obj_idx, size_t instance_idx, coordf_t z, bool keep_upper = true, bool keep_lower = true, bool rotate_lower = false); From bf0232308b5b8584ec036ba1626b0539f93f9e3b Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Wed, 23 Jan 2019 09:29:50 +0100 Subject: [PATCH 02/13] Place on face - fix of updating on selection change --- src/slic3r/GUI/GLGizmo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLGizmo.cpp b/src/slic3r/GUI/GLGizmo.cpp index 1f37b7aec..d45dbf2ed 100644 --- a/src/slic3r/GUI/GLGizmo.cpp +++ b/src/slic3r/GUI/GLGizmo.cpp @@ -1511,7 +1511,7 @@ void GLGizmoFlatten::set_flattening_data(const ModelObject* model_object) bool object_changed = m_model_object != model_object; m_model_object = model_object; - if (object_changed && is_plane_update_necessary()) + if (object_changed || is_plane_update_necessary()) update_planes(); } From 78a9e6036ac767fa3772bf1d81b843ec88b48b19 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Wed, 23 Jan 2019 09:42:04 +0100 Subject: [PATCH 03/13] Fix of previous commit --- src/slic3r/GUI/GLGizmo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GLGizmo.cpp b/src/slic3r/GUI/GLGizmo.cpp index d45dbf2ed..7efb8786c 100644 --- a/src/slic3r/GUI/GLGizmo.cpp +++ b/src/slic3r/GUI/GLGizmo.cpp @@ -1511,7 +1511,7 @@ void GLGizmoFlatten::set_flattening_data(const ModelObject* model_object) bool object_changed = m_model_object != model_object; m_model_object = model_object; - if (object_changed || is_plane_update_necessary()) + if (model_object && (object_changed || is_plane_update_necessary())) update_planes(); } From fde299bf808347aa1748b503c71039bce9ee5e5d Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Tue, 22 Jan 2019 17:52:14 +0100 Subject: [PATCH 04/13] I18N: wx 3.0 back-compat for translations with context, fix #1694 --- src/slic3r/GUI/I18N.hpp | 20 +++++++++++++++++++- src/slic3r/GUI/OptionsGroup.cpp | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/I18N.hpp b/src/slic3r/GUI/I18N.hpp index c86ff7501..a899eaa59 100644 --- a/src/slic3r/GUI/I18N.hpp +++ b/src/slic3r/GUI/I18N.hpp @@ -2,6 +2,10 @@ #define _(s) Slic3r::GUI::I18N::translate((s)) #endif /* _ */ +#ifndef _CTX +#define _CTX(s, ctx) Slic3r::GUI::I18N::translate((s), (ctx)) +#endif /* _ */ + #ifndef L // !!! If you needed to translate some wxString, // !!! please use _(L(string)) @@ -21,6 +25,7 @@ #define slic3r_GUI_I18N_hpp_ #include +#include namespace Slic3r { namespace GUI { @@ -29,7 +34,20 @@ namespace I18N { inline wxString translate(const wchar_t *s) { return wxGetTranslation(s); } inline wxString translate(const std::string &s) { return wxGetTranslation(wxString(s.c_str(), wxConvUTF8)); } inline wxString translate(const std::wstring &s) { return wxGetTranslation(s.c_str()); } -} + +#if wxCHECK_VERSION(3, 1, 1) + #define _wxGetTranslation_ctx(S, CTX) wxGetTranslation((S), wxEmptyString, (CTX)) +#else + #define _wxGetTranslation_ctx(S, CTX) ((void)(CTX), wxGetTranslation((S))) +#endif + + inline wxString translate(const char *s, const char* ctx) { return _wxGetTranslation_ctx(wxString(s, wxConvUTF8), ctx); } + inline wxString translate(const wchar_t *s, const char* ctx) { return _wxGetTranslation_ctx(s, ctx); } + inline wxString translate(const std::string &s, const char* ctx) { return _wxGetTranslation_ctx(wxString(s.c_str(), wxConvUTF8), ctx); } + inline wxString translate(const std::wstring &s, const char* ctx) { return _wxGetTranslation_ctx(s.c_str(), ctx); } + +#undef _wxGetTranslation_ctx +} // Return translated std::string as a wxString wxString L_str(const std::string &str); diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp index 4952398f3..78bbe4fec 100644 --- a/src/slic3r/GUI/OptionsGroup.cpp +++ b/src/slic3r/GUI/OptionsGroup.cpp @@ -234,7 +234,7 @@ void OptionsGroup::append_line(const Line& line, wxStaticText** full_Label/* = n // wxString str_label = _(option.label); //! To correct translation by context have to use wxGETTEXT_IN_CONTEXT macro from wxWidget 3.1.1 wxString str_label = (option.label == "Top" || option.label == "Bottom") ? - wxGETTEXT_IN_CONTEXT("Layers", wxString(option.label)) : + _CTX(option.label, "Layers") : _(option.label); label = new wxStaticText(parent(), wxID_ANY, str_label + ":", wxDefaultPosition, wxDefaultSize); label->SetFont(label_font); From fbf5460ac24d47ef9d00237d1756f4e23673df65 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 23 Jan 2019 11:38:13 +0100 Subject: [PATCH 05/13] Fixed gizmo update when selecting objects using the sidebar table --- src/slic3r/GUI/GLCanvas3D.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 0bd3d26ca..82f4fd4f7 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5822,6 +5822,7 @@ void GLCanvas3D::set_camera_zoom(float zoom) void GLCanvas3D::update_gizmos_on_off_state() { set_as_dirty(); + _update_gizmos_data(); m_gizmos.update_on_off_state(get_selection()); } From d5b354c053854ed1f109af437bf1a09b4850b1c6 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 23 Jan 2019 12:45:58 +0100 Subject: [PATCH 06/13] Apply anisotropic filtering to bed textures --- src/libslic3r/Technologies.hpp | 2 ++ src/slic3r/GUI/GLCanvas3D.cpp | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 05bb07616..75913ad1e 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -62,3 +62,5 @@ #define ENABLE_GENERIC_SUBPARTS_PLACEMENT (1 && ENABLE_1_42_0_ALPHA4) // Reworked management of bed shape changes #define ENABLE_REWORKED_BED_SHAPE_CHANGE (1 && ENABLE_1_42_0_ALPHA4) +// Use anisotropic filtering on bed plate texture +#define ENABLE_ANISOTROPIC_FILTER_ON_BED_TEXTURES (1 && ENABLE_1_42_0_ALPHA4) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 82f4fd4f7..012c3191d 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -545,6 +545,11 @@ void GLCanvas3D::Bed::_render_prusa(const std::string &key, float theta) const std::string model_path = resources_dir() + "/models/" + key; #endif // ENABLE_PRINT_BED_MODELS +#if ENABLE_ANISOTROPIC_FILTER_ON_BED_TEXTURES + GLfloat max_anisotropy = 0.0f; + ::glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max_anisotropy); +#endif // ENABLE_ANISOTROPIC_FILTER_ON_BED_TEXTURES + std::string filename = tex_path + "_top.png"; if ((m_top_texture.get_id() == 0) || (m_top_texture.get_source() != filename)) { @@ -553,6 +558,14 @@ void GLCanvas3D::Bed::_render_prusa(const std::string &key, float theta) const _render_custom(); return; } +#if ENABLE_ANISOTROPIC_FILTER_ON_BED_TEXTURES + if (max_anisotropy > 0.0f) + { + ::glBindTexture(GL_TEXTURE_2D, m_top_texture.get_id()); + ::glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy); + ::glBindTexture(GL_TEXTURE_2D, 0); + } +#endif // ENABLE_ANISOTROPIC_FILTER_ON_BED_TEXTURES } filename = tex_path + "_bottom.png"; @@ -563,6 +576,14 @@ void GLCanvas3D::Bed::_render_prusa(const std::string &key, float theta) const _render_custom(); return; } +#if ENABLE_ANISOTROPIC_FILTER_ON_BED_TEXTURES + if (max_anisotropy > 0.0f) + { + ::glBindTexture(GL_TEXTURE_2D, m_bottom_texture.get_id()); + ::glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, max_anisotropy); + ::glBindTexture(GL_TEXTURE_2D, 0); + } +#endif // ENABLE_ANISOTROPIC_FILTER_ON_BED_TEXTURES } #if ENABLE_PRINT_BED_MODELS From 0af11c51e38089da839942ab2d1fd442bfb0e8b2 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 23 Jan 2019 14:00:03 +0100 Subject: [PATCH 07/13] Fixed update on reset of the variable layer height profile. Fixed update of the layer height profile on PrintObject when changing profiles. Fixed crash due to the layer height editing refactoring & wipe tower. --- src/libslic3r/Print.cpp | 93 ++++++++++++++++++++-------------- src/libslic3r/Print.hpp | 6 +-- src/libslic3r/PrintObject.cpp | 11 ++-- src/libslic3r/TriangleMesh.cpp | 18 +++++++ src/slic3r/GUI/GLCanvas3D.cpp | 5 +- src/slic3r/GUI/GLCanvas3D.hpp | 2 +- 6 files changed, 83 insertions(+), 52 deletions(-) diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp index acaba9d6a..1ef6c7b84 100644 --- a/src/libslic3r/Print.cpp +++ b/src/libslic3r/Print.cpp @@ -1125,7 +1125,7 @@ std::string Print::validate() const // Check horizontal clearance. { Polygons convex_hulls_other; - for (PrintObject *object : m_objects) { + for (const PrintObject *object : m_objects) { // Get convex hull of all meshes assigned to this print object. Polygon convex_hull; { @@ -1186,46 +1186,63 @@ std::string Print::validate() const return L("The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter and Repetier G-code flavors."); if (! m_config.use_relative_e_distances) return L("The Wipe Tower is currently only supported with the relative extruder addressing (use_relative_e_distances=1)."); - SlicingParameters slicing_params0 = m_objects.front()->slicing_parameters(); - const PrintObject* tallest_object = m_objects.front(); // let's find the tallest object - for (const auto* object : m_objects) - if (*(object->layer_height_profile.end()-2) > *(tallest_object->layer_height_profile.end()-2) ) - tallest_object = object; - - for (PrintObject *object : m_objects) { - SlicingParameters slicing_params = object->slicing_parameters(); - if (std::abs(slicing_params.first_print_layer_height - slicing_params0.first_print_layer_height) > EPSILON || - std::abs(slicing_params.layer_height - slicing_params0.layer_height ) > EPSILON) - return L("The Wipe Tower is only supported for multiple objects if they have equal layer heigths"); - if (slicing_params.raft_layers() != slicing_params0.raft_layers()) - return L("The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers"); - if (object->config().support_material_contact_distance != m_objects.front()->config().support_material_contact_distance) - return L("The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance"); - if (! equal_layering(slicing_params, slicing_params0)) - return L("The Wipe Tower is only supported for multiple objects if they are sliced equally."); - - if (m_config.variable_layer_height) { // comparing layer height profiles - bool failed = false; - // layer_height_profile should be set by Print::apply(). - if (tallest_object->layer_height_profile.size() >= object->layer_height_profile.size()) { - int i = 0; - while (i < object->layer_height_profile.size() && i < tallest_object->layer_height_profile.size()) { - if (std::abs(tallest_object->layer_height_profile[i] - object->layer_height_profile[i])) { - failed = true; - break; - } - ++i; - if (i == object->layer_height_profile.size()-2) // this element contains this objects max z - if (tallest_object->layer_height_profile[i] > object->layer_height_profile[i]) // the difference does not matter in this case - ++i; - } + if (m_objects.size() > 1) { + bool has_custom_layering = false; + std::vector> layer_height_profiles; + for (const PrintObject *object : m_objects) { + has_custom_layering = ! object->model_object()->layer_height_ranges.empty() || ! object->model_object()->layer_height_profile.empty(); + if (has_custom_layering) { + layer_height_profiles.assign(m_objects.size(), std::vector()); + break; } - else - failed = true; + } + SlicingParameters slicing_params0 = m_objects.front()->slicing_parameters(); + size_t tallest_object_idx = 0; + if (has_custom_layering) + PrintObject::update_layer_height_profile(*m_objects.front()->model_object(), slicing_params0, layer_height_profiles.front()); + for (size_t i = 1; i < m_objects.size(); ++ i) { + const PrintObject *object = m_objects[i]; + const SlicingParameters slicing_params = object->slicing_parameters(); + if (std::abs(slicing_params.first_print_layer_height - slicing_params0.first_print_layer_height) > EPSILON || + std::abs(slicing_params.layer_height - slicing_params0.layer_height ) > EPSILON) + return L("The Wipe Tower is only supported for multiple objects if they have equal layer heigths"); + if (slicing_params.raft_layers() != slicing_params0.raft_layers()) + return L("The Wipe Tower is only supported for multiple objects if they are printed over an equal number of raft layers"); + if (object->config().support_material_contact_distance != m_objects.front()->config().support_material_contact_distance) + return L("The Wipe Tower is only supported for multiple objects if they are printed with the same support_material_contact_distance"); + if (! equal_layering(slicing_params, slicing_params0)) + return L("The Wipe Tower is only supported for multiple objects if they are sliced equally."); + if (has_custom_layering) { + PrintObject::update_layer_height_profile(*object->model_object(), slicing_params, layer_height_profiles[i]); + if (*(layer_height_profiles[i].end()-2) > *(layer_height_profiles[tallest_object_idx].end()-2)) + tallest_object_idx = i; + } + } - if (failed) - return L("The Wipe tower is only supported if all objects have the same layer height profile"); + if (has_custom_layering) { + const std::vector &layer_height_profile_tallest = layer_height_profiles[tallest_object_idx]; + for (size_t idx_object = 0; idx_object < m_objects.size(); ++ idx_object) { + const PrintObject *object = m_objects[idx_object]; + const std::vector &layer_height_profile = layer_height_profiles[idx_object]; + bool failed = false; + if (layer_height_profile_tallest.size() >= layer_height_profile.size()) { + int i = 0; + while (i < layer_height_profile.size() && i < layer_height_profile_tallest.size()) { + if (std::abs(layer_height_profile_tallest[i] - layer_height_profile[i])) { + failed = true; + break; + } + ++ i; + if (i == layer_height_profile.size() - 2) // this element contains this objects max z + if (layer_height_profile_tallest[i] > layer_height_profile[i]) // the difference does not matter in this case + ++ i; + } + } else + failed = true; + if (failed) + return L("The Wipe tower is only supported if all objects have the same layer height profile"); + } } } } diff --git a/src/libslic3r/Print.hpp b/src/libslic3r/Print.hpp index d0591e764..3de91818a 100644 --- a/src/libslic3r/Print.hpp +++ b/src/libslic3r/Print.hpp @@ -83,10 +83,6 @@ public: // vector of (vectors of volume ids), indexed by region_id std::vector> region_volumes; - // Profile of increasing z to a layer height, to be linearly interpolated when calculating the layers. - // The pairs of are packed into a 1D array. - std::vector layer_height_profile; - // this is set to true when LayerRegion->slices is split in top/internal/bottom // so that next call to make_perimeters() performs a union() before computing loops bool typed_slices; @@ -175,7 +171,7 @@ private: void infill(); void generate_support_material(); - void _slice(); + void _slice(const std::vector &layer_height_profile); std::string _fix_slicing_errors(); void _simplify_slices(double distance); void _make_perimeters(); diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp index 9dd101123..d516153a9 100644 --- a/src/libslic3r/PrintObject.cpp +++ b/src/libslic3r/PrintObject.cpp @@ -64,8 +64,6 @@ PrintObject::PrintObject(Print* print, ModelObject* model_object, bool add_insta } this->set_copies(copies); } - - this->layer_height_profile = model_object->layer_height_profile; } PrintBase::ApplyStatus PrintObject::set_copies(const Points &points) @@ -105,9 +103,10 @@ void PrintObject::slice() if (! this->set_started(posSlice)) return; m_print->set_status(10, "Processing triangulated mesh"); - this->update_layer_height_profile(*this->model_object(), this->slicing_parameters(), this->layer_height_profile); + std::vector layer_height_profile; + this->update_layer_height_profile(*this->model_object(), this->slicing_parameters(), layer_height_profile); m_print->throw_if_canceled(); - this->_slice(); + this->_slice(layer_height_profile); m_print->throw_if_canceled(); // Fix the model. //FIXME is this the right place to do? It is done repeateadly at the UI and now here at the backend. @@ -1438,7 +1437,7 @@ bool PrintObject::update_layer_height_profile(const ModelObject &model_object, c // Resulting expolygons of layer regions are marked as Internal. // // this should be idempotent -void PrintObject::_slice() +void PrintObject::_slice(const std::vector &layer_height_profile) { BOOST_LOG_TRIVIAL(info) << "Slicing objects..." << log_memory_info(); @@ -1457,7 +1456,7 @@ void PrintObject::_slice() { this->clear_layers(); // Object layers (pairs of bottom/top Z coordinate), without the raft. - std::vector object_layers = generate_object_layers(slicing_params, this->layer_height_profile); + std::vector object_layers = generate_object_layers(slicing_params, layer_height_profile); // Reserve object layers for the raft. Last layer of the raft is the contact layer. int id = int(slicing_params.raft_layers()); slice_zs.reserve(object_layers.size()); diff --git a/src/libslic3r/TriangleMesh.cpp b/src/libslic3r/TriangleMesh.cpp index 8a0a087c0..ff8c20289 100644 --- a/src/libslic3r/TriangleMesh.cpp +++ b/src/libslic3r/TriangleMesh.cpp @@ -99,6 +99,8 @@ TriangleMesh& TriangleMesh::operator=(const TriangleMesh &other) return *this; } +// #define SLIC3R_TRACE_REPAIR + void TriangleMesh::repair() { if (this->repaired) return; @@ -109,7 +111,9 @@ void TriangleMesh::repair() BOOST_LOG_TRIVIAL(debug) << "TriangleMesh::repair() started"; // checking exact +#ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_check_faces_exact"; +#endif /* SLIC3R_TRACE_REPAIR */ stl_check_facets_exact(&stl); stl.stats.facets_w_1_bad_edge = (stl.stats.connected_facets_2_edge - stl.stats.connected_facets_3_edge); stl.stats.facets_w_2_bad_edge = (stl.stats.connected_facets_1_edge - stl.stats.connected_facets_2_edge); @@ -124,7 +128,9 @@ void TriangleMesh::repair() for (int i = 0; i < iterations; i++) { if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) { //printf("Checking nearby. Tolerance= %f Iteration=%d of %d...", tolerance, i + 1, iterations); +#ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_check_faces_nearby"; +#endif /* SLIC3R_TRACE_REPAIR */ stl_check_facets_nearby(&stl, tolerance); //printf(" Fixed %d edges.\n", stl.stats.edges_fixed - last_edges_fixed); //last_edges_fixed = stl.stats.edges_fixed; @@ -137,7 +143,9 @@ void TriangleMesh::repair() // remove_unconnected if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) { +#ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_remove_unconnected_facets"; +#endif /* SLIC3R_TRACE_REPAIR */ stl_remove_unconnected_facets(&stl); } @@ -146,26 +154,36 @@ void TriangleMesh::repair() // Don't fill holes, the current algorithm does more harm than good on complex holes. // Rather let the slicing algorithm close gaps in 2D slices. if (stl.stats.connected_facets_3_edge < stl.stats.number_of_facets) { +#ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_fill_holes"; +#endif /* SLIC3R_TRACE_REPAIR */ stl_fill_holes(&stl); stl_clear_error(&stl); } #endif // normal_directions +#ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_fix_normal_directions"; +#endif /* SLIC3R_TRACE_REPAIR */ stl_fix_normal_directions(&stl); // normal_values +#ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_fix_normal_values"; +#endif /* SLIC3R_TRACE_REPAIR */ stl_fix_normal_values(&stl); // always calculate the volume and reverse all normals if volume is negative +#ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_calculate_volume"; +#endif /* SLIC3R_TRACE_REPAIR */ stl_calculate_volume(&stl); // neighbors +#ifdef SLIC3R_TRACE_REPAIR BOOST_LOG_TRIVIAL(trace) << "\tstl_verify_neighbors"; +#endif /* SLIC3R_TRACE_REPAIR */ stl_verify_neighbors(&stl); this->repaired = true; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 0bd3d26ca..6a3e3b47e 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1179,11 +1179,12 @@ void GLCanvas3D::LayersEditing::adjust_layer_height_profile() m_layers_texture.valid = false; } -void GLCanvas3D::LayersEditing::reset_layer_height_profile() +void GLCanvas3D::LayersEditing::reset_layer_height_profile(GLCanvas3D& canvas) { const_cast(m_model_object)->layer_height_profile.clear(); m_layer_height_profile.clear(); m_layers_texture.valid = false; + canvas.post_event(SimpleEvent(EVT_GLCANVAS_SCHEDULE_BACKGROUND_PROCESS)); } void GLCanvas3D::LayersEditing::generate_layer_height_texture() @@ -5117,7 +5118,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if (evt.LeftDown()) { // A volume is selected and the mouse is inside the reset button. Reset the ModelObject's layer height profile. - m_layers_editing.reset_layer_height_profile(); + m_layers_editing.reset_layer_height_profile(*this); // Index 2 means no editing, just wait for mouse up event. m_layers_editing.state = LayersEditing::Completed; diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 38f02ff8f..ab53d5048 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -360,7 +360,7 @@ class GLCanvas3D void adjust_layer_height_profile(); void accept_changes(GLCanvas3D& canvas); - void reset_layer_height_profile(); + void reset_layer_height_profile(GLCanvas3D& canvas); static float get_cursor_z_relative(const GLCanvas3D& canvas); static bool bar_rect_contains(const GLCanvas3D& canvas, float x, float y); From 5ed475a7307a939e2bfc2e76a2c3e723f780b985 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 23 Jan 2019 14:22:33 +0100 Subject: [PATCH 08/13] Little optimization when creating a SLA support mesh for preview. --- src/libslic3r/SLA/SLASupportTree.cpp | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/libslic3r/SLA/SLASupportTree.cpp b/src/libslic3r/SLA/SLASupportTree.cpp index 6477010fd..1d7858ead 100644 --- a/src/libslic3r/SLA/SLASupportTree.cpp +++ b/src/libslic3r/SLA/SLASupportTree.cpp @@ -738,45 +738,46 @@ public: const TriangleMesh& merged_mesh() const { if(meshcache_valid) return meshcache; - meshcache = TriangleMesh(); + Contour3D merged; for(auto& head : heads()) { if(m_ctl.stopcondition()) break; - if(head.is_valid()) { - auto&& m = mesh(head.mesh); - meshcache.merge(m); - } + if(head.is_valid()) + merged.merge(head.mesh); } for(auto& stick : pillars()) { if(m_ctl.stopcondition()) break; - meshcache.merge(mesh(stick.mesh)); - meshcache.merge(mesh(stick.base)); + merged.merge(stick.mesh); + merged.merge(stick.base); } for(auto& j : junctions()) { if(m_ctl.stopcondition()) break; - meshcache.merge(mesh(j.mesh)); + merged.merge(j.mesh); } for(auto& cb : compact_bridges()) { if(m_ctl.stopcondition()) break; - meshcache.merge(mesh(cb.mesh)); + merged.merge(cb.mesh); } for(auto& bs : bridges()) { if(m_ctl.stopcondition()) break; - meshcache.merge(mesh(bs.mesh)); + merged.merge(bs.mesh); } + if(m_ctl.stopcondition()) { // In case of failure we have to return an empty mesh meshcache = TriangleMesh(); return meshcache; } + meshcache = mesh(merged); + // TODO: Is this necessary? - meshcache.repair(); + //meshcache.repair(); BoundingBoxf3&& bb = meshcache.bounding_box(); model_height = bb.max(Z) - bb.min(Z); From 7c3319ede2c54f04f602c1cac46807ae83e46bd1 Mon Sep 17 00:00:00 2001 From: Lukas Matena Date: Wed, 23 Jan 2019 14:27:11 +0100 Subject: [PATCH 09/13] Place on bed optimization --- src/slic3r/GUI/GLGizmo.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/slic3r/GUI/GLGizmo.cpp b/src/slic3r/GUI/GLGizmo.cpp index 7efb8786c..2eba6f741 100644 --- a/src/slic3r/GUI/GLGizmo.cpp +++ b/src/slic3r/GUI/GLGizmo.cpp @@ -1585,15 +1585,17 @@ void GLGizmoFlatten::update_planes() m_planes.pop_back(); } + // Let's prepare transformation of the normal vector from mesh to instance coordinates. + Geometry::Transformation t(inst_matrix); + Vec3d scaling = t.get_scaling_factor(); + t.set_scaling_factor(Vec3d(1./scaling(0), 1./scaling(1), 1./scaling(2))); + // Now we'll go through all the polygons, transform the points into xy plane to process them: for (unsigned int polygon_id=0; polygon_id < m_planes.size(); ++polygon_id) { Pointf3s& polygon = m_planes[polygon_id].vertices; const Vec3d& normal = m_planes[polygon_id].normal; - // let's transform the normal accodring to the instance matrix: - Geometry::Transformation t(inst_matrix); - Vec3d scaling = t.get_scaling_factor(); - t.set_scaling_factor(Vec3d(1./(scaling(0)*scaling(0)), 1./(scaling(0)*scaling(0)), 1./(scaling(0)*scaling(0)))); + // transform the normal according to the instance matrix: Vec3d normal_transformed = t.get_matrix() * normal; // We are going to rotate about z and y to flatten the plane From d3fa82e41b5500874d37d0e6855954a4112806af Mon Sep 17 00:00:00 2001 From: Vojtech Kral Date: Wed, 23 Jan 2019 14:38:05 +0100 Subject: [PATCH 10/13] Fix assert on empty datadir --- src/slic3r/GUI/GUI_App.cpp | 2 ++ src/slic3r/GUI/MainFrame.cpp | 1 - 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 9991fee75..462f3c328 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -194,6 +194,8 @@ bool GUI_App::OnInit() preset_updater->slic3r_update_notify(); } preset_updater->sync(preset_bundle); + + load_current_presets(); }); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 9c74861c9..46a46e950 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -155,7 +155,6 @@ void MainFrame::create_preset_tabs() add_created_tab(new TabSLAPrint(m_tabpanel)); add_created_tab(new TabSLAMaterial(m_tabpanel)); add_created_tab(new TabPrinter(m_tabpanel)); - GUI::wxGetApp().load_current_presets(); } void MainFrame::add_created_tab(Tab* panel) From 90235ac38654935af3b1105d83a8807c7f89b6b8 Mon Sep 17 00:00:00 2001 From: bubnikv Date: Wed, 23 Jan 2019 15:29:18 +0100 Subject: [PATCH 11/13] Fixed layer height profile access from Perl XS --- xs/xsp/Print.xsp | 2 -- 1 file changed, 2 deletions(-) diff --git a/xs/xsp/Print.xsp b/xs/xsp/Print.xsp index aa90a3ad9..b8662dcd8 100644 --- a/xs/xsp/Print.xsp +++ b/xs/xsp/Print.xsp @@ -49,8 +49,6 @@ _constant() Ref config() %code%{ RETVAL = &THIS->config(); %}; Points copies(); - std::vector layer_height_profile() - %code%{ RETVAL = THIS->layer_height_profile; %}; Clone bounding_box(); Points _shifted_copies() From 322b954c1c61c082eea8c7ac5fdb3729a423388a Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 23 Jan 2019 15:52:08 +0100 Subject: [PATCH 12/13] Added model for sl1 bed --- resources/models/sl1_bed.stl | Bin 0 -> 472884 bytes src/libslic3r/Technologies.hpp | 2 +- src/slic3r/GUI/GLCanvas3D.cpp | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 resources/models/sl1_bed.stl diff --git a/resources/models/sl1_bed.stl b/resources/models/sl1_bed.stl new file mode 100644 index 0000000000000000000000000000000000000000..28601b288a29535686acf800bc517a6e5777c806 GIT binary patch literal 472884 zcmb@v3Ah|pwZ7jXB4lDPAVV0$aG4Xx;LX74Cfy*DU;t?l6@e>=2>cu_Dj4K2d1Z(S ziV~Gs5HJviG$aR47lX(kLINT10{{KhuGQ<^)pdaTJpbs?_4HbAeYLCh zu=cL0R{Q_=-?I~IwT~~HmL2}wynzJ^r!|h*eROO4**|U8Y6s6baLVY`)vcd4mwn-& zIs5E1x;1~%J^AmQ_L3{6Wjnm%gna1fwP$Ke~0&hNf}RM<-^Z z_gv7uFYFaPBvv|XbZhL}Oyl9Nj?Y#ezpOhpl$->k4!vY_>$A=+0G?`QGb1KbnDz*OylGoL-g*o?0c6?YtTbt z){jTG-nFS|yl?EX?p@y%N-*lcv13}>zjS9&j{C+e>#i5da!9Bp^pM!-En`~0 zy!Xzc953v;pu5FKCT4%UCM6j4*!#w`Ubxvb&fR@Mcl`q#Pwx~%H z#-bd*y?frkI-wm-40}ZniDNbyi*j6f%k282q2$k(2u3~r(XlumGjE$+pE_xBc3L3l zAyGeKEY8Q-yDz9ee$d3MRw5X6_=RIpuRgTzg8C_kOw6)Sa(YNy@WZjFSKT$2)xZ1A z@!3m1NC`&W_sCeZkJbju>PLNRd^QwnJ3S;$etIn0$6mYE8k@9g+2)}|kzmw;qsF0~ z-#@+9IJ;5H?h7@M9un(pI1cUnlGDdGmWEb!OlapM81>aD}k3+xv(tk{D zEbGqh-Wqyp5{%mG&~X?)7H&7W@saChcV~oh&_m+ToXVB*Sjet7^S+fV9vco-~PjcCN>t&T~L3js3qnhk)Qtq?=AZFFb+1t zI9S&>$Zau7b@~&FO(TqhjW7<@H4f54LiPBU51Pi&jauU!p;cM?ux&9)ZS(YZ{;Vj+ zxK^$4>@Ky&=ZaQq9ujJguk7%%q8vl(EURyI-uT9Mik`s;MyXf&%g0UQoItGkjq#0# zi{8gPB-F3$e2!@}_gYYYIJCnHiyqDhMyYq*@>0_{bk7C#a}Jx>*yr-t@0y2%`p5N_ zo5tyP&91*^`sBvk62T~q5}&@)G-ljAyS`-F}UF{wj=vSr`ZF8V5-* zO0x{>T|4bxePCjC<}M5BcZ7bI9uk@-c)#13I5~Un*4g!LiC`4xaGiD-2eU8^)-?{& zLxS_RPP>?44%TXeIbriCjU{Gt)|V3@TK@)<`5+07k3Ee(f>GStRD&K8(zEd~)gZwr z9`#g%9un!unHM_z&ug!pn4CdIu`Z+<^pN0amzIMBqgba?4SGm$d`vY+Fp8}?)u4w& zI&#{vQY|6DDE2X_20bLwk&_xE7{$KQHFO5)A(4)p)F8nq_W7=%lG8(i<6}T5s$;(TVH$bK;US?q{l)~NRL6YvgBtXZ zP@V24RB{rGQXTWv4{FduLUsC$2}Y@o`RWHX=pmsx{l)~NRL6Yv!!%TKdPt~F_Y*pU zBp9Vy>8l^6A%Y$fs?%>wFiN%ES3jVU*@{Q4ws4MROR`01T|;)#J~DdB#QcyazCIz^ zqHL9-pP;8qC{Ij@a6U2;mc1&Sr zl&wk~HHR+Oz$^b_=y39U1{K4Gf{in3LTgcww9XS-tywz)_`gyue&(NiY0 zTAL7qWkR$?*<2(cat(UQgjSssBG(`x+oEhPk`TEDJ!L|x=LwN(kdSRrHWx{VT!Wr6 z(bqn54HB{~%H|^d8uauL;c7-gwxVn#iW(&7sUo7rJs*FhyXQ(ro)F44m6%jRd z3>tsF@cLnCkTBcI;Vbkcv|aO55mBQkdDqHegwcx9QSg-_67*CNQ6sd!Osz^9B+OP+ zel~k6UL@$LBBDl76EkU$Fk4ZomA-OEf}ScOYMk_z>Dk9tot|ruFk4Y-UA_WIf}ScO zY7{*~u0g_VMX8tYl~fY+R1s0*xDP+l{rk#CUlArjPZbe0ik>>xAYrzm z)NA|7HVJyFh^V2qp&GAqPQq+OY4p*YDz-rq^i&Z&jRDgjVYZ?)?s_?bMvtJUiijGa z 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�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 E2SFoUY5)KL literal 0 HcmV?d00001 diff --git a/src/libslic3r/Technologies.hpp b/src/libslic3r/Technologies.hpp index 75913ad1e..b02def988 100644 --- a/src/libslic3r/Technologies.hpp +++ b/src/libslic3r/Technologies.hpp @@ -45,7 +45,7 @@ // Improves navigation between sidebar fields #define ENABLE_IMPROVED_SIDEBAR_OBJECTS_MANIPULATION (1 && ENABLE_1_42_0_ALPHA2) // Adds print bed models to 3D scene -#define ENABLE_PRINT_BED_MODELS (0 && ENABLE_1_42_0_ALPHA2) +#define ENABLE_PRINT_BED_MODELS (1 && ENABLE_1_42_0_ALPHA2) #endif // _technologies_h_ diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 293c88e02..794ebf08a 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -591,7 +591,7 @@ void GLCanvas3D::Bed::_render_prusa(const std::string &key, float theta) const { filename = model_path + "_bed.stl"; if ((m_model.get_filename() != filename) && m_model.init_from_file(filename, useVBOs)) - m_model.center_around(m_bounding_box.center() - Vec3d(0.0, 0.0, 1.0 + 0.5 * m_model.get_bounding_box().size()(2))); + m_model.center_around(m_bounding_box.center() - Vec3d(0.0, 0.0, 0.1 + 0.5 * m_model.get_bounding_box().size()(2))); if (!m_model.get_filename().empty()) { From 8fd6194403f8522c05182051be06d8e3ec10a815 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 23 Jan 2019 16:01:37 +0100 Subject: [PATCH 13/13] Improved Instance splitting : - Added icon and context menu for Instance. - Added multiple selection and splitting for the instances (add new object with selected instances) --- src/slic3r/GUI/GLCanvas3D.cpp | 3 +- src/slic3r/GUI/GUI_ObjectList.cpp | 110 +++++++++++++++++++++++++----- src/slic3r/GUI/GUI_ObjectList.hpp | 28 ++++++-- src/slic3r/GUI/Plater.cpp | 13 +--- src/slic3r/GUI/Plater.hpp | 1 - src/slic3r/GUI/wxExtensions.cpp | 2 +- src/slic3r/GUI/wxExtensions.hpp | 1 + 7 files changed, 121 insertions(+), 37 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 794ebf08a..1a6c3b5b0 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -5273,7 +5273,8 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) if (m_volumes.volumes[m_hover_volume_id]->hover && !m_volumes.volumes[m_hover_volume_id]->is_wipe_tower) { // forces the selection of the volume - m_selection.add(m_hover_volume_id); + if (!m_selection.is_multiple_full_instance()) + m_selection.add(m_hover_volume_id); m_gizmos.update_on_off_state(m_selection); post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); _update_gizmos_data(); diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 2d96c35e7..a880b2cbe 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -51,6 +51,7 @@ ObjectList::ObjectList(wxWindow* parent) : create_object_popupmenu(&m_menu_object); create_part_popupmenu(&m_menu_part); create_sla_object_popupmenu(&m_menu_sla_object); + create_instance_popupmenu(&m_menu_instance); // describe control behavior Bind(wxEVT_DATAVIEW_SELECTION_CHANGED, [this](wxEvent& event) { @@ -400,15 +401,28 @@ void ObjectList::OnContextMenu(wxDataViewEvent&) void ObjectList::show_context_menu() { + if (multiple_selection() && selected_instances_of_same_object()) + { + wxGetApp().plater()->PopupMenu(&m_menu_instance); + + wxGetApp().plater()->Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { + evt.Enable(can_split_instances()); }, m_menu_item_split_instances->GetId()); + return; + } + const auto item = GetSelection(); if (item) { - if (!(m_objects_model->GetItemType(item) & (itObject | itVolume))) + const ItemType type = m_objects_model->GetItemType(item); + if (!(type & (itObject | itVolume | itInstance))) return; - wxMenu* menu = m_objects_model->GetParent(item) != wxDataViewItem(0) ? &m_menu_part : + + wxMenu* menu = type & itInstance ? &m_menu_instance : + m_objects_model->GetParent(item) != wxDataViewItem(0) ? &m_menu_part : wxGetApp().plater()->printer_technology() == ptFFF ? &m_menu_object : &m_menu_sla_object; - append_menu_item_settings(menu); + if (!(type & itInstance)) + append_menu_item_settings(menu); wxGetApp().plater()->PopupMenu(menu); @@ -443,9 +457,11 @@ void ObjectList::OnBeginDrag(wxDataViewEvent &event) { const wxDataViewItem item(event.GetItem()); - // only allow drags for item, not containers - if (multiple_selection() || GetSelection()!=item || - m_objects_model->GetParent(item) == wxDataViewItem(0)) { + const bool mult_sel = multiple_selection(); + + if (mult_sel && !selected_instances_of_same_object() || + !mult_sel && (GetSelection() != item || + m_objects_model->GetParent(item) == wxDataViewItem(0) ) ) { event.Veto(); return; } @@ -456,7 +472,17 @@ void ObjectList::OnBeginDrag(wxDataViewEvent &event) return; } - m_dragged_data.init(m_objects_model->GetObjectIdByItem(item), + if (mult_sel) + { + m_dragged_data.init(m_objects_model->GetObjectIdByItem(item),type); + std::set& sub_obj_idxs = m_dragged_data.inst_idxs(); + wxDataViewItemArray sels; + GetSelections(sels); + for (auto sel : sels ) + sub_obj_idxs.insert(m_objects_model->GetInstanceIdByItem(sel)); + } + else + m_dragged_data.init(m_objects_model->GetObjectIdByItem(item), type&itVolume ? m_objects_model->GetVolumeIdByItem(item) : m_objects_model->GetInstanceIdByItem(item), type); @@ -507,7 +533,7 @@ void ObjectList::OnDrop(wxDataViewEvent &event) if (m_dragged_data.type() == itInstance) { - instance_to_separated_object(m_dragged_data.obj_idx(), m_dragged_data.sub_obj_idx()); + instances_to_separated_object(m_dragged_data.obj_idx(), m_dragged_data.inst_idxs()); m_dragged_data.clear(); return; } @@ -759,6 +785,12 @@ wxMenuItem* ObjectList::append_menu_item_change_type(wxMenu* menu) } +wxMenuItem* ObjectList::append_menu_item_instance_to_object(wxMenu* menu) +{ + return append_menu_item(menu, wxID_ANY, _(L("Set as a Separated Object")), "", + [this](wxCommandEvent&) { split_instances(); }, "", menu); +} + void ObjectList::create_object_popupmenu(wxMenu *menu) { append_menu_items_add_volume(menu); @@ -787,6 +819,11 @@ void ObjectList::create_part_popupmenu(wxMenu *menu) menu->AppendSeparator(); } +void ObjectList::create_instance_popupmenu(wxMenu*menu) +{ + m_menu_item_split_instances = append_menu_item_instance_to_object(menu); +} + wxMenu* ObjectList::create_settings_popupmenu(wxMenu *parent_menu) { wxMenu *menu = new wxMenu; @@ -1134,6 +1171,27 @@ bool ObjectList::is_splittable() return splittable; } +bool ObjectList::selected_instances_of_same_object() +{ + wxDataViewItemArray sels; + GetSelections(sels); + + const int obj_idx = m_objects_model->GetObjectIdByItem(sels.front()); + + for (auto item : sels) { + if (! (m_objects_model->GetItemType(item) & itInstance) || + obj_idx != m_objects_model->GetObjectIdByItem(item)) + return false; + } + return true; +} + +bool ObjectList::can_split_instances() +{ + const GLCanvas3D::Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); + return selection.is_multiple_full_instance() || selection.is_single_full_instance(); +} + void ObjectList::part_settings_changed() { m_part_settings_changed = true; @@ -1437,7 +1495,7 @@ bool ObjectList::multiple_selection() const void ObjectList::update_selections() { - auto& selection = wxGetApp().plater()->canvas3D()->get_selection(); + const GLCanvas3D::Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); wxDataViewItemArray sels; // We doesn't update selection if SettingsItem for the current object/part is selected @@ -1523,7 +1581,7 @@ void ObjectList::update_selections() void ObjectList::update_selections_on_canvas() { - auto& selection = wxGetApp().plater()->canvas3D()->get_selection(); + GLCanvas3D::Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); const int sel_cnt = GetSelectedItemsCount(); if (sel_cnt == 0) { @@ -1747,23 +1805,41 @@ void ObjectList::update_settings_items() UnselectAll(); } -void ObjectList::instance_to_separated_object(const int obj_idx, const int inst_idx) +void ObjectList::instances_to_separated_object(const int obj_idx, const std::set& inst_idxs) { // create new object from selected instance ModelObject* model_object = (*m_objects)[obj_idx]->get_model()->add_object(*(*m_objects)[obj_idx]); - for (int i = model_object->instances.size() - 1; i >= 0; i--) + for (int inst_idx = model_object->instances.size() - 1; inst_idx >= 0; inst_idx--) { - if (i == inst_idx) + if (find(inst_idxs.begin(), inst_idxs.end(), inst_idx) != inst_idxs.end()) continue; - model_object->delete_instance(i); + model_object->delete_instance(inst_idx); } // Add new object to the object_list add_object_to_list(m_objects->size() - 1); - // delete selected instance from the object - del_subobject_from_object(obj_idx, inst_idx, itInstance); - delete_instance_from_list(obj_idx, inst_idx); + for (std::set::const_reverse_iterator it = inst_idxs.rbegin(); it != inst_idxs.rend(); ++it) + { + // delete selected instance from the object + del_subobject_from_object(obj_idx, *it, itInstance); + delete_instance_from_list(obj_idx, *it); + } +} + +void ObjectList::split_instances() +{ + const GLCanvas3D::Selection& selection = wxGetApp().plater()->canvas3D()->get_selection(); + const int obj_idx = selection.get_object_idx(); + if (obj_idx == -1) + return; + + const int inst_idx = selection.get_instance_idx(); + const std::set inst_idxs = inst_idx < 0 ? + selection.get_instance_idxs() : + std::set{ inst_idx }; + + instances_to_separated_object(obj_idx, inst_idxs); } void ObjectList::ItemValueChanged(wxDataViewEvent &event) diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp index 21db30ad5..f24eb95b0 100644 --- a/src/slic3r/GUI/GUI_ObjectList.hpp +++ b/src/slic3r/GUI/GUI_ObjectList.hpp @@ -58,23 +58,34 @@ class ObjectList : public wxDataViewCtrl { void init(const int obj_idx, const int subobj_idx, const ItemType type) { m_obj_idx = obj_idx; - m_subobj_idx = subobj_idx; + m_type = type; + if (m_type&itVolume) + m_vol_idx = subobj_idx; + else + m_inst_idxs.insert(subobj_idx); + } + + void init(const int obj_idx, const ItemType type) { + m_obj_idx = obj_idx; m_type = type; } void clear() { m_obj_idx = -1; - m_subobj_idx = -1; + m_vol_idx = -1; + m_inst_idxs.clear(); m_type = itUndef; } int obj_idx() const { return m_obj_idx; } - int sub_obj_idx() const { return m_subobj_idx; } + int sub_obj_idx() const { return m_vol_idx; } ItemType type() const { return m_type; } + std::set& inst_idxs() { return m_inst_idxs; } private: int m_obj_idx = -1; - int m_subobj_idx = -1; + int m_vol_idx = -1; + std::set m_inst_idxs{}; ItemType m_type = itUndef; } m_dragged_data; @@ -96,9 +107,11 @@ class ObjectList : public wxDataViewCtrl wxMenu m_menu_object; wxMenu m_menu_part; wxMenu m_menu_sla_object; + wxMenu m_menu_instance; wxMenuItem* m_menu_item_split { nullptr }; wxMenuItem* m_menu_item_split_part { nullptr }; wxMenuItem* m_menu_item_settings { nullptr }; + wxMenuItem* m_menu_item_split_instances { nullptr }; std::vector m_bmp_vector; @@ -153,9 +166,11 @@ public: wxMenuItem* append_menu_item_split(wxMenu* menu); wxMenuItem* append_menu_item_settings(wxMenu* menu); wxMenuItem* append_menu_item_change_type(wxMenu* menu); + wxMenuItem* append_menu_item_instance_to_object(wxMenu* menu); void create_object_popupmenu(wxMenu *menu); void create_sla_object_popupmenu(wxMenu*menu); void create_part_popupmenu(wxMenu*menu); + void create_instance_popupmenu(wxMenu*menu); wxMenu* create_settings_popupmenu(wxMenu *parent_menu); void update_opt_keys(t_config_option_keys& t_optopt_keys); @@ -171,6 +186,8 @@ public: void split(); bool get_volume_by_item(const wxDataViewItem& item, ModelVolume*& volume); bool is_splittable(); + bool selected_instances_of_same_object(); + bool can_split_instances(); wxPoint get_mouse_position_in_control(); wxBoxSizer* get_sizer() {return m_sizer;} @@ -227,7 +244,8 @@ public: bool has_multi_part_objects(); void update_settings_items(); - void instance_to_separated_object(const int obj_idx, const int inst_idx); + void instances_to_separated_object(const int obj_idx, const std::set& inst_idx); + void split_instances(); private: void OnChar(wxKeyEvent& event); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 17f5a2a63..24471e254 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2362,8 +2362,7 @@ bool Plater::priv::init_common_menu(wxMenu* menu, const bool is_part/* = false*/ [this](wxCommandEvent&) { q->set_number_of_copies(); }, "textfield.png"); menu->AppendSeparator(); - wxMenuItem* item_instance_to_object = append_menu_item(menu, wxID_ANY, _(L("Set as a Separated Object")) + dots, _(L("Set an Instance as a Separate Object")), - [this](wxCommandEvent&) { q->instance_to_separated_object(); }, ""); + wxMenuItem* item_instance_to_object = sidebar->obj_list()->append_menu_item_instance_to_object(menu); if (q != nullptr) { @@ -2773,16 +2772,6 @@ void Plater::set_number_of_copies(/*size_t num*/) decrease_instances(-diff); } -void Plater::instance_to_separated_object() -{ - const int obj_idx = p->get_selected_object_idx(); - const int inst_idx = p->get_selection().get_instance_idx(); - if (obj_idx == -1 || inst_idx == -1) - return; - - sidebar().obj_list()->instance_to_separated_object(obj_idx, inst_idx); -} - bool Plater::is_selection_empty() const { return p->get_selection().is_empty(); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index a0655ed55..7b19d6f31 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -136,7 +136,6 @@ public: void increase_instances(size_t num = 1); void decrease_instances(size_t num = 1); void set_number_of_copies(/*size_t num*/); - void instance_to_separated_object(); bool is_selection_empty() const; void cut(size_t obj_idx, size_t instance_idx, coordf_t z, bool keep_upper = true, bool keep_lower = true, bool rotate_lower = false); diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp index 52eb3180d..55c0b351f 100644 --- a/src/slic3r/GUI/wxExtensions.cpp +++ b/src/slic3r/GUI/wxExtensions.cpp @@ -406,7 +406,7 @@ void PrusaObjectDataViewModelNode::set_object_action_icon() { m_action_icon = wxBitmap(Slic3r::GUI::from_u8(Slic3r::var("add_object.png")), wxBITMAP_TYPE_PNG); } void PrusaObjectDataViewModelNode::set_part_action_icon() { - m_action_icon = wxBitmap(Slic3r::GUI::from_u8(Slic3r::var("cog.png")), wxBITMAP_TYPE_PNG); + m_action_icon = wxBitmap(Slic3r::GUI::from_u8(Slic3r::var(m_type == itVolume ? "cog.png" : "brick_go.png")), wxBITMAP_TYPE_PNG); } Slic3r::GUI::BitmapCache *m_bitmap_cache = nullptr; diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp index fcce18e10..10709786c 100644 --- a/src/slic3r/GUI/wxExtensions.hpp +++ b/src/slic3r/GUI/wxExtensions.hpp @@ -275,6 +275,7 @@ public: else if (type == itInstance) { m_idx = parent->GetChildCount(); m_name = wxString::Format("Instance_%d", m_idx+1); + set_part_action_icon(); } }