Fix in sla mode: wrong part menu and split submenu

This commit is contained in:
tamasmeszaros 2022-12-13 13:23:59 +01:00
parent 0dadde6ae3
commit 9de057ddeb
3 changed files with 18 additions and 13 deletions

View File

@ -1088,22 +1088,28 @@ void MenuFactory::create_common_object_menu(wxMenu* menu)
append_menu_items_mirror(menu);
}
void MenuFactory::create_object_menu()
void MenuFactory::append_menu_items_split(wxMenu *menu)
{
create_common_object_menu(&m_object_menu);
wxMenu* split_menu = new wxMenu();
if (!split_menu)
return;
append_menu_item(split_menu, wxID_ANY, _L("To objects"), _L("Split the selected object into individual objects"),
[](wxCommandEvent&) { plater()->split_object(); }, "split_object_SMALL", &m_object_menu,
[](wxCommandEvent&) { plater()->split_object(); }, "split_object_SMALL", menu,
[]() { return plater()->can_split(true); }, m_parent);
append_menu_item(split_menu, wxID_ANY, _L("To parts"), _L("Split the selected object into individual parts"),
[](wxCommandEvent&) { plater()->split_volume(); }, "split_parts_SMALL", &m_object_menu,
[](wxCommandEvent&) { plater()->split_volume(); }, "split_parts_SMALL", menu,
[]() { return plater()->can_split(false); }, m_parent);
append_submenu(&m_object_menu, split_menu, wxID_ANY, _L("Split"), _L("Split the selected object"), "",
append_submenu(menu, split_menu, wxID_ANY, _L("Split"), _L("Split the selected object"), "",
[]() { return plater()->can_split(true); }, m_parent);
}
void MenuFactory::create_object_menu()
{
create_common_object_menu(&m_object_menu);
append_menu_items_split(&m_object_menu);
m_object_menu.AppendSeparator();
// "Height range Modifier" and "Add (volumes)" menu items will be added later in append_menu_items_add_volume()
@ -1112,9 +1118,7 @@ void MenuFactory::create_object_menu()
void MenuFactory::create_sla_object_menu()
{
create_common_object_menu(&m_sla_object_menu);
append_menu_item(&m_sla_object_menu, wxID_ANY, _L("Split"), _L("Split the selected object into individual objects"),
[](wxCommandEvent&) { plater()->split_object(); }, "split_object_SMALL", nullptr,
[]() { return plater()->can_split(true); }, m_parent);
append_menu_items_split(&m_sla_object_menu);
m_sla_object_menu.AppendSeparator();
append_menu_items_add_sla_volume(&m_sla_object_menu);

View File

@ -113,6 +113,7 @@ private:
void append_menu_item_edit_text(wxMenu *menu);
void append_menu_items_instance_manipulation(wxMenu *menu);
void update_menu_items_instance_manipulation(MenuType type);
void append_menu_items_split(wxMenu *menu);
};
}}

View File

@ -4484,9 +4484,9 @@ void Plater::priv::on_right_click(RBtnEvent& evt)
// so this selection should be updated before menu creation
wxGetApp().obj_list()->update_selections();
if (printer_technology == ptSLA)
menu = menus.sla_object_menu();
else {
// if (printer_technology == ptSLA)
// menu = menus.sla_object_menu();
// else {
const Selection& selection = get_selection();
// show "Object menu" for each one or several FullInstance instead of FullObject
const bool is_some_full_instances = selection.is_single_full_instance() ||
@ -4498,12 +4498,12 @@ void Plater::priv::on_right_click(RBtnEvent& evt)
const bool is_part = selection.is_single_volume() || selection.is_single_modifier();
#endif // ENABLE_WORLD_COORDINATE
if (is_some_full_instances)
menu = menus.object_menu();
menu = printer_technology == ptSLA ? menus.sla_object_menu() : menus.object_menu();
else if (is_part)
menu = selection.is_single_text() ? menus.text_part_menu() : menus.part_menu();
else
menu = menus.multi_selection_menu();
}
// }
}
if (q != nullptr && menu) {