Fix for prusa3d/PrusaSlicer#11487 - Cut Connectors Broken when assigning part to other side

+ Added check objects after cut
+ CutUtils: Ensuring that volumes start with solid parts after solid parts merging for proper slicing

(cherry picked from commit prusa3d/PrusaSlicer@a9410edc2c)
This commit is contained in:
YuSanka 2023-11-11 12:50:41 +08:00 committed by Noisyfox
parent 66d4b4d59a
commit 799b0965f5
3 changed files with 34 additions and 2 deletions

View file

@ -395,6 +395,9 @@ static void distribute_modifiers_from_object(ModelObject* from_obj, const int in
for (ModelVolume* vol : from_obj->volumes)
if (!vol->is_model_part()) {
// Don't add modifiers which are processed connectors
if (vol->cut_info.is_connector && !vol->cut_info.is_processed)
continue;
auto bb = vol->mesh().transformed_bounding_box(inst_matrix * vol->get_matrix());
// Don't add modifiers which are not intersecting with solid parts
if (obj1_bb.intersects(bb))
@ -425,6 +428,8 @@ static void merge_solid_parts_inside_object(ModelObjectPtrs& objects)
if (mv->is_model_part() && !mv->is_cut_connector())
mo->delete_volume(i);
}
// Ensuring that volumes start with solid parts for proper slicing
mo->sort_volumes(true);
}
}
}