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

Add option to "Reverse only internal perimeters" under the reverse on odd feature to reduce part warping #2722

Merged
merged 16 commits into from
Nov 19, 2023

Conversation

igiannakas
Copy link
Contributor

@igiannakas igiannakas commented Nov 13, 2023

This "Reverse only internal perimeters" option is an extension to Noisyfox's PR #2413 where the reversal is not executed on external perimeters.

The primary use case for this PR is to greatly reduce part stresses as they are now distributed in alternating directions, which should reduce warping, while maintaining external wall quality. This can be very useful for warp prone material, like ABS/ASA and also for elastic filaments like TPU and Silk PLA.

For the above to be effective, set the Reverse Threshold to 0, so that all internal walls print direction alternates on odd layers irrespective of the overhang degree.

This setting though, greatly reduces the effectiveness of the reverse on odd setting. However it also eliminates artefacts on the external walls caused by inaccuracies in the printer motion system while maintaining some marginal benefit on steep overhangs and a more significant benefit at sharp edges of overhangs.

Demo print below
Below image is with a 0.12 layer height.

  1. The top part is with reverse on odd setting completely disabled
  2. The middle part is with reverse on odd enabled but for internal perimeters only (this PR)
  3. The bottom part is with reverse on odd enabled throughout

We can observe that the overhangs are slightly better on the middle part (this PR) compared to it completely disabled but worse than when reverse on odd is applied to the external perimeters as well. Specifically the curling up on the edges is greatly reduced indicating lower internal stresses to the part while also maintaining external wall quality.

Reverse on odd - internal only

@igiannakas igiannakas changed the title Add option to not reverse on odd for external perimeters Add option to "Reverse only internal perimeters" under the reverse on odd feature set. Nov 13, 2023
@Noisyfox
Copy link
Collaborator

For the above to be effective, set the Reverse Threshold to 0, so that all internal walls print direction alternates on odd layers irrespective of the overhang degree.

That's a very interesting idea, great work!

@igiannakas igiannakas changed the title Add option to "Reverse only internal perimeters" under the reverse on odd feature set. Add option to "Reverse only internal perimeters" under the reverse on odd feature. Nov 13, 2023
@igiannakas igiannakas changed the title Add option to "Reverse only internal perimeters" under the reverse on odd feature. Add option to "Reverse only internal perimeters" under the reverse on odd feature Nov 13, 2023
@igiannakas
Copy link
Contributor Author

igiannakas commented Nov 13, 2023

For the above to be effective, set the Reverse Threshold to 0, so that all internal walls print direction alternates on odd layers irrespective of the overhang degree.

That's a very interesting idea, great work!

Yeah! It's inspired by Cura's implementation of "alternate wall directions" which was made specifically for reducing part stress.

However Cura also goes clockwise then anti clockwise even within the same layer. However I feel that this may be overkill as this will greatly reduce part stress between layers already.

@Noisyfox
Copy link
Collaborator

For the above to be effective, set the Reverse Threshold to 0, so that all internal walls print direction alternates on odd layers irrespective of the overhang degree.

That's a very interesting idea, great work!

Yeah! It's inspired by Cura's implementation of "alternate wall directions" which was made specifically for reducing part stress.

However Cura also goes clockwise then anti clockwise even within the same layer. However I feel that this may be overkill as this will greatly reduce part stress between layers already.

Interesting that Cura does that. Do you mean different direction between adjacent walls? Like if wall count is 5 then the inner 4 walls will have alternating directions within the same layer?

@igiannakas
Copy link
Contributor Author

For the above to be effective, set the Reverse Threshold to 0, so that all internal walls print direction alternates on odd layers irrespective of the overhang degree.

That's a very interesting idea, great work!

Yeah! It's inspired by Cura's implementation of "alternate wall directions" which was made specifically for reducing part stress.
However Cura also goes clockwise then anti clockwise even within the same layer. However I feel that this may be overkill as this will greatly reduce part stress between layers already.

Interesting that Cura does that. Do you mean different direction between adjacent walls? Like if wall count is 5 then the inner 4 walls will have alternating directions within the same layer?

Yes correct, it will print external clock wise, then first internal counter clockwise, second internal clock wise and so forth. Just checked on the latest release under experimental.

@Noisyfox
Copy link
Collaborator

Noisyfox commented Nov 13, 2023

Sounds like an overkill indeed, and what concerns me is thermal: print two adjacent walls with different direction means you will end up extruding hot filament right next to the end of previous wall that just got extruded and haven't been cooled down enough. Not sure if that could cause any problem though, or maybe I'm just being too concerned.

@igiannakas
Copy link
Contributor Author

Sounds like an overkill indeed, and what concerns me is thermal: print two adjacent walls with different direction means you will end up extruding hot filament right next to the end of previous wall that just got extruded and haven't been cooled down enough. Not sure if that could cause any problem though, or maybe I'm just being too concerned.

Funnily enough, Cura starts the internal seams on opposite ends of the print to reduce stresses even more - dont think thermals are the reason but its an interesting take none the less

@SoftFever
Copy link
Owner

Great idea.
Love it!

@Eldenroot
Copy link
Contributor

Would be nice to add a Cura implementation as an option. Good job

@igiannakas
Copy link
Contributor Author

Would be nice to add a Cura implementation as an option. Good job

This option really should have the same effect. Suggest some testing is done with warp prone models and lets take it from there.

@igiannakas igiannakas changed the title Add option to "Reverse only internal perimeters" under the reverse on odd feature Add option to "Reverse only internal perimeters" under the reverse on odd feature to reduce part warping Nov 13, 2023
@Noisyfox Noisyfox added this to the 1.9.0 milestone Nov 16, 2023
@Noisyfox Noisyfox added the enhancement New feature or request label Nov 16, 2023
Noisyfox
Noisyfox previously approved these changes Nov 16, 2023
@SoftFever SoftFever merged commit cd475f0 into SoftFever:main Nov 19, 2023
4 checks passed
@SoftFever
Copy link
Owner

Look good.
Thank you!

@igiannakas igiannakas deleted the pr-reverse-on-odd-no-external branch November 19, 2023 11:58
@vovodroid
Copy link
Contributor

vovodroid commented Dec 30, 2023

It seems that external perimeter reversed anyway (1.9.0-alpha):

image

image

External perimeter goes CW direction.

@vovodroid
Copy link
Contributor

vovodroid commented Dec 30, 2023

Also I have a question - if there are only two perimeters, what would be more beneficial to reduce warping: alternate internal perimeter direction each layer, or always extrude internal CW direction, to compensate external perimeter CCW direction?

@Eldenroot
Copy link
Contributor

Idk if it is ok or nok, but I think it works fine...

@vovodroid
Copy link
Contributor

vovodroid commented Jan 1, 2024

It works fine, but alternating external perimeter impairs surface quality:

image

You see, that perimeter offset oscillates each layer, as was mentioned in original PR #2413

@igiannakas
Copy link
Contributor Author

It works fine, but alternating external perimeter impairs surface quality:

image

You see, that perimeter offset oscillates each layer, as was mentioned in original PR #2413

Can you attach a project file please?

@vovodroid
Copy link
Contributor

I didn't save it, nothing special. Just standard cylinder with 2 walls without infill (or may be about 10%). External wall printed first.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants