diff --git a/lib/Slic3r/GUI/Plater/3DPreview.pm b/lib/Slic3r/GUI/Plater/3DPreview.pm index dddefee01..4d6af8287 100644 --- a/lib/Slic3r/GUI/Plater/3DPreview.pm +++ b/lib/Slic3r/GUI/Plater/3DPreview.pm @@ -73,15 +73,15 @@ sub new { } sub reload_print { - my ($self) = @_; + my ($self, $obj_idx) = @_; $self->canvas->reset_objects; $self->_loaded(0); - $self->load_print; + $self->load_print($obj_idx); } sub load_print { - my ($self) = @_; + my ($self, $obj_idx) = @_; return if $self->_loaded; @@ -98,10 +98,16 @@ sub load_print { my $z_idx; { my %z = (); # z => 1 - foreach my $object (@{$self->{print}->objects}) { - foreach my $layer (@{$object->layers}, @{$object->support_layers}) { + if(defined $obj_idx) { # Load only given object + foreach my $layer (@{$self->{print}->get_object($obj_idx)->layers}) { $z{$layer->print_z} = 1; } + }else{ # Load all objects on the plater + support material + foreach my $object (@{$self->{print}->objects}) { + foreach my $layer (@{$object->layers}, @{$object->support_layers}) { + $z{$layer->print_z} = 1; + } + } } $self->enabled(1); $self->{layers_z} = [ sort { $a <=> $b } keys %z ]; @@ -127,14 +133,18 @@ sub load_print { $self->canvas->colors([ $self->canvas->default_colors ]); } - # load skirt and brim - $self->canvas->load_print_toolpaths($self->print); - - foreach my $object (@{$self->print->objects}) { - $self->canvas->load_print_object_toolpaths($object); + if(defined $obj_idx) { # Load only one object + $self->canvas->load_print_object_toolpaths($self->{print}->get_object($obj_idx)); + }else{ # load all objects + # load skirt and brim + $self->canvas->load_print_toolpaths($self->print); - #my @volume_ids = $self->canvas->load_object($object->model_object); - #$self->canvas->volumes->[$_]->color->[3] = 0.2 for @volume_ids; + foreach my $object (@{$self->print->objects}) { + $self->canvas->load_print_object_toolpaths($object); + + #my @volume_ids = $self->canvas->load_object($object->model_object); + #$self->canvas->volumes->[$_]->color->[3] = 0.2 for @volume_ids; + } } $self->_loaded(1); } diff --git a/lib/Slic3r/GUI/Plater/ObjectSettingsDialog.pm b/lib/Slic3r/GUI/Plater/ObjectSettingsDialog.pm index ba4d9999d..d6622125c 100644 --- a/lib/Slic3r/GUI/Plater/ObjectSettingsDialog.pm +++ b/lib/Slic3r/GUI/Plater/ObjectSettingsDialog.pm @@ -93,7 +93,7 @@ sub new { if (!$plater->{processed}) { $self->_trigger_slicing; }else{ - $self->{preview3D}->load_print; + $self->{preview3D}->reload_print($obj_idx); $self->{preview3D}->canvas->zoom_to_volumes; $self->{preview_zoomed} = 1; } @@ -182,7 +182,7 @@ sub new { sub reload_preview { my ($self) = @_; $self->{splineControl}->update; - $self->{preview3D}->reload_print; + $self->{preview3D}->reload_print($self->{obj_idx}); my $object = $self->{plater}->{print}->get_object($self->{obj_idx}); if($object->layer_count-1 > 0) { my $top_layer = $object->get_layer($object->layer_count-1);