From b403ba10c126c45ff8c38ab69fb62455081507ef Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Wed, 18 Jan 2023 11:20:22 +0100 Subject: [PATCH] Fix mirroring inside volumes trafos Fix leftover after successive slicing runs --- src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp | 3 ++- src/libslic3r/SLAPrintSteps.cpp | 15 ++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp b/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp index f81a445416..aabe9a2de3 100644 --- a/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp +++ b/src/libslic3r/CSGMesh/PerformCSGMeshBooleans.hpp @@ -26,7 +26,8 @@ MeshBoolean::cgal::CGALMeshPtr get_cgalmesh(const CSGPartT &csgpart) MeshBoolean::cgal::CGALMeshPtr ret; indexed_triangle_set m = *its; - its_transform(m, get_transform(csgpart)); + auto tr = get_transform(csgpart); + its_transform(m, get_transform(csgpart), true); try { ret = MeshBoolean::cgal::triangle_mesh_to_cgal(m); diff --git a/src/libslic3r/SLAPrintSteps.cpp b/src/libslic3r/SLAPrintSteps.cpp index 269195bc01..92260deecb 100644 --- a/src/libslic3r/SLAPrintSteps.cpp +++ b/src/libslic3r/SLAPrintSteps.cpp @@ -150,7 +150,7 @@ static indexed_triangle_set csgmesh_merge_positive_parts(const Cont &csgmesh) const indexed_triangle_set * pmesh = csg::get_mesh(csgpart); if (pmesh && op == csg::CSGType::Union) { indexed_triangle_set mcpy = *pmesh; - its_transform(mcpy, csg::get_transform(csgpart)); + its_transform(mcpy, csg::get_transform(csgpart), true); its_merge(m, mcpy); } } @@ -292,9 +292,8 @@ void SLAPrint::Steps::generate_preview(SLAPrintObject &po, SLAPrintObjectStep st m = generate_preview_vdb(po, step); } - if (!m.empty()) - po.m_preview_meshes[step] = - std::make_shared(std::move(m)); + po.m_preview_meshes[step] = + std::make_shared(std::move(m)); for (size_t i = size_t(step) + 1; i < slaposCount; ++i) { @@ -408,13 +407,7 @@ void SLAPrint::Steps::drill_holes(SLAPrintObject &po) csg_inserter{po.m_mesh_to_slice, slaposDrillHoles}, csg::mpartsDrillHoles); - auto r = po.m_mesh_to_slice.equal_range(slaposDrillHoles); - - // update preview mesh - if (r.first != r.second) - generate_preview(po, slaposDrillHoles); - else - po.m_preview_meshes[slaposDrillHoles] = po.get_mesh_to_print(); + generate_preview(po, slaposDrillHoles); // Release the data, won't be needed anymore, takes huge amount of ram if (po.m_hollowing_data && po.m_hollowing_data->interior)