Skip to content

fix: keep support interface intact with variable layer heights - #696

Open
zackaree-shen wants to merge 1 commit into
process_interface_phase2from
fix/variable-layer-height-support-interface
Open

fix: keep support interface intact with variable layer heights#696
zackaree-shen wants to merge 1 commit into
process_interface_phase2from
fix/variable-layer-height-support-interface

Conversation

@zackaree-shen

Copy link
Copy Markdown

Summary

Fixes support interface being fragmented (only ~21% area remaining) when variable layer heights are enabled on a model with a large overhang.

Root cause

trim_support_layers_by_object trims top contact layers using object layer lslices. With variable layer heights, the synchronised gap (sync_gap_with_object_layer) is shorter than the configured gap, so the object layer directly supported by the contact layer falls inside the trimming window. That layer's lslices cover the overhang region itself and trimmed ~80% of the contact area, leaving only fragmented support interface mixed with base support.

Fix

Skip the object layer directly supported by a top contact layer (i == support_layer.idx_object_layer_above) when collecting trimming polygons. This keeps the contact layer intact; fixed layer height behavior is unchanged (verified via debug logs: interface area 1.59e15 covers base fully, base_after = 0).

Verification

  • Variable layer height: support interface restored to full coverage
  • Fixed layer height: no regression (interface coverage 100%, no base residue)

Impact

  • src/libslic3r/Support/SupportMaterial.cpp (12 lines added)
  • Applies to normal (non-tree) supports; tree support path is unaffected (its trim function operates on print support layers without layer_type/idx members).

- Skip trimming the top contact layer by the object layer it directly
  supports: that layer's lslices cover the overhang itself and must not
  be used to trim the very contact layer supporting it
- Previously this layer was excluded only by an EPSILON boundary
  coincidence of the trimming window; with variable layer heights the
  synchronised gap is shorter than the configured gap, so the supported
  layer fell inside the trimming window and its lslices trimmed ~80% of
  the contact area, leaving only fragmented support interface
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant