show only selected object in toolpath preview

This commit is contained in:
Florens Wasserfall 2017-04-06 08:54:23 +02:00
parent 95d33df2f0
commit 6b9188a568
2 changed files with 24 additions and 14 deletions

View File

@ -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);
}

View File

@ -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);