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

Disable small area flow compensation on first layer (Fixes #4617) #5838

Conversation

TheSlashEffect
Copy link
Contributor

@TheSlashEffect TheSlashEffect commented Jun 24, 2024

Description

Please keep in mind that the feature is not working atm, as reported in (#5780)

This PR disables small area infill flow compensation on the first layer.
There are 2 reasons for implementing this change:

  1. There has been an issue reported (Under extrusion on Hilbert curve first layer with small area flow compensation. #4617) causing underextrusion on the first layer when the feature is enabled
  2. I believe we should not be affecting the first layer in any way, especially by underextruding it. My reasoning is that:
    a. Users know what to expect on their first layer, and perform calibration as well as visual checks on it. Affecting it in any way can cause user confusion.
    b. By underextruding the first layer in any way we risk causing first layer adhesion issues, especially on small areas, where this feature will take into effect by design.

However, we should also hear what the community thinks here. This is a tiny change so can very easily be reverted.
In addition, if users require it we are free to re-design the feature, giving users the option to enable the feature for the first layer, or only for the top-most layer (for cosmetic reasons), etc.

Screenshots/Recordings/Graphs

Before the changes:
disableFirstLayerBefore

After the changes:
disableFirstLayerAfter

Tests

I have compared and printed the generated gcode before and after these changes. It is very clear that the feature is underextruding small areas on the first layer, and that can cause areas to not be filled properly sometimes, especially when we are talking about irregularly shaped regions.

@adolfotregosa
Copy link

I agree. First layer should be left alone !

@YanceyA
Copy link

YanceyA commented Jun 25, 2024

At best this should be an option for the feature. I prefer it on first layer and note that it allows me to use standard monotonic infill without over extrusion in the 180deg end sections.

@SoftFever
Copy link
Owner

Thanks.
It makes sense to me
Btw the small area flow comp regression bug is fixed in #5844

@TheSlashEffect
Copy link
Contributor Author

@SoftFever can you re-check? Thank you

Copy link
Owner

@SoftFever SoftFever left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good
Thank you

@SoftFever SoftFever merged commit 7707685 into SoftFever:main Jul 1, 2024
@vovodroid
Copy link
Contributor

vovodroid commented Jul 3, 2024

Actually I feel good with flow compensation on first layer. It seems to produce more smooth first layer for, let's say, rectilinear bottom:

image

Using Hilbert curve for bottom is corner case.
So I suggest add option with default ON.

@SoftFever , would you like me to add such option?

@evilDave
Copy link

evilDave commented Jul 3, 2024

I agree adding an option to turn this off, this setting seems to be a bit of a problem for me on thin areas only on the first layer where they are very much under extruded (but higher layers aren't and the rest of the print in general is properly extruded) particularly on thin area where the infill is going across the thin section, i.e. there are a lot of short lines that get flow adjusted

images hopefully will clarify what I mean:
Screenshot 2024-07-03 at 21 13 55
produces this first layer:
IMG_8959
where the first layer of a 20mm square looks like this:
IMG_8958
and the third layer of the ring is:
IMG_8961
(a little over extruded if anything)
first layer of the ring again, just small area flow compensation turned off:
IMG_8962
(white spots are reflected light not holes, again a little over extruded perhaps...)

the over extrusion of the first layer with the setting turned off might suggest that allowing a separate model for the first layer might be the way to go, though I'd be happy just being able to turn it off for the first layer (take a bit of over extrusion in the name of a good solid first layer) and leave it on for the rest.

@vovodroid
Copy link
Contributor

It seems to be rather Z-height calibration, or uneven bed.

vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Jul 3, 2024
@evilDave
Copy link

evilDave commented Jul 3, 2024

I know what it "looks like" but the only setting changed between the two rings is the flow compensation, and the square is from the exact same print as the bad ring. I don't think so.

I arrived at the point of thinking it might be the flow compensation after a lot of work trying to make the ring (the bottom of a larger part that I was trying to print) to not underextrude while the rest of the bed was fine, so the prints above are all slow, low acceleration, no linear advance (causing the slight over extrusion) and I kept a larger section along side to confirm the first layer was good elsewhere.

I think the default model which I have left for the rest is just too aggressive on the first layer under some circumstances... maybe it is highlighting slight place where you could ask for a flatter bed or better z offset but we are at the limit of adjusting that for this machine and what I would need is some way to adjust or turn off the model for the first layer.

@evilDave
Copy link

evilDave commented Jul 4, 2024

BTW I just wanted to add: I think your revert of the commit disabling this on first layer is correct, I'm not disputing that: I'm suggesting that this seems like it would be good to provide an option (switch or other model config) for people who find the compensation works mostly though not for the first layer.

@vovodroid
Copy link
Contributor

vovodroid commented Jul 4, 2024 via email

@evilDave
Copy link

evilDave commented Jul 4, 2024

Sure, here it is small area flow compensation issue.3mf.zip

It would not surprise me if it does print okay for you, regardless, i think it's a reasonable thing to be able to adjust or turn it off for the first layer specifically.

@vovodroid
Copy link
Contributor

vovodroid commented Jul 6, 2024

I see you use Line pattern on first layer. I don't think it's good idea, whether with or without flow compensation, as it prints a lot of independent lines instead of continuous ones, making adhesion more problematic.

Try rectilinear or monotonic with flow compensation:

image

I hope now you get good adhesion, and probably it's worth to consider reverting this PR.

@evilDave
Copy link

I have no adhesion problems, I actually switched to monotonic line from monotonic because I suspected the flow differences at each end point were making the issue worse, and I think it is a bit. I've now kept monotonic line as it seems to be better for a bowden setup: the small travels still get a bit of flow from oozing as there is no retraction and then the next line seems to continue better.

The images I provided show underextrusion, not lack of bed adhesion.

Still, reverting this PR is in my opinion the right the thing to do: the compensation should not be disabled. But again, I would like to see the ability to configure it separately for the first layer.

vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Jul 10, 2024
@vovodroid
Copy link
Contributor

Ok, I printed your rings with exact settings besides printer and filament (though actually it's 0.6 nozzle, but set as 0.4).

image

No underextrusion signs:

20240710_120102

Probably your Bowden in combination with Pressure Advance coefficient and 60mm speed causes problem in your case.

vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Jul 13, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Jul 20, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Jul 25, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Jul 27, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Jul 28, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Jul 29, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 2, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 6, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 6, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 7, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 11, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 12, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 17, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 18, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 22, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 25, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 27, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 28, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Aug 30, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 4, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 7, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 9, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 9, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 11, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 15, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 19, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 22, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 23, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 23, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Sep 25, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Oct 3, 2024
vovodroid added a commit to vovodroid/OrcaSlicer that referenced this pull request Oct 4, 2024
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.

6 participants