github prusa3d/PrusaSlicer version_2.4.1-beta1
PrusaSlicer 2.4.1-beta1

2 years ago

PrusaSlicer PrusaSlicer 2.4.1-beta1


This is a beta version of PrusaSlicer 2.4.1, a first patch release of PrusaSlicer 2.4.0. This patch release adds several small improvements and 3rd party profiles, fixes some bugs found in the 2.4.0 final and typos found in translations.

This release saves its configuration into dedicated beta configuration folder to avoid breaking production profiles. PrusaSlicer 2.4.1-beta1 will offer to copy configuration from PrusaSlicer 2.4.0 or any older release into the beta configuration folder on first invocation.

Improvements with respect to 2.4.0

G-Code substitutions

PrusaSlicer supports processing of the generated G-code with an external post-processor for a long time. Launching an external post-processor is versatile, however it is complex to setup, the post-processing scripts must be distributed with the project and the interpreter running the post-processing script (for example Python) has to be available. We collected many real world use-cases for the post-processing scripts and concluded that many of them could be covered by a simple "Find and Replace" tool with regular expression matching and substitutions.

To make life easier for everyone who only needs basic post-processing, we now integrated such a tool directly into PrusaSlicer. It is accessible from Print Settings -> Output options and allows to add a number of find and replace pairs, with optional regex matching, case sensitivity and whole word matching, similar to what common text editors offer. The G-Code is processed before it is previewed, so your changes will be visible in the G-Code preview.


We hope this tool will make common post-processing tasks simpler, such as adding custom annotations, adjustments of output format such as in #6996), ringing cancellation, adjustments of per feature extrusion rate and similar.

Regular expression syntax of Perl is supported as described in boost Perl regular expression syntax, where a "single line" modifier mimics the Perl's s/ modifier. With regular expressions active, the "Replace with" pattern supports the "extended" syntax as described in boost extended format syntax. Lookahead and lookbehind are supported by the regular expression engine, but only for fixed length patterns. With regular expression disabled, \n, \r, \t, \0 and \\ placeholders are supported in both "Find" and "Replace with" patterns similarly to Notepad++'s "extended" syntax.

The G-code find/replace post-processor processes G-code in blocks, where a single G-code block is generated for each layer starting with the Z up to move to the next layer. Multiple find/replace patterns are applied one by one to one G-code block before processing the next G-code block. Matching multi-line patterns is possible, however only inside one G-code block, most likely inside a single layer. Regular expressions are powerful but tricky, thus we recommend the regular expressions 101 online playground to get familiar with regular expressions and to test and fine tune the regular expressions modifying G-code before entering them into PrusaSlicer. Don't forget to switch the regex flavor to ECMAScript in the regular expressions 101 online playground.

An example of a quite powerful G-code modification by a reasonably complex regular expression: Increase the extrusion rate of top solid infill from the default 95 percent to 98 percent.
Find: (;TYPE:Top solid infill\n)(.*?)(;TYPE:|$)(?!Top solid infill)
Replace with: ${1}M221 S98\n${2}M221 S95\n${3}
Modifiers: regexp, single line

Other improvements

  • Seam placement was improved. In 2.4.0, seams on internal perimeters were placed close to external seams to reduce long travels between seams, with additional staggering of internal seams wrt. to the external seams, so that they do not overlap. This sometimes produced an internal seam on a straight perimeter segment, even thought there was a convenient corner nearby, producing a visible bulge on the outer surface. The internal seams are now placed close to the external seam, but not at all costs. The staggering is now disabled as it often produced unnecessary jerking of the printer. Also, there was a bug in the seam placement algorithm, which again caused excessive travels in some cases #7690 #7686 #7784.
  • In Spiral Vase mode, the G-code viewer used to assign a layer to each G-code segment of a spiral producing an excessive number of layers thus making G-code inspection difficult. The G-code viewer newly assigns a layer to a single spiral turn #4440.
  • A new option "Ask for unsaved changes in project" was added into Preferences to control whether the user shall be asked to save a project on closing an application or when loading a different project. The existing three options "Ask for unsaved changes when..." always referred to the changes in presets, thus they are now reworded to make it clear #7114.
  • Machine limits table in Printer Settings is now available for RepRapFirmware, while until now it was only enabled for Marlin #7347 thanks @n8bot.
  • Implemented new placeholders for output file name:
    1. initial_filament_type and printing_filament_types (useful for multi-material prints) #5300, #7684, #7673
    2. initial_tool and initial_extruder - zero based index of first extruder
    3. num_printing_extruders - number of printing extruders.
  • New option "Restore window position on start" was added to Preferences. We have received reports of rare crashes on application start-up when trying to restore application main window position on some multi-display setups. While we were not able to fix the crash, we newly detect a crash during the window position restore and we suggest to disable the window restore option on the next application startup as a workaround #2939, #5573.
  • Windows specific: The build_win.bat script newly supports a low CPU priority compilation option #7828 thanks @Jebtrix.
  • FDM printer firmware usually keeps an absolute extruder axis position using a single precision float representation, which leads to a loss of accuracy if the extruder axis is not resetted regularly. In extruder absolute mode 'G92 E0 is issued at each retraction by PrusaSlicer, while in extruder relative mode it is newly enforced, that either layer_gcode or before_layer_gcode contains 'G92 E0'. On the other side, in extruder absolute mode, 'G92 E0' in layer change custom G-code breaks slicer's assumption leading to horrible over-extrusions, thus 'G92 E0' is newly tested for and prohibited with extruder absolute addressing #6336 #5073.

Bugs fixed

  • Windows specific: Fixed crash on some machines at the very start of the application. The bug was introduced to PrusaSlicer 2.4.0-beta1 with the dark mode support #7560 #7574 #7613.
  • Windows specific: Dark mode is now enabled for all the new Windows builds. Let's hope that Microsoft will maintain the undocumented API that PrusaSlicer and other applications rely upon #7546.
  • Fixed a rare crash in Configuration Wizard under certain conditions, mainly on OSX #7655.
  • 'Place on face' function was very slow when used on some complex models #7587.
  • When 'Reload from disk' attempts to load an invalid file, an error message is newly shown, while previously the error was silently ignored #7550.
  • 'Export to STL' did not work for individual parts and modifiers, the option was grayed out. This was a regression wrt. PrusaSlicer 2.3.3 #7647.
  • Windows specific: Button in focus and the default button was not highlighted. The issue was introduced with the dark mode support in PrusaSlicer 2.4.0-beta1. Because of missing Win32 dark mode support for buttons, we had to resort to flat rendering of buttons. However with flat rendering, Win32 buttons do not support highlight of a default or active button and we had to implement a workaround ourselves #7564.
  • Cancelling "Fix by NetFabb" might have left a temp file opened. This is now fixed #7632.
  • Windows specific: Fixed color of the text in Firmware updater window when firmware flashing is done.
  • Fixed crash during slicing when a negative volume was used on painted areas of a multi-material model #7618.
  • Fixed mangled text in "did you know" notifications when breaking a long line at a non-ASCII character #7611, thanks @odaki.
  • Fixed crash on closing the application on OSX Sierra and older #7583.
  • SLA pad model was sometimes not generated correctly, which was visible during preview visualization.
  • Removed empty G1 command which appeared before bridging perimeters were printed #7714
  • Fixed some text encoding issues in Print host queue dialog.
  • The "Unsaved Changes dialog" used to inform that some of the differing keys are too long to be displayed fully and that one may open a pop-up window to show the full content of the differing keys. This was broken in 2.4.0 and it works again now #7734.
  • Avoid crossing perimeters was improved in PrusaSlicer 2.4.0 to not move along the outermost perimeters. This feature did not work reliably for thin islands, which should be now improved #7699.
  • The Yes/No/OK/Cancel buttons on various dialogs were displayed using the system language and not translated to the language set in PrusaSlicer. This is now fixed by providing dictionaries for these buttons #7542.
  • Fixed possible crash during print host upload, likely related to #7681.
  • The G-Code Preview parser did not skip whitespaces between axis letter and number, so e.g. G1 X 10 would not be correctly displayed in Preview. This was a bug introduced in PrusaSlicer 2.4.0 due to G-code export speed-up #7773.
  • Some excessively wide message boxes were sometimes shown for example when showing a very long file path. The texts in message boxes are newly wrapped to keep the width of these message boxes reasonable.
  • When printing with a single extruder only with a multi-material printer profile active while the printing extruder was not the default one, the G-code viewer did incorrectly considered the printer to not support multi-material printing, thus the cog icon below the vertical slider did not offer the 'Set extruder sequence' option. This is now fixed.
  • When the type of an object part was changed from a printable part to a modifier, the part should be rendered transparent, but the transparency was not updated immediately.
  • Cut tool sometimes showed the cut contours incorrectly after object parts were added and removed.
  • Fixed crash when editing thumbnails in Printer settings #7781.
  • Fixed an incorrect invalidation of PrusaSlicer configuration in case old PrusaSlicer is started, which reports that it does not support the current configuration thus it proposes to downgrade configuration to a version it understands. In case the user refuses to downgrade, the configuration was incorrectly marked as downgraded #7780.
  • OSX specific: "Did you know hints" referencing Cmd-F hot key will now show Cmd-F, not Ctrl-F #7820.


  • Added Catalan localization #7566 thanks @davidjuanesb.
  • Updated CZ, PL, IT, ES, DE, FR translations (including previously not translated phrases and typo fixes)
  • Added Hungarian localization #5479 thanks @zomatt.


Don't miss a new PrusaSlicer release

NewReleases is sending notifications on new releases.