diff --git a/src/libslic3r/Arrange/SceneBuilder.cpp b/src/libslic3r/Arrange/SceneBuilder.cpp index f9453c9721..53a785ea8d 100644 --- a/src/libslic3r/Arrange/SceneBuilder.cpp +++ b/src/libslic3r/Arrange/SceneBuilder.cpp @@ -99,25 +99,23 @@ bool check_coord_bounds(const BoundingBoxf &bb) ExPolygons extract_full_outline(const ModelInstance &inst, const Transform3d &tr) { ExPolygons outline; - for (const ModelVolume *v : inst.get_object()->volumes) { - Polygons vol_outline; - if (!check_coord_bounds(to_2d(v->mesh().transformed_bounding_box(tr)))) { - outline.clear(); - break; - } + if (check_coord_bounds(to_2d(instance_bounding_box(inst, tr)))) { + for (const ModelVolume *v : inst.get_object()->volumes) { + Polygons vol_outline; - vol_outline = project_mesh(v->mesh().its, - tr * inst.get_matrix() * v->get_matrix(), - [] {}); - switch (v->type()) { - case ModelVolumeType::MODEL_PART: - outline = union_ex(outline, vol_outline); - break; - case ModelVolumeType::NEGATIVE_VOLUME: - outline = diff_ex(outline, vol_outline); - break; - default:; + vol_outline = project_mesh(v->mesh().its, + tr * inst.get_matrix() * v->get_matrix(), + [] {}); + switch (v->type()) { + case ModelVolumeType::MODEL_PART: + outline = union_ex(outline, vol_outline); + break; + case ModelVolumeType::NEGATIVE_VOLUME: + outline = diff_ex(outline, vol_outline); + break; + default:; + } } }