diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index c0ba2003a8..f9dd08f36c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -3782,15 +3782,20 @@ void GLCanvas3D::update_sequential_clearance() // collects instance transformations from volumes // first define temporary cache + unsigned int instances_count = 0; std::vector>> instance_transforms; for (size_t o = 0; o < m_model->objects.size(); ++o) { instance_transforms.emplace_back(std::vector>()); const ModelObject* model_object = m_model->objects[o]; for (size_t i = 0; i < model_object->instances.size(); ++i) { instance_transforms[o].emplace_back(false, Transform3d()); + ++instances_count; } } + if (instances_count == 1) + return; + // second fill temporary cache with data from volumes for (const GLVolume* v : m_volumes.volumes) { if (v->is_modifier || v->is_wipe_tower) @@ -3833,6 +3838,7 @@ void GLCanvas3D::update_sequential_clearance() // calculates instances 2d hulls (see also: Print::sequential_print_horizontal_clearance_valid()) Polygons polygons; + polygons.reserve(instances_count); for (size_t i = 0; i < instance_transforms.size(); ++i) { const auto& object = instance_transforms[i]; for (const auto& instance : object) {