prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.79k stars 1.94k forks source link

Improve dimensional accuracy by compensating for accumulated inner perimeter overlap excess material #13575

Open wilecoyote2015 opened 2 weeks ago

wilecoyote2015 commented 2 weeks ago

Is your feature request related to a problem? Please describe. Achieving dimensional accuracy is challenging and often results in gambling with approximate xy-compensation or designing models with high tolerance.

Apparently, the overlap of perimeters is a strong driver for low dimensional accuracy because, when printing inner perimeters first and then the outer ones, the (desired) overlap of perimeters causes an outwards shift of the external perimeter's line's final position that accumulates with the number of inner perimeters. The accumulation over inner perimeters occurs because the most inner perimeters are printed first. Although external perimeters can be printed first to alleviate this problem, this solution comes at the cost of bad overhang quality due to the missing anchoring by inner perimeters and also a possibly strong degradation of other features (e.g. holes near seams).

Describe the solution you'd like Although I lack profound knowledge on the exact printing dynamics, I assume that the dimensional error on the external perimeter caused by the perimeter overlap can be estimated (maybe as a function of layer height, nozzle diameter and perimeter count?). If so, this may be compensated by reducing the line width and moving the nozzle closer inward when printing the external perimeter after the internal perimeters.

In addition, maybe it might be beneficial to print the most outer inner perimeter first instead of printing the inner perimeters from inner to outer to alleviate the accumulation of shift and make the excess width more predictable. This, however, is only applicable if not printing an overhang that requires anchoring through the more inner perimeters.

Describe how it would work See above

Describe alternatives you've considered Printing external perimeters first only on non-overhanging regions #12447 This, however, limits the dimensional accuracy to non-overhang regions and reduces surface quality.

Additional context https://www.youtube.com/watch?v=yzPqBt2SrcE

wilecoyote2015 commented 2 weeks ago

Oh, to be honest, I didn't look at OrcaSlicer yet, which has some solution: https://github.com/SoftFever/OrcaSlicer/wiki/Precise-wall as well as the sandwich mode