slic3r / Slic3r

Open Source toolpath generator for 3D printers
https://slic3r.org/
GNU Affero General Public License v3.0
3.33k stars 1.29k forks source link

Feature request: Elephant foot compensation #4750

Open probonopd opened 5 years ago

probonopd commented 5 years ago

Please implement the feature "elephant foot compensation" or backport it from Slic3r PE.

As a 3D printer operator, I want to be able to shrink/swell the first layer in X/Y so that I can experimentally compensate for plastic expansion on the first layer (commonly called 'elephant foot').


Note:

With Elephant foot compensation enabled, this

becomes this

which results in an unprintable object because the second layer will be printed in mid air.

The solution could be to restrict elephant foot compensation to the outermost perimeter of the model, and/or to shrink singles line or single perimeter features so much that they disappear.

Reference: https://github.com/prusa3d/Slic3r/issues/1757

VanessaE commented 5 years ago

I would suggest just limiting it such that walls aren't reduced below the first-layer line width.

supermerill commented 5 years ago

Also, you can activate thin walls.

lordofhyphens commented 5 years ago

Which setting is "elephant foot compensation" supposed to be?

supermerill commented 5 years ago

it's a slic3rPE feature, like XY compensation, but only for the first layer.

lordofhyphens commented 5 years ago

So why is this here in the main Slic3r issue tracker?

probonopd commented 5 years ago

Oops, I didn't realize that Slic3r doesn't have this feature. (The whole situation with 2 almost-same applications is a bit confusing.) Sorry!

In this case, I change the story to be a feature request for "elephant foot compensation".

lordofhyphens commented 5 years ago

So you are looking for the following user story: As a 3d printer user, I want to be able to shrink the size of the first layer some fixed mm so that I can compensate for issues with my printer's first layer being wider than I want.

As a user of this feature, I want Slic3r to limit the amount of compensation so that thin walls on the first layer are not removed, so that I do not have a situation where layers 2+ print in the air.

The second one will increase the complexity of the feature by quite a bit, as the situation can be hard to detect in the general case and we need to define what we think the correct behavior is in this case.

lordofhyphens commented 5 years ago

@probonopd I have a good idea how this was probably implemented in the Prusa3d fork and it would be a hack at best (basically a special case of the X/y compensation only applied to whatever the first layer height is set to).

lordofhyphens commented 5 years ago

https://github.com/slic3r/Slic3r/blob/70946af2ae0fa0be69b16defbe14ce72d71071e4/xs/src/libslic3r/PrintObject.cpp

The basic hack would be easy to apply there in PrintObject.cpp, basically create a new advanced option and apply it only to layer id 0. Test should not be too bad either.

How to handle the undesired case is another question that needs more discussion.