diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index 837f32479c..f2a1db3c95 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -2097,6 +2097,14 @@ bool ModelObject::has_solid_mesh() const return false; } +bool ModelObject::has_negative_volume_mesh() const +{ + for (const ModelVolume* volume : volumes) + if (volume->is_negative_volume()) + return true; + return false; +} + void ModelVolume::set_material_id(t_model_material_id material_id) { m_material_id = material_id; diff --git a/src/libslic3r/Model.hpp b/src/libslic3r/Model.hpp index ea22b968d5..359e1fbbdf 100644 --- a/src/libslic3r/Model.hpp +++ b/src/libslic3r/Model.hpp @@ -503,6 +503,8 @@ public: // Detect if object has at least one solid mash bool has_solid_mesh() const; + // Detect if object has at least one negative volume mash + bool has_negative_volume_mesh() const; bool is_cut() const { return cut_id.id().valid(); } bool has_connectors() const; diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 610f3bdec3..fc2e04d5ad 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1096,16 +1096,7 @@ static bool composite_id_match(const GLVolume::CompositeID& id1, const GLVolume: } static bool object_contains_negative_volumes(const Model& model, int obj_id) { - bool ret = false; - if (0 <= obj_id && obj_id < (int)model.objects.size()) { - for (const ModelVolume* v : model.objects[obj_id]->volumes) { - if (v->is_negative_volume()) { - ret = true; - break; - } - } - } - return ret; + return (0 <= obj_id && obj_id < (int)model.objects.size()) ? model.objects[obj_id]->has_negative_volume_mesh() : false; } void GLCanvas3D::SLAView::detect_type_from_volumes(const GLVolumePtrs& volumes)