Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Combined infill max layer height (optional) parameter #6401

Merged
merged 10 commits into from
Sep 7, 2024

Conversation

igiannakas
Copy link
Contributor

@igiannakas igiannakas commented Aug 9, 2024

Description

Introduced option that is only visible when combine infill is selected. It allows to set the maximum layer height over which the combination happens. Defaults to 0, which uses the nozzle diameter as it is currently done.

This setting is useful when using combine infill with layer heights that when combined result in the full diameter of the nozzle being used, resulting in weaker parts.

For example a 0.1 layer height print using combined infill for a 0.4 nozzle would result in a 0.4 layer height infill which is fast but weak. For better layer adhesion, 80% of the nozzle width should be used (0.32) which would mean 3 layers combined instead of 4.

Leaving this option to 100% (default) uses the nozzle diameter as the maximum, replicating the current behaviour. For user failsafe, 0 is also set to use the nozzle diameter.

EDIT: Updated PR to also allow a % of the nozzle size for the region.

0.1 LH combined over 4 layers for a 0.4 nozzle
image

0.1 LH combined over 3 layers for a 0.4 nozzle when 0.32 infill combination - max layer height is set
image

Available as an option on a per object
image

EDIT
Now also enabled as a % over the nozzle size used to print the region
image

Screenshots/Recordings/Graphs

Tests

Tested with setting applied to global settings
Tested with setting applied on a per object
Tested with 0.4 nozzle, 0.1 LH and value of 0.32 -> combined every 3 layers.
Tested with 0.4 nozzle, 0.16 LH and value of 0.32 -> combined every 2 layers.
Tested with 0.4 nozzle, 0.1LH and value of 0 -> combined every 4 layers. (ignoring this parameter and using the nozzle size as the limit - default behaviour)

Fixes #2735
Fixes #5421
Fixes #4066

Credits:

To Noisyfox for the original implementation that pointed me in the right direction where the change needed to be made
#2757

@igiannakas igiannakas changed the title Combined infill max layer height parameter Combined infill max layer height (optional) parameter Aug 9, 2024
@idkjustgoogleit
Copy link

Could this also be also a percentage instead of mm?

@igiannakas
Copy link
Contributor Author

I'll check and see what I can do...

@igiannakas
Copy link
Contributor Author

igiannakas commented Aug 9, 2024

Could this also be also a percentage instead of mm?

Done. Expressed as a % of the nozzle size used for the region.

@vovodroid
Copy link
Contributor

May be it's good enough to hardcode max layer height to 65-80% of infill width (not nozzle diameter)?
I use following code in my fork:

                float w = region.config().sparse_infill_line_width.get_abs_value(nozzle_diameter);
                if (w == 0)
                    w = this->config().line_width.get_abs_value(nozzle_diameter);

                if (current_height + layer->height >= w / 1.5 + EPSILON) {

@igiannakas
Copy link
Contributor Author

igiannakas commented Aug 9, 2024

But isn’t layer adhesion mostly linked to layer height? So even say with a 0.8 line width on a 0.4 nozzle a 0.4 sparse infill layer height would still be brittle, no? Haven’t tried it but that’s my instinct.

https://help.prusa3d.com/article/layers-and-perimeters_1748#

Logic stems from here

“The layer height should be below 80% of the nozzle diameter (e.g. the maximum layer height with a 0.4 mm nozzle is about 0.32 mm). The layer height cannot be higher than the nozzle diameter, PrusaSlicer will display an error message if you try to input such a value.”

@vovodroid
Copy link
Contributor

But isn’t layer adhesion mostly linked to layer height?

Sure. But sparse infill actually should be for "roof" support, not bending strength. So I guess some reasonable value could be hardcoded.

@CristianGTR97
Copy link

Great idea

Copy link
Owner

@SoftFever SoftFever left a comment

Choose a reason for hiding this comment

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

Looks good
Thank you!

@SoftFever SoftFever merged commit 2c5478e into SoftFever:main Sep 7, 2024
15 checks passed
@igiannakas igiannakas deleted the Combined-infill-max-layer-height branch September 10, 2024 08:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment