Implemented "from/to imperial units conversation" for loaded objects and volumes
This commit is contained in:
parent
0b60d45cf3
commit
8afd273c4b
6 changed files with 131 additions and 2 deletions
src/slic3r/GUI
|
@ -333,6 +333,34 @@ void ObjectList::get_selected_item_indexes(int& obj_idx, int& vol_idx, const wxD
|
|||
vol_idx = type & itVolume ? m_objects_model->GetVolumeIdByItem(item) : -1;
|
||||
}
|
||||
|
||||
void ObjectList::get_selection_indexes(std::vector<int>& obj_idxs, std::vector<int>& vol_idxs)
|
||||
{
|
||||
wxDataViewItemArray sels;
|
||||
GetSelections(sels);
|
||||
assert(!sels.IsEmpty());
|
||||
|
||||
if (m_objects_model->GetItemType(sels[0]) & itVolume) {
|
||||
for (wxDataViewItem item : sels) {
|
||||
obj_idxs.emplace_back(m_objects_model->GetIdByItem(m_objects_model->GetTopParent(item)));
|
||||
|
||||
assert(m_objects_model->GetItemType(item) & itVolume);
|
||||
vol_idxs.emplace_back(m_objects_model->GetVolumeIdByItem(item));
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (wxDataViewItem item : sels) {
|
||||
const ItemType type = m_objects_model->GetItemType(item);
|
||||
assert(type & itObject | itInstance | itInstanceRoot);
|
||||
|
||||
obj_idxs.emplace_back(type & itObject ? m_objects_model->GetIdByItem(item) :
|
||||
m_objects_model->GetIdByItem(m_objects_model->GetTopParent(item)));
|
||||
}
|
||||
}
|
||||
|
||||
std::sort(obj_idxs.begin(), obj_idxs.end(), std::greater<int>());
|
||||
obj_idxs.erase(std::unique(obj_idxs.begin(), obj_idxs.end()), obj_idxs.end());
|
||||
}
|
||||
|
||||
int ObjectList::get_mesh_errors_count(const int obj_idx, const int vol_idx /*= -1*/) const
|
||||
{
|
||||
if (obj_idx < 0)
|
||||
|
@ -1744,6 +1772,15 @@ void ObjectList::append_menu_item_scale_selection_to_fit_print_volume(wxMenu* me
|
|||
[](wxCommandEvent&) { wxGetApp().plater()->scale_selection_to_fit_print_volume(); }, "", menu);
|
||||
}
|
||||
|
||||
void ObjectList::append_menu_items_convert_unit(wxMenu* menu)
|
||||
{
|
||||
append_menu_item(menu, wxID_ANY, _L("Convert from imperial unit"), _L("Convert from imperial unit"),
|
||||
[](wxCommandEvent&) { wxGetApp().plater()->convert_unit(true); }, "", menu);
|
||||
|
||||
append_menu_item(menu, wxID_ANY, _L("Convert to imperial unit"), _L("Convert to imperial unit"),
|
||||
[](wxCommandEvent&) { wxGetApp().plater()->convert_unit(false); }, "", menu);
|
||||
}
|
||||
|
||||
void ObjectList::create_object_popupmenu(wxMenu *menu)
|
||||
{
|
||||
#ifdef __WXOSX__
|
||||
|
@ -1751,6 +1788,7 @@ void ObjectList::create_object_popupmenu(wxMenu *menu)
|
|||
#endif // __WXOSX__
|
||||
|
||||
append_menu_item_reload_from_disk(menu);
|
||||
append_menu_items_convert_unit(menu);
|
||||
append_menu_item_export_stl(menu);
|
||||
append_menu_item_fix_through_netfabb(menu);
|
||||
append_menu_item_scale_selection_to_fit_print_volume(menu);
|
||||
|
@ -1775,6 +1813,7 @@ void ObjectList::create_sla_object_popupmenu(wxMenu *menu)
|
|||
#endif // __WXOSX__
|
||||
|
||||
append_menu_item_reload_from_disk(menu);
|
||||
append_menu_items_convert_unit(menu);
|
||||
append_menu_item_export_stl(menu);
|
||||
append_menu_item_fix_through_netfabb(menu);
|
||||
// rest of a object_sla_menu will be added later in:
|
||||
|
@ -1788,6 +1827,7 @@ void ObjectList::create_part_popupmenu(wxMenu *menu)
|
|||
#endif // __WXOSX__
|
||||
|
||||
append_menu_item_reload_from_disk(menu);
|
||||
append_menu_items_convert_unit(menu);
|
||||
append_menu_item_export_stl(menu);
|
||||
append_menu_item_fix_through_netfabb(menu);
|
||||
|
||||
|
@ -4050,6 +4090,8 @@ void ObjectList::show_multi_selection_menu()
|
|||
return wxGetApp().plater()->can_reload_from_disk();
|
||||
}, wxGetApp().plater());
|
||||
|
||||
append_menu_items_convert_unit(menu);
|
||||
|
||||
wxGetApp().plater()->PopupMenu(menu);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue