Fix regression in cut

This commit is contained in:
Alessandro Ranellucci 2014-06-14 22:36:49 +02:00
parent 182c5eb809
commit 87383250de
3 changed files with 11 additions and 12 deletions

View File

@ -1201,7 +1201,7 @@ sub object_cut_dialog {
if (my @new_objects = $dlg->NewModelObjects) { if (my @new_objects = $dlg->NewModelObjects) {
$self->remove($obj_idx); $self->remove($obj_idx);
$self->load_model_objects(@new_objects); $self->load_model_objects(grep defined($_), @new_objects);
$self->arrange; $self->arrange;
} }
} }

View File

@ -125,7 +125,8 @@ sub new {
sub perform_cut { sub perform_cut {
my ($self) = @_; my ($self) = @_;
my ($upper_object, $lower_object) = $self->{model_object}->cut($self->{cut_options}{z}); my ($new_model, $upper_object, $lower_object) = $self->{model_object}->cut($self->{cut_options}{z});
$self->{new_model} = $new_model;
$self->{new_model_objects} = []; $self->{new_model_objects} = [];
if ($self->{cut_options}{keep_upper} && defined $upper_object) { if ($self->{cut_options}{keep_upper} && defined $upper_object) {
push @{$self->{new_model_objects}}, $upper_object; push @{$self->{new_model_objects}}, $upper_object;

View File

@ -553,14 +553,12 @@ sub print_info {
sub cut { sub cut {
my ($self, $z) = @_; my ($self, $z) = @_;
# clone this one # clone this one to duplicate instances, materials etc.
my $upper = $self->model->add_object($self); my $model = Slic3r::Model->new;
my $lower = $self->model->add_object($self); my $upper = $model->add_object($self);
my $lower = $model->add_object($self);
foreach my $instance (@{$self->instances}) { $upper->clear_volumes;
$upper->add_instance(offset => Slic3r::Pointf->new(@{$instance->offset})); $lower->clear_volumes;
$lower->add_instance(offset => Slic3r::Pointf->new(@{$instance->offset}));
}
foreach my $volume (@{$self->volumes}) { foreach my $volume (@{$self->volumes}) {
if ($volume->modifier) { if ($volume->modifier) {
@ -584,7 +582,7 @@ sub cut {
); );
} }
if ($lower_mesh->facets_count > 0) { if ($lower_mesh->facets_count > 0) {
$lower->add_volume( $lower->add_volume(
material_id => $volume->material_id, material_id => $volume->material_id,
mesh => $lower_mesh, mesh => $lower_mesh,
modifier => $volume->modifier, modifier => $volume->modifier,
@ -595,7 +593,7 @@ sub cut {
$upper = undef if !@{$upper->volumes}; $upper = undef if !@{$upper->volumes};
$lower = undef if !@{$lower->volumes}; $lower = undef if !@{$lower->volumes};
return ($upper, $lower); return ($model, $upper, $lower);
} }
package Slic3r::Model::Volume; package Slic3r::Model::Volume;