OrcaSlicer
OrcaSlicer copied to clipboard
Fix for bridge expansion failing on certain models
Small parameter tweak to increase the tolerance for bridge expansion which addresses an edge case issue on certain STLs where bridges do not expand and do not attach to the perimeters.
Before:
Bridge not attached to perimeter when printing. Model failed to print.
After:
Model: Bridge expansion failing.3mf.zip
My hypothesis is that the bridge expansion was too small to allow for the bridge to intersect boundary regions, causing it to fail to be detected for expansion in subsequent statements in the void LayerRegion::process_external_surfaces(const Layer *lower_layer, const Polygons *lower_layer_covered) function.
By expanding the lower limit by a little, this gets more reliable intersection of bridges which are then picked up by the expansion algorithm.
Bridge expansion failing_2.zip
I have a feeling that the change happened to work for this case.
This value serves as a lower bound threshold; technically, it shouldn't even be used here, as the full_expansion should be far greater than this value per expectation.
I feel we may have missed handling some edge cases in our current codes, resulting in the bridge not being optimized in certain scenarios.
For example, I changed two parameters in your sample project, and it "suddenly" worked.
Bridge expansion failing_2.zip I have a feeling that the change happened to work for this case. This value serves as a lower bound threshold; technically, it shouldn't even be used here, as the
full_expansionshould be far greater than this value per expectation. I feel we may have missed handling some edge cases in our current codes, resulting in the bridge not being optimized in certain scenarios. For example, I changed two parameters in your sample project, and it "suddenly" worked.
Yeap ensure vertical shell thickness on fixes it. Not sure why. I agree with you that there is something more going on, I searched but couldn't find where else there is influence.... :(
Converting it ti draft to continue experimenting with further prints and see where else this occurs and what the cause could be