From 43a65adb2f3d5668c1d1ca363ee2993c15fb5592 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Fri, 20 Dec 2024 16:49:42 +0800 Subject: [PATCH] FIX: only single color object has printable error detection painting and add modifier only report warning and slicing is allowed. jira: STUDIO-9113 Change-Id: I0f9687af9b91c310e4f0120adc80f447e9012f3c --- src/slic3r/GUI/3DScene.cpp | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/slic3r/GUI/3DScene.cpp b/src/slic3r/GUI/3DScene.cpp index 55513213a..ac5c34559 100644 --- a/src/slic3r/GUI/3DScene.cpp +++ b/src/slic3r/GUI/3DScene.cpp @@ -1798,15 +1798,23 @@ bool GLVolumeCollection::check_outside_state(const BuildVolume &build_volume, Mo if (state == BuildVolume::ObjectState::Limited) { //unprintable_filament_ids.resize(inside_extruders.size()); ModelObject *model_object = model_objects[volume->object_idx()]; - ModelVolume *model_volume = model_object->volumes[volume->volume_idx()]; - for (size_t i = 0; i < inside_extruders.size(); ++i) { - if (!inside_extruders[i]) { - std::vector filaments = model_volume->get_extruders(); - unprintable_filament_ids[i].insert(filaments.begin(), filaments.end()); - if (object_results) { - std::map>& obj_extruder_filament_maps = objects_unprintable_filaments[model_object]; - std::set& obj_extruder_filaments = obj_extruder_filament_maps[i+1]; - obj_extruder_filaments.insert(filaments.begin(), filaments.end()); + // Only check for single-color object + std::set object_filaments; + for (ModelVolume *m_volume : model_object->volumes) { + std::vector filaments = m_volume->get_extruders(); + object_filaments.insert(filaments.begin(), filaments.end()); + } + if (object_filaments.size() == 1) { + ModelVolume *model_volume = model_object->volumes[volume->volume_idx()]; + for (size_t i = 0; i < inside_extruders.size(); ++i) { + if (!inside_extruders[i]) { + std::vector filaments = model_volume->get_extruders(); + unprintable_filament_ids[i].insert(filaments.begin(), filaments.end()); + if (object_results) { + std::map> &obj_extruder_filament_maps = objects_unprintable_filaments[model_object]; + std::set &obj_extruder_filaments = obj_extruder_filament_maps[i + 1]; + obj_extruder_filaments.insert(filaments.begin(), filaments.end()); + } } } }