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.39k stars 1.87k forks source link

multi filament is very wrong.. many bugs! yuk. #12636

Open petaflot opened 3 weeks ago

petaflot commented 3 weeks ago

Description of the bug

something more consistent.... I am using multiple filaments with manual change.

gcode contains custom end gcode for all configured filaments, not just the one in use (in my case, they all have the same end gcode)

[...]
G1 X-77.172 Y82.187 E25.05962
G10 ; retract
G92 E0
M107
;TYPE:Custom
; Filament-specific end gcode
M104 S90
M140 S0 ; disable bed heating
;END gcode for filament
; Filament-specific end gcode
M104 S90
M140 S0 ; disable bed heating
;END gcode for filament
; Filament-specific end gcode
M104 S90
M140 S50 ; disable bed heating
;END gcode for filament
; Filament-specific end gcode
M104 S90
M140 S50 ; disable bed heating
;END gcode for filament
; Filament-specific end gcode
M104 S90
M140 S50 ; disable bed heating
;END gcode for filament
; Filament-specific end gcode
M104 S90
M140 S50 ; disable bed heating
;END gcode for filament
; Filament-specific end gcode
M104 S90
M140 S50 ; disable bed heating
;END gcode for filament
; Filament-specific end gcode
M104 S90
M140 S50 ; disable bed heating
;END gcode for filament
M77     ; stop print timer
M104 S80
M140 S00
G0 X0 Y150 ; move build surface up front
M84     ; disable motors
[...]

editing a filament's properties (ie temperatures) will mess up the selection on the right panel (above slice now button)

temperature for first layer is wrong

more often than not, the temperature of the first layer is that of another filament. I have reproduced it a few times, too many issues there, I will not bother to figure out all the ways to get it to fail and all the ways to get it to work

Project file & How to reproduce

right now the best thing I've found was to read the gcode and fix it if required. a real pain.

FIY, I have filament-specific start end end gcodes ; at the moment they all use the same values because I haven't tuned my filaments (values from the first filament I tried, printer is working since very recently, still in the test phase)

start

; PLA-specific gcode
M104 S{first_layer_temperature[0]}
M204 P2500 R500 ; acceleration for print move and extruder retract/recover moves
M205 E2         ; extruder max jerk (units/s)
M207 S1.05 F100   ; set retract options
M208 S-.05 F120 ; set recover options
M900 K.22       ; set k-factor
G0 X0 Y-150 Z70 F5000
G1 E20 F100
M109 S{first_layer_temperature[0]}
G0 F3000

end

; Filament-specific end gcode
M104 S90
M140 S0 ; disable bed heating
;END gcode for filament

Conclusion

I hate being the barer of bad news, but this entire section of the code for multi-filament and multi-extruder seems so poorly written it needs to be audited and re-written if required.

Checklist of files included above

Version of PrusaSlicer

Version: 2.7.1 Build: PrusaSlicer-2.7.1+Gentoo

Operating system

gentoo

Printer model

custom build

petaflot commented 3 weeks ago

like I really have to add some files so you can see the huge mess it is ; by the way first layer temperature for black filament is set at 198°C

Sans titre1 Sans titre2 boite_poincons.gcode.zip

petaflot commented 3 weeks ago

also end gcode is not where it should be : just after the filament is not used anymore (or every time the filament is changed, after that filament).

also.. kind of a side note, there is no custom gcode for "resume after pause"