From afa907504f8f1e044630caf9b008d259601ac9a1 Mon Sep 17 00:00:00 2001 From: Enrico Turri Date: Wed, 31 Oct 2018 16:13:07 +0100 Subject: [PATCH] Fixed autolevel on bed with non uniform scaling --- src/libslic3r/Model.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libslic3r/Model.cpp b/src/libslic3r/Model.cpp index b68d2a1086..360a215cd5 100644 --- a/src/libslic3r/Model.cpp +++ b/src/libslic3r/Model.cpp @@ -929,16 +929,16 @@ double ModelObject::get_instance_min_z(size_t instance_idx) const double min_z = DBL_MAX; ModelInstance* inst = instances[instance_idx]; - Vec3d local_unit_z = (inst->world_matrix(true).inverse() * Vec3d::UnitZ()).normalized(); + const Transform3d& m = inst->world_matrix(true); for (ModelVolume *v : volumes) { for (uint32_t f = 0; f < v->mesh.stl.stats.number_of_facets; ++f) { const stl_facet* facet = v->mesh.stl.facet_start + f; - min_z = std::min(min_z, local_unit_z.dot(facet->vertex[0].cast())); - min_z = std::min(min_z, local_unit_z.dot(facet->vertex[1].cast())); - min_z = std::min(min_z, local_unit_z.dot(facet->vertex[2].cast())); + min_z = std::min(min_z, Vec3d::UnitZ().dot(m * facet->vertex[0].cast())); + min_z = std::min(min_z, Vec3d::UnitZ().dot(m * facet->vertex[1].cast())); + min_z = std::min(min_z, Vec3d::UnitZ().dot(m * facet->vertex[2].cast())); } }