Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Separate logic to complete each island from "avoid crossing perimeters" #1907
As discussed in issue #278, printing of perimeters and infill in this order:
is suboptimal and probably never a requirement, whereas
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.
+1 when using avoid crossing perimeters + only retrect when crossing perimeters the nozzle can crash when moving a long distance over infill and often the extruder oozes into the infill which leads to gaps when starting the next printer section after the travel move.
so finishing island after island withouth the need of using avoid crossing perimeters would be really nice!
Maybe decreasing CROSSING_PENALTY (https://github.com/alexrj/Slic3r/blob/master/lib/Slic3r/GCode/MotionPlanner.pm#L24) will work as expected. With low CROSSING_PENALTY planner will still try to avoid perimeters if good path is close and it will use right angle (aproximately) to cross them.
Any test file around?
referenced this issue
Apr 16, 2014
@ledvinap, not sure about your comment.. @kefir- is referring to https://github.com/alexrj/Slic3r/blob/6f3844c1ba87610a29356e91081811c35d815ddc/lib/Slic3r/GCode/Layer.pm#L149 whose behavior should be the default regardless of avoid_crossing_perimeters
added a commit
Apr 19, 2014
I found a case where this logic doesn't appear to work quite as expected. It may be related to thin infill logic or something like that. Here's some screenshots of a layer that does
Sure, here's a variant. I think the only difference from the first case was the use of brim, here there's no brim. And with this config the issue is still reproduced with current master fetched after your post about 30 minutes ago.
Are you adding the full config to the embedded comments, or should I create an issue for that? :)