PrusaSlicer icon indicating copy to clipboard operation
PrusaSlicer copied to clipboard

automatic material shrinkage compensation

Open lukeskymuh opened this issue 5 years ago • 9 comments

Version

2.0.0

Operating system type + version

Win 10

3D printer brand / version + firmware version (if known)

i2 MK3

Behavior

Hi, it is known that prints shrink due to the temperature change from printing to room temperature due to their coefficient of thermal Expansion (CTE). I have analyzed this and this is main dimensional erreor for my MK3. It would be great if the slicer would have a function to scale your prints in dependancy of the CTE of the material and the heatbed temperature. Do you think this is possible to implement this feature? Some links about this topic: https://www.thingiverse.com/thing:2484766 https://www.youtube.com/

_Is this a new feature request?_yes

lukeskymuh avatar Oct 18 '19 14:10 lukeskymuh

I agree with this request. Having a default shrinkage factor for each filament profile based upon the middle range of the range of the printing temperature vs a typical ambient temperature (say 22.5C). This would make sense one the Advanced page of the filament definition.

MStylesMS avatar Oct 30 '20 00:10 MStylesMS

This has been implemented in Super Slicer. I don't know how well it works as I have not used it as yet but its there as one of the filament settings. https://github.com/supermerill/SuperSlicer

neophyl avatar Oct 30 '20 09:10 neophyl

This has been implemented in Super Slicer. I don't know how well it works as I have not used it as yet but its there as one of the filament settings. https://github.com/supermerill/SuperSlicer

SuperSlicers "Shrinkage" feature only auto-scales in x and y direction but not in z !? see here At least that is how it is documented. This makes no sense IMHO if you want to compensate CTE.

Simplest solution for CTE compensation: a new "scaling factor" filament setting which auto-scales printed objects in x, y and z.

Most flexible and future proof solution for CTE compensation: three "scaling factor" filament settings - one for each axis

manolitto avatar Jan 13 '21 23:01 manolitto

This has been implemented in Super Slicer. I don't know how well it works as I have not used it as yet but its there as one of the filament settings. https://github.com/supermerill/SuperSlicer

SuperSlicers "Shrinkage" feature only auto-scales in x and y direction but not in z !? see here At least that is how it is documented. This makes no sense IMHO if you want to compensate CTE.

I learned that SuperSlicer is doing right by just compensating in x and y. Reason is: the z size is given by the vertical steps which are always exact. So, every single layer is printed exactly at the height it should be - regardless of the shrinking of already printed layers.

So I propose this instead:

Simplest solution for CTE compensation: a new "scaling factor" filament setting which auto-scales printed objects in x, y

Most flexible and future proof solution for CTE compensation: one "scaling factor" filament setting for x and y compensation

manolitto avatar Mar 24 '22 08:03 manolitto

This I think is the last remaining feature I love with Simplify3D although I have transitioned 99% of my work to PruseSlicer. They have both an import model script feature as well as a dimensional XY correction in the setup. Is a great feature to add for the overall printer (if I consistently print +-) but now I am printing ASA and other higher shrinkage filaments it is more important as a filament override. https://www.simplify3d.com/support/print-quality-troubleshooting/dimensional-accuracy/ Please add to PrusaSlicer!

Gefionious avatar Mar 31 '22 18:03 Gefionious

I should note, that it appears there are work-arounds available... I am looking at this: [https://www.thingiverse.com/thing:2484766#Summary] I think it is very possible to add g-code via the M92 steps per mm correction in a script, perhaps even checking the filament profile. Something to consider.

UPDATE: I used that thingverse technique (link above) and for my printer and printing 3DMAX ASA, I added the following command to the Filament Settings / Custom G-code / Start G-code: M92 X99.77 Y99.75 Z396.83 (which is very specific for my printer and this filament and is the result of the calibration process) and then added the following code to the Filament End G-code of M501 (again for the Prusa firmware, M501 reloads settings from EPROM which undoes the custom command above).

End Result! My 25x25x25mm cube printed with ASA originally measured 24.75x24.8x25.2mm and now after it is 25.04mmx24.96mmx24.98mm! Very happy! I could tune it further but this is well within any accuracy needs I have.

I do have an open question about how much this is impacted by layer height, I was printing in 0.2. Now may need to do some more testing on other layer heights.

Gefionious avatar Mar 31 '22 18:03 Gefionious

Guys please add this feature to prusaslicer I am begging. I dont know, is it too hard to implement this? Almost all other slicer has this feature and I think it is extremely important feature for the people who prints engineering parts. I see first topic is opened in 2019. You can take a look superslicer's filament shrinkage ratio. It is probably too simple to add for you guys. PLEASEEE @kubispe1 @hejllukas Ekran görüntüsü 2022-09-28 130822 Ekran görüntüsü 2022-09-28 130921

ruredi87 avatar Sep 28 '22 10:09 ruredi87

Chiming in to say I would really like to see this feature as well!

johnkray avatar Jan 06 '23 23:01 johnkray

Are there any plans to add this feature?

jowgn avatar Feb 15 '23 19:02 jowgn

A post process script will do?

nicoster avatar Mar 13 '23 07:03 nicoster

another vote for this, it should be per filament because different filaments shrink differently, as well as have separate percentages for XY plane and Z height, because they shrink differently (IME Z usually doesnt shrink that much).

A nice to have would be something like XY shrinkage scaling based on z height, as a nonlinear function that looks like:

thisLayerScale = filamentScaleSetting * zHeight / (zHeight + curveSharpnessConstant)

because the base of a print is held rigid by being bonded to the build plate, it shrinks less. There is still some shrinkage, but it happens after the print comes off the plate.

patrickmcquay avatar May 09 '23 14:05 patrickmcquay

Well nothing to add, need this feature, please add in next Version... I hate Orca and love how Prusa is used, but with currently only printing abs, asa, pc etc no shrink correction is a no brainer....

TjardF avatar Jul 23 '23 18:07 TjardF

Hi, is there an update on about implementing this, also z shrinkage aswell?

MrBlackmidi avatar Feb 08 '24 06:02 MrBlackmidi

Aparently the prusa slicer team does not understand the issue. I. Long time ago I got an answer from them that they do not see the need for this simple feature. As other other slicers have now implemented it, they may rethink and change their opinion.

lukeskymuh avatar Feb 08 '24 08:02 lukeskymuh

I also link this to this FR, as they are basically all the same: https://github.com/prusa3d/PrusaSlicer/issues/11183

Phil1988 avatar Mar 17 '24 15:03 Phil1988