mirror of
https://git.mirrors.martin98.com/https://github.com/prusa3d/PrusaSlicer.git
synced 2025-08-15 17:55:56 +08:00
#11484 - Fixed crash when applying Split to Objects command (SPE-1983)
This commit is contained in:
parent
a9410edc2c
commit
9c3a3f8a87
@ -433,13 +433,16 @@ bool Print::sequential_print_horizontal_clearance_valid(const Print& print, Poly
|
||||
// appropriate object distance. Even if I set this to jtMiter the warning still shows up.
|
||||
Geometry::Transformation trafo = model_instance0->get_transformation();
|
||||
trafo.set_offset({ 0.0, 0.0, model_instance0->get_offset().z() });
|
||||
it_convex_hull = map_model_object_to_convex_hull.emplace_hint(it_convex_hull, model_object_id,
|
||||
offset(print_object->model_object()->convex_hull_2d(trafo.get_matrix()),
|
||||
Polygon ch2d = print_object->model_object()->convex_hull_2d(trafo.get_matrix());
|
||||
Polygons offs_ch2d = offset(ch2d,
|
||||
// Shrink the extruder_clearance_radius a tiny bit, so that if the object arrangement algorithm placed the objects
|
||||
// exactly by satisfying the extruder_clearance_radius, this test will not trigger collision.
|
||||
float(scale_(0.5 * print.config().extruder_clearance_radius.value - BuildVolume::BedEpsilon)),
|
||||
jtRound, scale_(0.1)).front());
|
||||
float(scale_(0.5 * print.config().extruder_clearance_radius.value - BuildVolume::BedEpsilon)), jtRound, scale_(0.1));
|
||||
// for invalid geometries the vector returned by offset() may be empty
|
||||
if (!offs_ch2d.empty())
|
||||
it_convex_hull = map_model_object_to_convex_hull.emplace_hint(it_convex_hull, model_object_id, offs_ch2d.front());
|
||||
}
|
||||
if (it_convex_hull != map_model_object_to_convex_hull.end()) {
|
||||
// Make a copy, so it may be rotated for instances.
|
||||
Polygon convex_hull0 = it_convex_hull->second;
|
||||
const double z_diff = Geometry::rotation_diff_z(model_instance0->get_matrix(), print_object->instances().front().model_instance->get_matrix());
|
||||
@ -465,6 +468,7 @@ bool Print::sequential_print_horizontal_clearance_valid(const Print& print, Poly
|
||||
convex_hulls_other.emplace_back(std::move(convex_hull));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!intersecting_idxs.empty()) {
|
||||
// use collected indices (inside convex_hulls_other) to update output
|
||||
|
Loading…
x
Reference in New Issue
Block a user