SPE-1103 Added menu items for the conversation of the volumes from/to meters

Related to #4521
This commit is contained in:
YuSanka 2021-02-10 20:31:17 +01:00
parent 8049dd1f72
commit e664100bf6
8 changed files with 84 additions and 42 deletions

View file

@ -3329,6 +3329,8 @@ void Plater::priv::reload_from_disk()
new_volume->translate(new_volume->get_transformation().get_matrix(true) * (new_volume->source.mesh_offset - old_volume->source.mesh_offset));
if (old_volume->source.is_converted_from_inches)
new_volume->convert_from_imperial_units();
if (old_volume->source.is_converted_from_meters)
new_volume->convert_from_meters();
new_volume->supported_facets.assign(old_volume->supported_facets);
new_volume->seam_facets.assign(old_volume->seam_facets);
std::swap(old_model_object->volumes[sel_v.volume_idx], old_model_object->volumes.back());
@ -3871,7 +3873,7 @@ void Plater::priv::on_right_click(RBtnEvent& evt)
menu_item_convert_unit_position = 2;
}
sidebar->obj_list()->append_menu_item_convert_unit(menu, menu_item_convert_unit_position);
sidebar->obj_list()->append_menu_items_convert_unit(menu, menu_item_convert_unit_position);
sidebar->obj_list()->append_menu_item_settings(menu);
if (printer_technology != ptSLA)
@ -5246,20 +5248,22 @@ void Plater::scale_selection_to_fit_print_volume()
p->scale_selection_to_fit_print_volume();
}
void Plater::convert_unit(bool from_imperial_unit)
void Plater::convert_unit(ConversionType conv_type)
{
std::vector<int> obj_idxs, volume_idxs;
wxGetApp().obj_list()->get_selection_indexes(obj_idxs, volume_idxs);
if (obj_idxs.empty() && volume_idxs.empty())
return;
TakeSnapshot snapshot(this, from_imperial_unit ? _L("Convert from imperial units") : _L("Revert conversion from imperial units"));
TakeSnapshot snapshot(this, conv_type == ConversionType::CONV_FROM_INCH ? _L("Convert from imperial units") :
conv_type == ConversionType::CONV_TO_INCH ? _L("Revert conversion from imperial units") :
conv_type == ConversionType::CONV_FROM_METER ? _L("Convert from meters") : _L("Revert conversion from meters"));
wxBusyCursor wait;
ModelObjectPtrs objects;
for (int obj_idx : obj_idxs) {
ModelObject *object = p->model.objects[obj_idx];
object->convert_units(objects, from_imperial_unit, volume_idxs);
object->convert_units(objects, conv_type, volume_idxs);
remove(obj_idx);
}
p->load_model_objects(objects);