OrcaSlicer
OrcaSlicer copied to clipboard
[FEATURE] Experimental small area flow compensation
This is a native implementation of the Small Area Flow Compensation post-processor by Alexander Þór for OrcaSlicer.
What does this do?
Quite often small areas of solid infill appear to be over-extruded, despite the rest of a print looking like it has a well-dialled-in EM/Flow. Currently, there isn't a good understanding of why this happens, so this is an attempt at a brute-force approach to treat the symptom.
The example above used very extreme parameters to show the flow compensation, you will not see this extreme in your gcode (the areas that are more blue have less flow) This screenshot very clearly shows the feature at work.
What is the feature actually doing
This feature modifies the flow of extrusion lines inversely proportional to the length of the extrusion line (the shorter the extrusion, the less flow it should have).
This screenshot shows what is going on really well. The flow is visualized as the more blue, the less flow (and the more red, the more flow). As you can see, where the infill lines get shorter, the lines get bluer, thus indicating they have less flow (and in theory shouldn't show signs of over-extrusion)
Alexander Þór: Author of the original post-processor implementation Weaslus: Master instigator and chief enabler
Really nice and interesting! Thy for a PR!
indeed that is very interesting. This will need a tutorial written up as the parameters won't be simple to calculate as its basically a compensation that will be bespoke to each printer and how accurately it can control nozzle pressure with PA.
So hopefully the flow model being used is pretty much a baseline that works for the majority of cases (results looks promising but it's only been testes by a number of users on the Voron Discord).
The model for the flow compensations consists of up to 10 data pairs that are the extrusion length and the flow compensation factor/multiplier. Extrusion length can be any value as long as they are incrementing from one point to the next. The compensation factor can be between 0 and 1 inclusive. Other requirements are that the first extrusion length value has to 0 and the last compensation factor must be 1.
Using these value pairs a cubic spline interpolation is being done to determine the flow compensation factor for any given extrusion length. The flow model can be visualized using this website: https://tools.timodenk.com/cubic-spline-interpolation. The default flow model looks like this:
@mjonuschat Overall it looks good. Just a few comments to address. Can you take a look? Great stuff and thanks for your patience.
First test has yeildes very positive results👍
First test has yeildes very positive results👍
Awesome, happy to see it's working as well for you as it is for me. I'll take a look at the requested changes and implement them.
First test has yeildes very positive results👍
What values are you using? Just the defaults? Thinking of testing it too…
First test has yeildes very positive results👍
What values are you using? Just the defaults? Thinking of testing it too…
Yes, the default value. Do it! :) Very interesting ideas and the result is convincing.
@mjonuschat It looks good n. Thanks for your work! @Alexander-T-Moss Thank you for this innovative improvement!
Slicer crashes with Verbose G-code enabled next to the new feature.
Slicer crashes with
Verbose G-codeenabled next to the new feature.
I'll take a look and see what happens there, what OS are you using?
Tried the feature, it’s fantastic!!
@SoftFever you need to update the front page of the repo to include this, no other slicer has this built in and it’s a distinguishing feature!
@mjonuschat fantastic job porting this natively!
I'll take a look and see what happens there, what OS are you using?
Windows 10
I'll take a look and see what happens there, what OS are you using?
Windows 10
Fix in #3786
Tried the feature, it’s fantastic!!
@SoftFever you need to update the front page of the repo to include this, no other slicer has this built in and it’s a distinguishing feature!
@mjonuschat fantastic job porting this natively!
Agreed to all of the above. Really awesome work!
Going to test this feature. But please explain me. Isn't this happening due to incorrect (to much) top layer overlap into walls? I always thought this happens because of this. If we have to much material pushed into walls than in small area it is just to much because we are going from one wall to another in short distance.
But please explain me. Isn't this happening due to incorrect (to much) top layer overlap into walls?
I don't think I'm the right person to explain the mechanics / logic behind this in detail. You're probably better served asking this question on the repository of the original post-processing script linked in the first post: Small Area Flow Compensation
Tried the feature, it’s fantastic!!
@SoftFever you need to update the front page of the repo to include this, no other slicer has this built in and it’s a distinguishing feature!
@mjonuschat fantastic job porting this natively!
Will add a WIKI page and link as well as update the front page later :)
I tested this function. Working good with default settings. I think I see positive result on print quality.
Hi,
I installed the latest beta version of orcaslicer and when I press the slicer button a window pops up with the current error:
only the first exstrusion length for small area infil compesation model can be 0
The previous version was working fine with the current parameters. Some details: I am using MacOs Ventura Orcaslicer version: V2.0.0 I tried different projects and they all gave the same error. Can you tell me which parameters I have to tweak to make it work?
If this is the wrong place to ask, I will (re)move the comment, let me know.
Thank you again
Hi, I installed the latest beta version of orcaslicer and when I press the slicer button a window pops up with the current error:
only the first exstrusion length for small area infil compesation model can be 0The previous version was working fine with the current parameters. Some details: I am using MacOs Ventura Orcaslicer version: V2.0.0 I tried different projects and they all gave the same error. Can you tell me which parameters I have to tweak to make it work?
If this is the wrong place to ask, I will (re)move the comment, let me know.
Thank you again
I would assume that something is wonky with the default model for the flow compensation. I think I've had a similar message with some earlier version of the PR, I would try to copy the default values back into the text input for the model:
0,0
0.2,0.4444
0.4,0.6145
0.6,0.7059
0.8,0.7619
1.5,0.8571
2,0.8889
3,0.9231
5,0.9520
10,1
Same issue with me. Only if I delete the whole text It continues slicing, same MacOS Ventura.
Might be the locale issue.
Any chance you are using French OS and using , to instead . to denote the decimal point? @mcpea1477 @roby71571
small area flow compensation interfere with extrusion rate smoothing https://github.com/SoftFever/OrcaSlicer/issues/4634
The infill pattern creates small extrusions at the 90 degree mark of the large line segments where the nozzle changes direction. These are set to significantly less flow than the primary extrusion because of the small infill compensation feature. Hence the extrusion rate smoothing feature kicks in and reduces the flow before/after that segment.
Suggest you use monotonic lines as your solid infill of choice - it gives a better finish as these small extrusions can cause over extrusion and it also avoids this slowdown issue.
Did anyone find a compensation model yet that is usable for a .6 nozzle? The default values cause underextrusion for me. I already made some adjustments but it still doesn't seem ideal. Just wondering about other people's experience.
0,0; 0.2,0.8; 0.4,0.84; 0.6,0.89; 0.8,0.93; 1.5,0.96; 2,0.97; 3,0.98; 5,0.99; 10,1;
Thanks for all the efforts put into this feature!

