Exclude region judgment before optimizing slice

This commit is contained in:
sunsets
2024-05-20 16:05:53 +08:00
parent 323538586d
commit 13d99fd843
5 changed files with 49 additions and 27 deletions

View File

@@ -1511,9 +1511,22 @@ bool GLCanvas3D::check_volumes_outside_state(GLVolumeCollection& volumes, ModelI
state = BuildVolume::ObjectState::Below;
else {
switch (build_volume.type()) {
// B66
case BuildVolume::Type::Rectangle:
//FIXME this test does not evaluate collision of a build volume bounding box with non-convex objects.
state = build_volume.volume_state_bbox(volume_bbox(*volume));
if (state == BuildVolume::ObjectState::Inside) {
for (size_t i = 0; i < m_model->objects.size(); ++i) {
ModelObject * object = m_model->objects[i];
ModelInstance *instance = object->instances[0];
Polygon hull = instance->convex_hull_2d();
state = build_volume.check_outside(hull);
if (state != BuildVolume::ObjectState::Inside) {
break;
}
}
}
break;
case BuildVolume::Type::Circle:
case BuildVolume::Type::Convex: