Better fix for minimum z of object to lay on the bed after rotations

This commit is contained in:
Enrico Turri 2018-08-13 16:16:37 +02:00
parent 93b8f3147c
commit 6742735596

View File

@ -771,21 +771,12 @@ void ModelObject::scale(const Pointf3 &versor)
void ModelObject::rotate(float angle, const Axis &axis) void ModelObject::rotate(float angle, const Axis &axis)
{ {
float min_z = FLT_MAX;
for (ModelVolume *v : this->volumes) for (ModelVolume *v : this->volumes)
{ {
v->mesh.rotate(angle, axis); v->mesh.rotate(angle, axis);
min_z = std::min(min_z, v->mesh.stl.stats.min.z);
} }
if (min_z != 0.0f) center_around_origin();
{
// translate the object so that its minimum z lays on the bed
for (ModelVolume *v : this->volumes)
{
v->mesh.translate(0.0f, 0.0f, -min_z);
}
}
this->origin_translation = Pointf3(0, 0, 0); this->origin_translation = Pointf3(0, 0, 0);
this->invalidate_bounding_box(); this->invalidate_bounding_box();