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.67k stars 1.93k forks source link

Deretraction extra length proportional to distance traveled #13010

Open HippoDan opened 3 months ago

HippoDan commented 3 months ago

I've been printing a lot of RC planes out of foaming LW-PLA. That stuff oozes terribly. I frequently need extra on deretract to make up for the amount lost in ooze while traveling. However, for short travels it's often too much resulting in a blob at the start, or too short for long travels resulting in holes or a thinner wall.

I would love the option to put in a deretraction extra length value that will scale with the distance travelled between retract and deretract.

I would either set it up for some sort of scaling factor that would be input next to extra length amount, or have an extra extrusion length set next to the expected travel length for that amount and let the slicer scale it up or down from there.

I've tried putting the pieces really close together so they don't need retracts, but some parts are large in themselves and have retracts regardless.

This problem happens to me even with regular PLA, and although it's very subtle I think this feature would have value beyond just foaming LW-PLA.

u89djt commented 3 months ago

If normal PLA is oozing a lot, it's probably wet. Does the foaming filament get worse with moisture? I got my filament drying advice from the various 3d printing sites like https://all3dp.com/2/how-to-dry-filament-pla-abs-and-nylon/

HippoDan commented 3 months ago

Foaming filament is independent of moisture. The foaming is a desired feature. My filament is dry. The oozing of regular PLA on a 150mm move is insignificant, but noticeable. The real issue is the basic nature of lightweight filament. It continues to expand as long as it is at temperature, so it will ooze out no matter how far you retract. The oozing is a fact of life for LW-PLA. The underextrusion after a long move is the problem I'm trying to solve. One blanket extra deretract value doesn't work well as the amount needed on a 10mm move is much less than that needed after a 100mm move. When printing resumes after the move, the nozzle is empty and the extra amount is a necessity to avoid underextrusion.

A way to account for that distance difference is what I'm looking for.

u89djt commented 3 months ago

Aha, got you, thanks! Just keeping at the workaround angle bcs I'd like to have a go with foaming filament: I suppose arraying wipe walls around/between the parts would get expensive in time and filament. And guaranteeing that those walls are used in the order you want would need some finagling. I noticed an oppotunity to impose print order by massaging layer heights - I don't know if that could do anything useful here? https://github.com/prusa3d/PrusaSlicer/issues/13021#issuecomment-2210703274 I don't know if you want to/can share a project file where you meet the problem - there are a bunch of second heads around that might spot a workaround.

HippoDan commented 2 months ago

I'll see if I can find the most blatant example, or I'll just draw something up where I know it will. happen. Thanks.

u89djt commented 2 months ago

Maybe include a model that you'd normally want to print as well as extreme things so that a range of circumstances that might be met in practice can be seen? If you can't include the a specific model for IP reasons, replace it with a cube in your project file and just link to the location of the original model.