supermerill / SuperSlicer

G-code generator for 3D printers (Prusa, Voron, Creality, etc.)
4.04k stars 515 forks source link

Port OrcaSlicer's Small Area Infill Flow Compensation #4329

Closed TheSlashEffect closed 2 days ago

TheSlashEffect commented 6 days ago

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.

TheSlashEffect commented 4 days ago

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

supermerill commented 2 days ago

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

supermerill commented 2 days ago

some notes:

supermerill commented 2 days ago

merged in 2.5 dev branch

TheSlashEffect commented 2 days ago

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

TheSlashEffect commented 2 days ago

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 commented 2 days ago

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).