Skip to content

[CURA-13291] 'Sharpen' (wall) bridging conditions. - #2368

Open
Remco Burema (rburema) wants to merge 22 commits into
mainfrom
CURA-13291_sharpen_bridging_conditions
Open

[CURA-13291] 'Sharpen' (wall) bridging conditions.#2368
Remco Burema (rburema) wants to merge 22 commits into
mainfrom
CURA-13291_sharpen_bridging_conditions

Conversation

@rburema

@rburema Remco Burema (rburema) commented Sep 2, 2026

Copy link
Copy Markdown
Member

(For the newly introduced setting(s), see front-end PR: Ultimaker/Cura#21782 )

What was originally requested as part of the ticket:

Update the default behaviour of (wall+) bridging with the following changes:

  • Tool paths must be anchored by the model-area (not the support area++) on the layer below.
  • Curves in bridges are to be avoided, except for when within the tolerance of a newly introduced setting 'bridge maximum deviation'.
  • Lines partially supported by the layer below are not to be considered bridging. Use the overhang angle as a threshold to determine 'partially supported'.

+) From the context, I've taken to mostly mean the wall bridging specifically. I mostly didn't touch skin bridging, except for the changes to the bridging mask I suppose (but even that should mostly effect the wall-bridging rather than the skin-bridging, given that the changes will be mostly smaller than a wall-width).
++) Though this set of PR's includes a setting to toggle this behaviour, so the maintainers of 3rd party printers (and our own experiments) have a chance to --at least when it comes to whether or not to regard support as anchoring for bridges specifically-- the 'old' behaviour.


So, what was a relatively simple bundle of requests from our internal stakeholders, turned into a decent into unravelling sanity (maybe that's overstating it a little bit...), after I determined that a) even if only focussing on the walls, there where about 3-ish sources of truth where bridges where supposed to start/end, which b) made, in combination with none of these being complete, leading to (apparent) bugs, made it (almost?) completely impossible to even test the changes I'd made.

So halfway through I decided that enough was enough, the technical debt was out of hand, and re-implemented a large part of the wall-bridging logic. (This does mean that some of the initial commits here are overwritten to a large extent by later ones.)

Remco Burema (rburema) and others added 17 commits August 19, 2026 12:09
Use overhang angle as a threshold. As agreed upon with Print Processes and Materials.

part of CURA-13291
This isn't production-ready (or even tested! or at all elegant...) and the parameter isn't actually in yet (magic number currently) -- but this is a sketch of how I planned to introduce the bridge wall max deviation. It's meant to have mostly straight walls when bridging; non-straight walls don't bridge very well and should be printed with normal or overhang parameters instead.

part of CURA-13291
Feeling cute, might keep this. (A setting wasn't directly what was asked for in the ticket, but I think it makes sense.)

part of CURA-13291
…segments.

Compiles, but doesn't work yet (debugging will need to be done) -- Also needs a lot of parameter documentation still done.

part of CURA-13291
… that're skipped.

For the first bridge, we don't have the (begin) anchor-length. We can use the 'from start of wall' member parameter, but that doesn't take into account that there might have been bridges _before_ the proper first one that where skipped, because they didn't meet the (begin) anchoring requirements themselves. The lenghts of the skipped bridges shouldn't count towards the anchoring of the actual first bridge, so we skip those.

During my debugging sessions while this code was WIP, I changed the - sign to a + sign because I forgot how this worked (even though I wrote it myself the week before) and thought it was a mistake. So, have an extended explanation here so people after me won't mess up either.

part of CURA-13291
@github-actions

github-actions Bot commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Test Results

31 tests   31 ✅  5s ⏱️
 1 suites   0 💤
 1 files     0 ❌

Results for commit 5d3bf99.

♻️ This comment has been updated with latest results.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'C++ Benchmark'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: 4393d47 Previous: f1b43ee Ratio
SimplifyTestFixture/simplify_slot_noplugin 19.683666672433393 ns/iter 3.7417245469758185 ns/iter 5.26

This comment was automatically generated by workflow using github-action-benchmark.

CC: Jelle Spijker (@jellespijker) Erwan MATHIEU (@wawanbreton) Casper Lamboo (@casperlamboo) HellAholic

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The code looks much better than the previous one, the structure makes a lot of sense and I can definitely understand it more easily ❤️
I have some small remarks about the syntax and possible improvements, but nothing big.

Comment thread include/LayerPlan.h
Comment thread include/LayerPlan.h Outdated
Comment thread include/LayerPlan.h Outdated
Comment thread include/LayerPlan.h Outdated
Comment thread include/LayerPlan.h Outdated
Comment thread src/LayerPlan.cpp
Comment thread src/LayerPlan.cpp
Comment thread src/LayerPlan.cpp Outdated
Comment thread src/LayerPlan.cpp Outdated
Comment thread src/LayerPlan.cpp
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.

2 participants