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.75k stars 1.93k forks source link

Retraction is still done in vase mode #10042

Open jsrobson10 opened 1 year ago

jsrobson10 commented 1 year ago

Description of the bug

It makes sense why there'd be retraction code at the starts and ends of a vase mode print, but when geometry is slightly more complex than a cylinder it'll generate retraction and unretraction steps mid print. These should not be here.

A workaround that I have found works is just setting retraction to 0 and disabling firmware retraction. This'll completely emit retractions/unretractions from the gcode.

Project file & How to reproduce

water_bottle.zip

screenshot showing location of gcode issue

  1. import an STL that is slightly more complex, eg a cylinder with extra bits, such as one like I've attached.
  2. enable spiral vase mode.
  3. have retraction length as a >0 number OR have firmware retraction enabled.
  4. slice and export.
  5. inspect the gode, searching for G10/G11/negative E moves where they should't be.

Checklist of files included above

Version of PrusaSlicer

2.5.0

Operating system

Arch Linux

Printer model

Creality Ender 3 v2 (Running Marlin 2.1.2)

jsrobson10 commented 1 year ago

also gonna add, whilst the workaround does definitely improve things, there is still layer change gcode left over which results in a slight pause in marlin since there's just completely unnecessary stuff there. it would be needed if the next "layer" was on a different print speed as the last, but since it's not, it's not needed. also that G92 E0 is completely unnecessary since relative extrusion is enabled. it just slows down execution leading to pauses.

jsrobson10 commented 1 year ago

i'm adding, this is also the case when:

in this case, the gcode is filled with things like this, which waste precious printer microcontroller clock cycles leading to extra seams from slight pauses

G1 Z231.300 X109.68 Y127.52 E.11431
;LAYER_CHANGE
;Z:231.6
;HEIGHT:0.300003
;BEFORE_LAYER_CHANGE
G92 E0
;231.6

G1 Z231.300 F7800
;AFTER_LAYER_CHANGE
;231.6
G1 F900
G1 Z231.304 X109.038 Y126.836 E.16998
sensaurabh commented 1 year ago

Seeing the same thing... Retractions on layer change in vase mode on a simple cylinder primitive. Setting the retractions to zero causes 'G1 E0 F0' instructions in the G-code stopping print.

schuetzi99 commented 1 year ago

I have the same problem with PrusaSlicer 2.6.0-RC2

imadcat commented 4 months ago

Has this problem been addressed?