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

Port OrcaSlicer's Small Area Infill Flow Compensation #4329

Conversation

TheSlashEffect
Copy link

This PR ports OrcaSlicer's existing implementation of Small Area Infill Flow Compensation to SuperSlicer.

The implementation is mostly a 1-1 port of the existing work, with some minor refactoring. The original idea comes from @Alexander-T-Moss, while the OrcaSlicer implementation comes from @mjonuschat.

OrcaSlicer PR
Alexander's GitHub page for the feature

Example of working feature in OrcaSlicer, feature disabled for one model:
Screenshot from 2024-06-22 15-19-40

A note on git:
I had to commit some crimes to get around GitHub's 1 fork per repo per user limitation, because I also have PrusaSlicer/OrcaSlicer forks I am working on. If you do not like the "dirty" merge commit, you can either A) create a branch which I can apply the changes on and then create a PR from there or B) let me know to temporarily delete my other fork and create one here. Do let me know what works for you.

Thank you in advance to the reviewers, as well as the original authors of the feature.

Workaround GitHub's single fork limitation: Create "manual" fork of SuperSlicer in this fork repository
Ported from OrcaSlicer
Credits:
- OrcaSlicer port: @mjonuschat
- Original implementation: @Alexander-T-Moss
Reasoning: We do not want to affect the first layer's extrusion in any way, especially by underextruding it. Doing so might cause user confusion and/or adhesion issues.
@TheSlashEffect
Copy link
Author

I have decided to disable this feature for the first layer. Please see my reasoning here

@supermerill
Copy link
Owner

As I am working on a graph type, i'll integrate this directly onto it.

@supermerill
Copy link
Owner

some notes:

  • PrintObject::invalidate_state_by_config_options is only useful for settings that are on PrintObject or PrintRegion. For the other types (Print, Gcode), then it's in the Print::invalidate_state_by_config_options method.
  • I moved the options to printregion, and split the infill accordingly.
  • I removed the spline header, as i'm reusing the spline code from prusa's ramming.
  • I added a detector & importer to import orca's values.

supermerill pushed a commit that referenced this pull request Jun 26, 2024
* Use graph option type
* Disable small area flow compensation on first layer
  Reasoning: We do not want to affect the first layer's extrusion in any way, especially by underextruding it. Doing so might cause user confusion and/or adhesion issues.

inspired by OrcaSlicer
Credits:
- Graph adaptation: @supermerill
- OrcaSlicer port: @mjonuschat
- Original implementation: @Alexander-T-Moss

#4329
@supermerill
Copy link
Owner

merged in 2.5 dev branch

@TheSlashEffect
Copy link
Author

Nice! Thanks for the tips and review. Great work, chief

@TheSlashEffect
Copy link
Author

Btw really nice job on refactoring the original code as well as everything about the UI. Thanks for your all your work, the project is awesome

@supermerill
Copy link
Owner

I may alter it a bit, currently if the curve go below 0, it replaced the negative values by 1, but I guess it's better to replace them with 0, as it's the "intended" (not useful but correct) value. (can happen if a spline is not well done).

supermerill pushed a commit that referenced this pull request Jun 27, 2024
* Use graph option type
* Disable small area flow compensation on first layer
  Reasoning: We do not want to affect the first layer's extrusion in any way, especially by underextruding it. Doing so might cause user confusion and/or adhesion issues.

inspired by OrcaSlicer
Credits:
- Graph adaptation: @supermerill
- OrcaSlicer port: @mjonuschat
- Original implementation: @Alexander-T-Moss

#4329
supermerill pushed a commit that referenced this pull request Jun 27, 2024
* Use graph option type
* Disable small area flow compensation on first layer
  Reasoning: We do not want to affect the first layer's extrusion in any way, especially by underextruding it. Doing so might cause user confusion and/or adhesion issues.

inspired by OrcaSlicer
Credits:
- Graph adaptation: @supermerill
- OrcaSlicer port: @mjonuschat
- Original implementation: @Alexander-T-Moss

#4329
supermerill pushed a commit that referenced this pull request Jun 28, 2024
* Use graph option type
* Disable small area flow compensation on first layer
  Reasoning: We do not want to affect the first layer's extrusion in any way, especially by underextruding it. Doing so might cause user confusion and/or adhesion issues.

inspired by OrcaSlicer
Credits:
- Graph adaptation: @supermerill
- OrcaSlicer port: @mjonuschat
- Original implementation: @Alexander-T-Moss

#4329
@Tinchus2009
Copy link

I have a question about this because I tried it and did not get good results : the speed the slicer creates, many times will be different of what the firmware finally creates, is this being taken into account? how?

@supermerill
Copy link
Owner

@Tinchus2009
The slicer order the firmware to do stuff, but don't have any way to force it to do something it doesn't want.
What's the issue?

@Tinchus2009
Copy link

I would say based on the answer and my guess that is not an issue: I have tried the feature but having the same setting, the results vay a lot depending on the printing speed and in my particular case on the pressure advance value being used (reprap firmware)

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.

3 participants