ENH: dual_extruder: add logic to process extruder_printable_area

JIRA: STUDIO-7498
Change-Id: I1cf53db93acf41b06cb1b9569a0679487c9f1e41
(cherry picked from commit e5be69dedd1ba6dc289a14b89598c9a6101dacb3)
This commit is contained in:
lane.wei 2024-08-30 21:13:16 +08:00 committed by Noisyfox
parent e433e49e2f
commit f702ad9fd2
20 changed files with 339 additions and 76 deletions

View file

@ -3349,8 +3349,23 @@ ModelInstanceEPrintVolumeState ModelInstance::calc_print_volume_state(const Buil
BuildVolume::ObjectState state;
if (!build_volume.bounding_volume2d().inflated(BuildVolume::SceneEpsilon).overlap(bbox2d))
state = BuildVolume::ObjectState::Outside;
else
state = build_volume.object_state(vol->mesh().its, matrix.cast<float>(), true /* may be below print bed */);
else {
switch(build_volume.type())
{
case BuildVolume_Type::Rectangle:
{
state = build_volume.volume_state_bbox(bboxt);
break;
}
case BuildVolume_Type::Circle:
case BuildVolume_Type::Convex:
case BuildVolume_Type::Custom:
default:
state = build_volume.object_state(vol->mesh().its, matrix.cast<float>(), true /* may be below print bed */);
break;
}
}
if (state == BuildVolume::ObjectState::Inside)
// Volume is completely inside.
inside_outside |= INSIDE;