Reconcile infill/skin overlap prevention with nested structures infill #103
+352
−143
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR #75 prevented infill/skin overlap by subtracting skin areas from infill boundaries. PR #98 fixed nested structures infill by disabling this subtraction entirely. This reconciles both features.
Root Cause
Exposure-detected skin areas include regions inside holes where nested structures exist. Subtracting these from infill boundaries prevented nested structures from generating their own infill.
Solution
Filter skin areas to exclude regions inside holes before passing to infill generation. This matches the existing behavior in skin generation (line 740), which already skips areas inside holes via
isAreaInsideAnyHoleWall().Result
Testing
Added 4 comprehensive automated tests in
src/slicer/slice.test.coffeeto verify the reconciliation:All 569 tests pass (565 existing + 4 new), ensuring the reconciliation continues to work correctly.
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.