All Projects → workinghard → mmuGcodeParser

workinghard / mmuGcodeParser

Licence: GPL-3.0 License
Improves Slic3r gcode for better MMU handling and allows true Multi Material printing

Programming Languages

python
139335 projects - #7 most used programming language
OpenSCAD
209 projects
Batchfile
5799 projects

mmuGcodeParser

Improves Slic3r gcode for better MMU handling and allows true Multi Material printing.

If you're using Prusa MMU1/MMU2 and Slic3r 1.41 you will encounter an issue if the temperature differ between the used materials. Slic3r sets the new temperature between toolchanges only once after cooling and before unloading. This causing an issue in the transition from high temp filament to cold because it is being purged with cold temperature.

Changelog

  • v0.2 Set ram_temp_diff_wait_for_stabilize = True to drop the temperature even for same type of filament. Thanks @membrein
  • v0.1 Initial upload

Table of contents

Installation

The python script can be either placed in Slic3r for post processing under "Print Settings" -> "Output options" -> "Post-processing scripts". More details can be found in the official Slic3r manual

Or it can be called manually passing the gcode file as an argument.

Linux/Mac

Python version 3 is required. Make sure to adjust the path in first line to your installation: '''#!/usr/local/bin/python3'''

Windows

Extract the zip to any location and use it either in Slic3r or in the command line.

Usage

If you maintained the post processing script in Slic3r, you will get in the output folder two files. The original one and with _adjusted.gcode extension.

How it works

The logic behind this script is following:

  1. It looks for tool changes and determines the transition (high->low, low->high)
  2. It removes the existing temperature set
  3. Placing the new temperature based on following strategy:
 Cold (200C) ==> Hot (255C)
 ==========================
 -> Ram/cool
   -> Stay cool, do nothing. If needed, set lower temp but don't wait
 -> Unload filament
   -> Set hot. We can heating up while loading. Save some time
 -> Load filament
   -> Nozzle might still warming up. Load to nozzle for smooth loading process
 -> Purge
   -> Before start purging, wait for destination temp
 -> Print
   -> We are printing with the stabilized temp. No further intervention required

 Hot (255C) ==> Cold (200C)
 ==========================
 -> Ram/cool
   -> We need to stay hot because hot filament is still in the nozzle. If needed, set lower temp but don't wait
 -> Unload
   -> Stay hot, do nothing
 -> Load filament
   -> Stay hot, do nothing. Load to nozzle for smooth loading process
 -> Purge
   -> Before start purging, set cool temp. We can cool down during the purging process
 -> Print
   -> Before start to print, wait for destination temp. Most likely temp will bounce pretty hard

Testobject

I've created a small test object. It can be used to print different material.

Properties

  • Two windows with one wall thickness
  • Two windows with two wall thickness
  • Two vertical tubes
  • One horizontal tube
  • 100+ tool changes with 0.2 layer height

Roadmap

This is a first release and a proof of concept. I've printed the test object with PLA base and PETG windows and tubes successfully. I'm currently using it for any multi material prints as it helps as soon as you use filament with different temperature requirements. Once the process is refined, it will be implemented in Slic3r so no additional post processing is required.

For further discussions please use this official Prusa forum thread

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].