Precise Seam: slice modifiers in the belt slicing frame

slice_single_volume_regions() sliced Precise Seam modifiers with
trafo_centered(), but a belt printer slices its layers with
trafo_sliced(): the belt rotation, any pre-slice remap and the lift off
the plate on top. On a belt print the modifier regions landed in the
unrotated frame, away from the walls they were meant to place the seam
on. Slice them with trafo_sliced(), as the support volumes and the seam
enforcers already are. It equals trafo_centered() off a belt printer.
This commit is contained in:
harrierpigeon
2026-10-04 19:22:42 -05:00
parent e8a499df7b
commit 1b4153f0cd
2 changed files with 45 additions and 2 deletions
+3 -2
View File
@@ -1832,10 +1832,11 @@ std::vector<ExPolygons> PrintObject::slice_single_volume_regions(const ModelVolu
{
if (volume == nullptr)
return {};
// Match the existing slicing heights and centered transform without flattening holes.
// Match the existing slicing heights and the frame the layers were sliced in (belt
// pre-slice transforms included) without flattening holes.
const std::vector<float> zs = zs_from_layers(this->layers());
MeshSlicingParamsEx params;
params.trafo = this->trafo_centered();
params.trafo = this->trafo_sliced();
const Print *print = this->print();
return slice_volume(*volume, zs, params, [print]() { print->throw_if_canceled(); });
}