Skip to content

Fix missing overhang layers with supported counterbore bridging - #677

Open
mwz-iot wants to merge 2 commits into
process_optimistic_julyfrom
fix/exclude-raft-from-fan-off-first-layers
Open

Fix missing overhang layers with supported counterbore bridging#677
mwz-iot wants to merge 2 commits into
process_optimistic_julyfrom
fix/exclude-raft-from-fan-off-first-layers

Conversation

@mwz-iot

@mwz-iot mwz-iot commented Aug 7, 2026

Copy link
Copy Markdown

Description

This PR fixes an issue where enabling Counterbore Hole Bridging - Partially Bridged could cause overhang layers that contact support to be missing.

Root cause:
PerimeterGenerator::process_no_bridge() treated the counterbore bridging candidate area as a special fill area and removed it from the original surface (last). Since last is later used to generate perimeter and overhang wall paths, removing this area caused the model body overhang layer to disappear when support was enabled.

Changes:

  • When support is enabled, unsupported_filtered is no longer removed from last, so the original model surface is preserved and perimeter/overhang wall paths can still be generated.
  • For the post-processing fill path, support-enabled cases now shrink the extra counterbore fill area inward before appending it to fill_surfaces.
  • The shrink distance is based on the perimeter occupied zone:
    ext_perimeter_width / 2 + perimeter_spacing * (wall_loops - 1) + perimeter_spacing / 2
  • This keeps counterbore bridging fill while preventing it from interfering with inner/outer walls.
  • Support-disabled behavior remains unchanged.
  • No UI or configuration semantics are changed.
  • The surface type remains stInternal; this PR does not change it to stBottomBridge.

Screenshots/Recordings/Graphs

Before:

  • With counterbore_hole_bridging = chbBridges and support enabled, the overhang layer touching support was missing.
  • After preserving the surface, the fill could interfere with inner/outer wall paths.
image image

After:

  • The overhang layer is preserved.
  • Counterbore fill is still generated.
  • The fill area is inset from the perimeter zone and no longer interferes with inner/outer walls.
image

Tests

Verified with the reproduced 3MF model:

  • counterbore_hole_bridging = chbNone

    • Layer 26 overhang layer exists as baseline.
  • counterbore_hole_bridging = chbBridges with support enabled

    • Layer 26 overhang layer is preserved.
    • Counterbore fill remains present.
    • Fill no longer interferes with inner/outer walls.
  • Support disabled with chbBridges

    • Original behavior is preserved.

Recommended regression checks:

  • Compare chbNone and chbBridges on the same Z layer.
  • Test different wall loop counts.
  • Check chbFilled with support enabled if it shares the same post-processing path.

mwz-iot and others added 2 commits August 7, 2026 10:25
…x1 only)

When support is enabled, the counterbore hole bridging logic in
process_no_bridge() keeps the bridge area in the model surface (last),
preserving perimeter/overhang wall generation. The full unsupported_filtered
is still appended to fill_surfaces for bridge fill coverage.

Note: this is fix1 only, the fill/perimeter interference from
unsupported_filtered extending into the perimeter zone is not addressed
in this commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@mwz-iot mwz-iot self-assigned this Aug 7, 2026
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