diff --git a/src/slic3r/GUI/PartPlate.cpp b/src/slic3r/GUI/PartPlate.cpp index ffd01e48d9..f81038298b 100644 --- a/src/slic3r/GUI/PartPlate.cpp +++ b/src/slic3r/GUI/PartPlate.cpp @@ -2070,6 +2070,16 @@ bool PartPlate::check_outside(int obj_id, int instance_id, BoundingBoxf3* boundi if (instance_box.max.z() > plate_box.min.z()) plate_box.min.z() += instance_box.min.z(); // not considering outsize if sinking + if (instance_box.min.z() < SINKING_Z_THRESHOLD) { + // Orca: For sinking object, we use a more expensive algorithm so part below build plate won't be considered + if (plate_box.intersects(instance_box)) { + // TODO: FIXME: this does not take exclusion area into account + const BuildVolume build_volume(get_shape(), m_plater->build_volume().printable_height()); + const auto state = instance->calc_print_volume_state(build_volume); + outside = state == ModelInstancePVS_Partly_Outside; + } + } + else if (plate_box.contains(instance_box)) { if (m_exclude_bounding_box.size() > 0)