From b6e0458201128b5db4db5faaeb41d307e395edd6 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 17 Aug 2018 09:16:34 +0200 Subject: [PATCH 1/2] Fixed lost selection of imported objects --- lib/Slic3r/GUI/Plater.pm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index a0eef72fe..4fd9a2692 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -1291,7 +1291,9 @@ sub async_apply_config { # We also need to reload 3D scene because of the wipe tower preview box if ($self->{config}->wipe_tower) { - Slic3r::GUI::_3DScene::reload_scene($self->{canvas3D}, 1) if $self->{canvas3D} + my $selections = $self->collect_selections; + Slic3r::GUI::_3DScene::set_objects_selections($self->{canvas3D}, \@$selections); + Slic3r::GUI::_3DScene::reload_scene($self->{canvas3D}, 1) if $self->{canvas3D} } } } @@ -1507,6 +1509,8 @@ sub on_process_completed { $self->{preview3D}->reload_print if $self->{preview3D}; # in case this was MM print, wipe tower bounding box on 3D tab might need redrawing with exact depth: + my $selections = $self->collect_selections; + Slic3r::GUI::_3DScene::set_objects_selections($self->{canvas3D}, \@$selections); Slic3r::GUI::_3DScene::reload_scene($self->{canvas3D}, 1); # if we have an export filename, start a new thread for exporting G-code From 048f3a03fe884566b2ec290164e46ca3fce39b28 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Fri, 17 Aug 2018 10:12:43 +0200 Subject: [PATCH 2/2] Fixed scale to size of objects with multiple instances --- lib/Slic3r/GUI/Plater.pm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 4fd9a2692..b4677b1af 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -1126,8 +1126,7 @@ sub changescale { my $model_object = $self->{model}->objects->[$obj_idx]; my $model_instance = $model_object->instances->[0]; - my $object_size = $model_object->bounding_box->size; - my $bed_size = Slic3r::Polygon->new_scale(@{$self->{config}->bed_shape})->bounding_box->size; + my $object_size = $model_object->instance_bounding_box(0)->size; if (defined $axis) { my $axis_name = $axis == X ? 'X' : $axis == Y ? 'Y' : 'Z'; @@ -1135,7 +1134,7 @@ sub changescale { if ($tosize) { my $cursize = $object_size->[$axis]; my $newsize = $self->_get_number_from_user( - sprintf(L('Enter the new size for the selected object (print bed: %smm):'), unscale($bed_size->[$axis])), + L('Enter the new size for the selected object:'), L("Scale along ").$axis_name, L('Invalid scaling value entered'), $cursize, 1); return if $newsize eq ''; $scale = $newsize / $cursize * 100;