diff --git a/src/slic3r/GUI/Jobs/EmbossJob.cpp b/src/slic3r/GUI/Jobs/EmbossJob.cpp index 3b7af50efa..f97d3c03b2 100644 --- a/src/slic3r/GUI/Jobs/EmbossJob.cpp +++ b/src/slic3r/GUI/Jobs/EmbossJob.cpp @@ -22,6 +22,9 @@ using namespace GUI; // private namespace namespace priv{ +// create sure that emboss object is bigger than source object [in mm] +constexpr float safe_extension = 1.0f; + /// /// Assert check of inputs data /// @@ -416,7 +419,8 @@ void UseSurfaceJob::process(Ctl &ctl) { double shape_scale = Emboss::get_shape_scale(fp, ff); Emboss::OrthoProject cut_projection = priv::create_projection_for_cut( cut_projection_tr, shape_scale, bb, z_range); - float projection_ratio = -z_range.first / (z_range.second - z_range.first); + float projection_ratio = (-z_range.first + priv::safe_extension) / + (z_range.second - z_range.first + 2 * priv::safe_extension); // Use CGAL to cut surface from triangle mesh SurfaceCut cut = cut_surface(source.its, shapes, cut_projection, projection_ratio); if (cut.empty()) @@ -648,10 +652,8 @@ Emboss::OrthoProject priv::create_projection_for_cut( const BoundingBox &shape_bb, const std::pair &z_range) { - // create sure that emboss object is bigger than source object - const float safe_extension = 1.0f; - float min_z = z_range.first - safe_extension; - float max_z = z_range.second + safe_extension; + float min_z = z_range.first - priv::safe_extension; + float max_z = z_range.second + priv::safe_extension; assert(min_z < max_z); // range between min and max value double projection_size = max_z - min_z;