prusa3d / PrusaSlicer

G-code generator for 3D printers (RepRap, Makerbot, Ultimaker etc.)
https://www.prusa3d.com/prusaslicer/
GNU Affero General Public License v3.0
7.79k stars 1.94k forks source link

<feature proposal> Ensure minimal travel in "free air" when "Avoid crossing perimeters" is active #5520

Open MB3Y opened 3 years ago

MB3Y commented 3 years ago

Version

2.3.0 - alpha3+win64

Operating system type + version

Win10

3D printer brand / version + firmware version (if known)

MK3S+MMU2S

Behavior

There are still long travels in "free air" when avoid crossing perimeters is active in case e.g. there is support to be printed / multi regions / ... These travels are now often lines from A to B (close to the direct path from A to B) avoiding correctly the perimeters, ... on the OUTSIDE of the object area. To the strict meaning of the terminology and name of the feature that is fine. When interpreting that to the intention behind the feature it is less obivous/acceptable. The intention of the avoid perimeters crossing I see as "avoid both oozing, stringing as well as visisble artefacts on the print perimeters that are caused by a nozzle that moved outside the parts boundaries/perimeters." This is in line with the tooltip/helptext when hoovering over the current tickbox for this feature.

Evidently the risk in implementing such feature is to end up with a potentially extra long travel move (e.g. assume one has to jump to the circumference of a spiralling snake from the center of that snake...) I recon a slave parameter retricting the max travel distance or time is either already present or could be added?

MB3Y commented 3 years ago

Sorry about the spiral example reference ... only now reading the release notes, where you also indicate tons of adjustments on exactly this feature and a spiral example... no offense! The feature DOES behave much better than before already... PS: the release notes mention even a parameter "max detour length", but I don't find that accessible in the GUI?

ntmaster26 commented 3 years ago

Unsubscribe

Sent from my iPhone

On Dec 19, 2020, at 2:29 PM, Mikael Vanherpe notifications@github.com wrote:

 Sorry about the spiral example reference ... only now reading the release notes, where you also indicate tons of adjustments on exactly this feature and a spiral example... no offense! The feature DOES behave much better than before already... PS: the release notes mention even a parameter "max detour length", but I don't find that accessible in the GUI?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

lukasmatena commented 3 years ago

the release notes mention even a parameter "max detour length", but I don't find that accessible in the GUI?

The Avoid crossing perimeters was completely rewritten in 2.3.0-beta3, you seem to be testing 2.3.0-alpha3, which most likely makes your feature request obsolete. The most recent version to test at this point is 2.3.0-rc1.

We will gladly hear your opinion about the new implementation.

MB3Y commented 3 years ago

The resulting behavior in rc1 is basically the same. The jumps from the objects infill to the support outside the object happens directly, without optimization of travel path within the object first. In the below example the travel even crosses multiple times such boundary. image

I also made this quick test object - that has 3 towers on a common base - so crossing perimeters is mandatory. This ticket proposes to optimize the travel paths in "free air" such that they either represent the shortest distance or the shortest distance reducing surface artefacts (what I presume is jumping to corners if possible) Below picture demonstrates the possibilities, 1. being the simplest (in description), 2. tries to add optimization of surface artefacts and 3. considers "free to air" time too image