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

Raft enhancements #6003

Closed
wants to merge 4 commits into from
Closed

Raft enhancements #6003

wants to merge 4 commits into from

Conversation

nemart69
Copy link

Several users have been complaining about unsatisfactory raft support in PrusaSlicer.

This PR addresses some of the missing functionality, which is summarized in #3425 (section Expected behavior):

  1. The first model layer printed at 1:1 nozzle size layer height is in my opinion way too high, and produces in almost all cases a random print in the middle of the air.
    While the original implementation uses bridge flow (therefore the first object layer is printed too high), this fix adds a new configuration option "Bridge flow above raft" to select either bridge flow or normal flow for the first object layer above the raft.

  2. The first layer height setting must specify that it's being applied to first raft layer and not first model layer above the raft in prints with a raft.

  3. Perhaps the user should be allowed to customize the non-first raft layer height, otherwise it should be specified what it's going to be calculated at.
    In this fix, the standard configuration option "First layer height" always specifies the first object / model layer height, no matter whether a raft is used or not. Note that the raft is currently printed with fixed layer height: 0.75 * nozzle diameter.

  4. Super-mega feature request: allow the raft contact z distance to be different than the support contact z distance. This will in so many cases need to be vastly different! And the support option of the height range modifier feature was removed! I've found myself splicing together 2 gcodes several times to achieve both a functional raft with a negative contact z value [which is in and of itself something that was requested and is now available but we absolutely don't know why it's necessary and if so even more to the point, why are we printing so high up off the raft?] and supports that didn't actually physically conflict with the model but were in fact removable.
    This fix introduces independent contact Z distance for raft (note: it is not fully independent: it is ignored if soluble interface is selected).

In addition, there are also two extra options:

  • "Bottom layer expansion" : similar to "Advanced / Elephant foot compensation", but instead of shrinking, it can expand the first object layer
  • "Raft size": allows to choose size of the raft with four predefined settings (Small, Normal, Large, Extra large)

Settings:
settings

Resulting sliced layers (normal flow, bridge flow, normal flow + expanded bottom layer):
layers

Configurable raft sizes:
sizes

Final comment - recommended settings to try (nozzle diameter 0.4):

  • Bridge flow above raft: off
  • Raft contact Z distance: 0.1 to 0.12

This gives me significantly better results (with poly carbonate blends), compared with the original implementation. If the raft cannot be just peeled off from the model, some blunt knife is a good tool to help.

bubnikv added a commit that referenced this pull request Feb 10, 2021
Squashed commit of the following:

commit a16674f
Merge: a5972e6 28e5e41
Author: Vojtech Bubnik <bubnikv@gmail.com>
Date:   Wed Feb 10 08:56:21 2021 +0100

    Merge branch 'rafting_extras_2' of https://github.com/nemart69/PrusaSlicer into nemart69-rafting_extras_2

commit 28e5e41
Author: nemart69 <78763471+nemart69@users.noreply.github.com>
Date:   Wed Feb 10 00:58:50 2021 +0100

    Fix after merge with master

    Fixed missing curly brace after improperly solved merge conflict.

commit 02b71f7
Merge: 08131f0 8fbafbe
Author: nemart69 <78763471+nemart69@users.noreply.github.com>
Date:   Tue Feb 9 22:12:26 2021 +0100

    Merge branch 'master' into rafting_extras_2

commit 08131f0
Author: nemart69 <78763471+nemart69@users.noreply.github.com>
Date:   Tue Feb 9 21:17:19 2021 +0100

    Raft changes, GUI part

commit 69aae4a
Author: nemart69 <78763471+nemart69@users.noreply.github.com>
Date:   Tue Feb 9 21:15:33 2021 +0100

    Raft changes, libslic3r part
bubnikv added a commit that referenced this pull request Feb 10, 2021
of pull request Raft enhancements #6003:
Enabling the bridging flow above raft to match the defaults
of the old slicer.
@bubnikv
Copy link
Collaborator

Thanks. I have squash merged it into our repository into branch nemart69-raft.
I have fixed perl integration tests, for some reason the "combine infill" test was failing.
I gave the binary builds to our testers and print experts for review.

I am sure that separating the raft Z distance and disabling the bridging flow about the raft is a good thing. IMHO we need to split the raft / support parameters a bit more, for example the soluble / non-soluble is now part of the support parameters, we should likely extract it out of that support box.

@Drachenkaetzchen
Copy link
Contributor

Drachenkaetzchen commented Feb 22, 2021

Uhm, for some bizarre reason, both issues are working now. It seems that Slicer for some reason decided to ignore all settings I've changed.

I have tested this PR, and I think there are a few a small bugs.

Unexplained 0.1mm gap

  • Layer height is set to 0.2mm
  • First layer height is set to 0.3mm
  • Raft layers: 3
  • Raft contact Z distance: 0.1mm

When inspecting the layers, the raft layers are extruded at Z=0.30mm, Z=0.60mm and Z=0.90mm respectively.

The next extrusion is the first layer, which happens at Z=1.40mm instead of the expected Z=1.30mm.

Calculation:
3 raft layers 0.9mm + contact Z distance 0.1mm + First layer height 0.3mm = 1.30mm

Edit: Removed the info regarding fixed raft height - for some reason it works now.

@Drachenkaetzchen
Copy link
Contributor

Uhm, for some bizarre reason, both issues are working now. It seems that Slicer for some reason decided to ignore all settings I've changed.

It seems that the confusion came from the "Bridge flow above raft" setting, which not only increases the flow but also increases the layer height, looks like the first layer is 0.4mm instead of 0.2mm.

@nemart69
Copy link
Author

Uhm, for some bizarre reason, both issues are working now. It seems that Slicer for some reason decided to ignore all settings I've changed.

It seems that the confusion came from the "Bridge flow above raft" setting, which not only increases the flow but also increases the layer height, looks like the first layer is 0.4mm instead of 0.2mm.

It is great to see some progress here. 👍

Yes, if "bridge flow" is turned on, it will result in 0.4 mm layer height (with 0.4 mm nozzle diameter) - this works exactly the same way in other (non-raft) cases.

And regarding the height of raft layers - these are intentionally set to 0.75 * nozzle diameter (= 0.3 mm in your case), and the setting of First layer height has no influence on this - it is treated as first object layer height.

@Drachenkaetzchen
Copy link
Contributor

It is great to see some progress here. 👍

I'm so glad that you wrote this 🥇, rafts were broken for me and I had to use Cura for everything with rafts.

Yes, if "bridge flow" is turned on, it will result in 0.4 mm layer height (with 0.4 mm nozzle diameter) - this works exactly the same way in other (non-raft) cases.

It would be cool if there was a hint somewhere. I didn't knew that bridge flow actually affected the layer height.

And regarding the height of raft layers - these are intentionally set to 0.75 * nozzle diameter (= 0.3 mm in your case), and the setting of First layer height has no influence on this - it is treated as first object layer height.

That makes sense, but also a tooltip here would be nice!

I'm currently printing some test benchys. My first test with 0.1mm did not come off the raft, but since the 0.2mm distance from Cura did work, I think it'll work once my 0.2mm distance benchy is printed. Will let you know!

@nemart69
Copy link
Author

That makes sense, but also a tooltip here would be nice!

I agree, it must be documented properly, because there are multiple settings that come into play and things are not obvious unless you know the internals.

I'm currently printing some test benchys. My first test with 0.1mm did not come off the raft, but since the 0.2mm distance from Cura did work, I think it'll work once my 0.2mm distance benchy is printed. Will let you know!

Regarding the Z-distance, there is always a trade-off between ease of removal of the raft vs the quality of the first object layer. I think the right value also depends on the material. In my experiments, I tried even Z = 0.07 mm with PLA and 0.1 to 0.12 mm with Polymax PC-Max (a polycarbonate blend). I can remember only one case when I was able to remove the raft easily without a tool (rather a blunt than a sharp knife because otherwise you risk some damage of your print). Personally I prefer a lower Z-distance and a bit more effort to remove the raft. I added some photos from my experiments to issue #3425.

@Drachenkaetzchen
Copy link
Contributor

I'm currently printing some test benchys. My first test with 0.1mm did not come off the raft, but since the 0.2mm distance from Cura did work, I think it'll work once my 0.2mm distance benchy is printed. Will let you know!

Regarding the Z-distance, there is always a trade-off between ease of removal of the raft vs the quality of the first object layer. I think the right value also depends on the material. In my experiments, I tried even Z = 0.07 mm with PLA and 0.1 to 0.12 mm with Polymax PC-Max (a polycarbonate blend). I can remember only one case when I was able to remove the raft easily without a tool (rather a blunt than a sharp knife because otherwise you risk some damage of your print). Personally I prefer a lower Z-distance and a bit more effort to remove the raft. I added some photos from my experiments to issue #3425.

Yep, I was printing ABS so 0.1mm was too optimistic. ABS@0.2mm was okay-ish to remove and I feel this would be a sane default, as it's also the default Z distance for supports - I guess we should treat settings for PLA as sane as it's pretty much the default and gives probably the least amount of support requests.

@bubnikv
Copy link
Collaborator

Merged into master with aee136c
Thanks for your contribution.

I have made some changes:

  1. Printing above raft will no more use the bridging flow. I don't think anybody would want to do that, so I removed that switch and some code complexity.
  2. I have added the 1st layer raft / support pattern density and expansion before, so I have just reworked your raft expansion by adding another parameter for the expansion of other raft layers.
  3. I have removed the xy correction of the 1st object layer above raft. Frankly I am not convinced that it is useful. If I am wrong, we may add it later.

For my reference I am listing some of the issues related to this pull request:
Bottom perimeters bad with raft #6053
Distance from Raft as Air Gap like in cura #2823
Slic3r usese Nozzle diameter to decide first layer after raft thickness. #1277
Incorrect raft contact z distance [unified issue tracker] #3425

@Drachenkaetzchen
Copy link
Contributor

  1. Printing above raft will no more use the bridging flow. I don't think anybody would want to do that, so I removed that switch and some code complexity.

I'm not so sure about that. I'm trying to print ABS with a raft, and the issue is that without bridge flow, I either get one of two scenarios, depending on the air gap height:

  • The first layer after the raft is stuck so well to the raft, that it is impossible to remove
  • The first layer doesn't stick to the raft

I remember that when I used slic3r years ago printing ABS on a raft was no issue, and a plausible explanation would be that slic3r used bridge flow with an air gap, which could result in a "rounder" filament extrusion with less contact points - however I did not review the slic3r code from years ago as I can't pinpoint the exact time frame.

Here's a graphical form directly from @nemart69's original PR. First with bridge flow, second without bridge flow.

image
image

The second one is more squished and makes it extremely hard to remove ABS from the raft below.

I guess another solution would be to allow fan cooling for the first layer after the raft only, but I have yet to experiment with that.

@nemart69
Copy link
Author

First of all, thank you for merging this PR!

1. Printing above raft will no more use the bridging flow. I don't think anybody would want to do that, so I removed that switch and some code complexity.

This is OK from my point of view - I will not miss it, I left it there just for backward compatibility.

2. I have added the 1st layer raft / support pattern density and expansion before, so I have just reworked your raft expansion by adding another parameter for the expansion of other raft layers.

I cannot say much because I have not seen the new feature yet. If that allows a similar expansion then I am fine with it.

3. I have removed the xy correction of the 1st object layer above raft. Frankly I am not convinced that it is useful. If I am wrong, we may add it later.

Based on my experiments, some shrinking of the first layer above the raft occurs and that was a possibility to compensate it. On the other hand I understand that the complexity of the slicer should be kept as low as possible...

@nemart69
Copy link
Author

I guess another solution would be to allow fan cooling for the first layer after the raft only, but I have yet to experiment with that.

@Drachenkaetzchen: I tried to turn the fan cooling on for the first object layer and it helped a bit. I tested some additional materials: ABS+ / gray (although the one I have I consider a bit strange) and PETG / black and I can remove the raft (0.1 mm Z distance, standard flow) easily. With the first object layer cooling on - samples on the right side, I can remove the raft even without any tool, just with help of my nails.

IMG_7962

My setup is MK3S, nozzle 0.4 mm, layer height 0.2 mm, standard temperatures for the materials, enclosure.

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

Successfully merging this pull request may close these issues.

None yet

3 participants