slic3r / Slic3r

Open Source toolpath generator for 3D printers
https://slic3r.org/
GNU Affero General Public License v3.0
3.35k stars 1.29k forks source link

Low quality mode for staying on last printed island after layer change and saving travel moves #2292

Open microcontroller opened 10 years ago

microcontroller commented 10 years ago

This is similar to, but distinct from, issue #1108.

When I print an object with multiple towers, the order in which those towers are extruded is fixed, leading to unnecessary travel. On an object with 2 towers (such as http://www.thingiverse.com/download:762567) this adds hugely to the print time. The sequence for 2 layers on 2 towers, A and B, is as follows:

print layer on A
travel to B
print layer on B
increment Z
travel to A
print layer on A
travel to B
print layer on B
increment Z
travel to A

This has 4 long travel moves, which could be cut down to 2 by printing the next layer for the current location as soon as you increment Z, leading to:

print layer on A
travel to B
print layer on B
increment Z
print layer on B
travel to A
print layer on A
increment Z

With more towers the effect is still there, but less noticeable. Here's a picture from Pronterface showing two sets of travel moves between the towers on each layer: wheelie_rail_right

I'm using Slic3r 1.1.7 on Windows, can provide config if needed.

alranel commented 10 years ago

Well, this behavior is intentional and there is even some logic that explicitly ensures islands are printed in the same order for each layer instead of a possibly random one. Reapplying the same order to each layer produces better cooling. Staying on the last printed island will definitely minimize travel moves but will cause uneven cooling, and completely defeat the purpose and effectiveness of the Cooling logic (the time estimates would be completely useless).

I still see that a "low quality/no cooling" mode could be useful. So I'll rename this issue.

jonaskuehling commented 10 years ago

Does this cooling logic also apply to #2297 (tool change order on layer change)?

I see the difficulties with this logic, as it would require applying cooling/slowing down to e.g. only the support part of a layer when the support extruder stays the same on layer change to print the next support layer first on the new layer (in order to save on tool changes..). So, cooling logic would need to have some look ahead feature to estimate, when every single island will have the next layer printed on top - even for multi-extruder applications...