diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 6972d1d71..dd5929ad6 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -1269,6 +1269,7 @@ sub _trigger_model_object { $self->bounding_box($model_object->bounding_box); my $mesh = $model_object->mesh; + $mesh->repair; $self->convex_hull(Slic3r::Polygon->new(@{Math::ConvexHull::MonotoneChain::convex_hull($mesh->used_vertices)})); $self->facets(scalar @{$mesh->facets}); $self->vertices(scalar @{$mesh->vertices}); @@ -1335,6 +1336,7 @@ sub make_thumbnail { my $mesh = $self->get_model_object->mesh; # $self->model_object is already aligned to origin my $thumbnail = Slic3r::ExPolygon::Collection->new; + $mesh->repair; if (@{$mesh->facets} <= 5000) { # remove polygons with area <= 1mm my $area_threshold = Slic3r::Geometry::scale 1; diff --git a/lib/Slic3r/GUI/PreviewCanvas.pm b/lib/Slic3r/GUI/PreviewCanvas.pm index 065027e83..6bad5552e 100644 --- a/lib/Slic3r/GUI/PreviewCanvas.pm +++ b/lib/Slic3r/GUI/PreviewCanvas.pm @@ -37,6 +37,7 @@ sub new { $self->volumes([]); foreach my $volume (@{$object->volumes}) { my $mesh = $volume->mesh; + $mesh->repair; my $material_id = $volume->material_id // '_'; my $color_idx = first { $materials[$_] eq $material_id } 0..$#materials;