Separate logic to complete each island from "avoid crossing perimeters" #1907
Description
As discussed in issue #278, printing of perimeters and infill in this order:
perimeter->next island->perimeter->first island->infill->next island->infill
is suboptimal and probably never a requirement, whereas
perimeter->infill->next island->perimeter->infill
would be a better approach. I don't see any use cases where the first approach is superior.
The option "avoid crossing perimeters" was introduced, and when this option is enabled, the optimal ordering happens. But this option does more than that, and can also introduce other issues in some cases, like potentially much longer moves that can result in ooze.
Since "avoid crossing perimeters" seems unlikely to become slic3r's default behaviour without an option to disable it, I'd like to suggest that slic3r should always complete an island before moving to the next one, even when this option is disabled. For me the option is currently a workaround that solves one issue but sometimes introduces other ones. Solving this ordering appears to be a generic fix to optimizing moves and print ordering anyway.