github prusa3d/PrusaSlicer version_2.9.1-alpha1
PrusaSlicer 2.9.1-alpha1

pre-release2 days ago

PrusaSlicer

Summary

This is the first alpha release of PrusaSlicer 2.9.1. This release introduces new algorithm to detect collisions during sequential printing, multi-material interlocking, and many bugfixes - mostly of older bugs.

To let you enjoy the alpha without worries, the alpha builds save their profiles into PrusaSlicer-alpha directory, so you may use the alpha side by side with the current release without ruining your production configuration.

Arrange for sequential printing

We are introducing a completely new algorithm to detect collisions during sequential printing. But not only that by far. We have actually made a new arrange algorithm that automatically positions and orders objects in such a way that collisions are avoided. Using sequential printing thus becomes safer and very easy to setup.

Just to give some context, PrusaSlicer allows sequential printing of objects (Print Settings -> Output options -> Complete individual objects) for very long time. This approach has both pros (less travels and stringing, smaller cost of a print fail) and cons (possibly longer print time because of cooling-related slowdown). However, printing objects sequentially also means that the print head has to travel downward after an object is finished, which opens a possibility of a collision with another object printed previously.

Until now, it was up to the user to decide whether current positioning and ordering of objects will lead to such a collision or not. While PrusaSlicer had a very crude check for collisions and while it showed outline of the extruder clearance area in the scene, it was quite misleading and giving extreme amount of false positive detections, rendering it hardly usable.

These times are now gone:

In addition, 3D model of the extruder is rendered when browsing through the Preview using the horizontal slider (as seen above). This is to help the user asses the situation. When a collision is detected, an error message is shown informing the user about which object was crashed into. The error does not block export of the G-code.

As of now, the feature is only provided for Prusa printers (except MK2 and HT90, the latter of which will be added before 2.9.1 final), because it requires detailed information about the extruder geometry. Printers by other manufacturers may be added later, if we are provided with the necessary data by the community. The exact format of the data may still change at this point (in general they are reasonably simple sets of extruder slices in heights where they change significantly plus the model for visualization). Testing and collecting feedback on the function as a whole is a priority at this point.

When PrusaSlicer does not have this extra information, it falls back to a very simple generic model based on extruder_clearance_radius and extruder_clearance_height config options. These options are in slicer for years and were used for the crude sequential printing check, we decided to keep them for this single purpose. The values were moved from Print Settings to Printer Settings, as they describe the physical geometry of the printer. The "fallback" model used for the algorithm is seen on the picture below, printing MK4 parts on an Ender:

arrange_generic

Note that the horizontal slider has two modes - it can either browse through the whole print, or just the top layer. For assessing sequential printability, the first mode is probably more useful. The switch was in Preferences, but we have now also duplicated in it the slider settings menu in the bottom right corner, so it is readily accessible:

horizontal_slide

The algorithm heavily relies on z3 solver. Thanks to Microsoft for developing the library and releasing its source code publicly.

Related to #1052, #1095, #1662, #6474, #7787, #8948, #10216, #10709, #11834, #12592, #12815 and possibly others.

Multi-material interlocking #11588

Printing with multiple materials is often challenging regarding proper connection between adjacent parts. Especially some materials do not bind well together, meaning that the boundaries form weak spots in the resulting print. The same problem (to a lesser degree) affects prints with multiple extruders of the same material. To alleviate these issues, PrusaSlicer now has an option of interlocking the neighboring parts together:

interlocking

The option can be turned on in Print Settings -> Multiple Extruders -> Advanced, where one also finds a couple of related parameters.

The feature was originally developed in Ultimaker Cura and it was later ported into OrcaSlicer. The implementation in PrusaSlicer was ported from there, with only minor modifications. We would like to express our gratitude to everyone involved in the development of this feature.

Configuration options to simplify printing with different materials

While PrusaSlicer in fact supports many scenarios in multitool/multimaterial printing, it was never very user friendly to set everything up in the user interface. In 2.9.0-beta1, we introduces an additional config option to help setup printing with multiple nozzle diameters. In this release, we are adding a similar tool to help with bed temperatures. The bed temperature is defined in Filament Settings, and it is not intuitive to see what happens if two filaments with different bed temperature in the config are used.

There is a new option in Print Settings -> Multiple Extruders -> Extruders -> Bed temperature by extruder, which specifies the extruder to take bed temperature from. Setting it to zero (which is the default) uses the simple logic that the first layer temperature is always taken from the first printing extruder, and the same applies to the second layer (which has a separate temperature settings).

A slicing warning informing the user about using differing bed temperatures now contains a hint to use this new parameter.

Other improvements with respect to 2.9.0

  • Added a new configuration parameter for speed for printing solid infill above bridges (Print Settings -> Speed -> Over bridges) so it is possible to slow this difficult-to-print infill without slowing down the entire print.
  • Add a new configuration parameter for speed of solid infill on the first layer (Print Settings -> Speed -> First layer solid infill speed).
  • When sending multiple beds at once into Connect, the upload file dialog no longer allows to select a filename. Only the "bulk" naming dialog is shown after a printer is selected. This means that individual filename defaults retain correct print statistics (estimated times etc), instead of being overwritten by the filename for the first bed. #14078
  • There are three buttons in SLA Material Settings - Material printing profile which set the values of all the tilt-related fields to predefined values corresponding to the legacy Fast, Slow and High viscosity profiles.

Bugs fixed with respect to 2.9.0

  • Fixed incorrect visualization of travels in Preview when custom z-offset was used.
  • Fixed uncommanded move to a random location in rare cases (caused by an uninitialized variable), possibly leading into digging the nozzle into the bed. #13826, #14079
  • Fixed incorrect size of exported thumbnails when slicing using CLI (since 2.9.0, the thumbnail from the 3MF propagates to the G-code).
  • Fixed rendering of bed numbers in Preview so they never render on the toolpaths. Also, the bed numbers newly show when viewed from under the bed. #13814
  • Make wipe tower position and rotation accessible in placeholder parser again. #13684
  • Fixed update of "state icons" in the Preview thumbnails when using Object Manipulation panel.

Bugs fixed with respect to 2.8.1

  • When object and support layers end up too close to each other in a print with a wipe tower, the wipe tower layer was extremely thin and therefore very large. This is now fixed by merging such layer.
  • Fixed invalidation problem resulting in missing infill when "wipe into this object's infill" was used. #13779
  • Fixed incorrect fan speed until the first toolchange in multimaterial prints when "Prime all printing extruders" was enabled. First primed tool speed was used instead of the first printing extruder. #13721
  • Measure tool was incorrectly disabled when any object was sunk under the bed.
  • Fixed processing of meshes with cavities in SLA slicing. #13786
  • Fixed gaps in the wipe tower in the first layer, appearing in specific cases.
  • Fixed two independent cases when slicer incorrectly reported a cryptic error message referencing negative spacing. One was in Arachne perimeter generator (#13429), the other in multimaterial segmentation (#13836).
  • Fixed undefined behaviour leading to crashes when extra assertion level was enabled during compilation (and possibly in other cases). #13859
  • Fixed extrusion collision detection between a single object and wipe tower. #13444
  • Fixed incorrect "slicing status" icon in the Preview when manipulating with different beds.
  • "Wipe while retracting" was not working correctly in cases the extrusion was a single line instead of a loop. A "wipe" in a random direction was performed instead. #13753
  • Fixed a crash when using automatic support painting on an object located on inactive bed. The respective bed is now activated first. #13952
  • Fixed invalid scarf seam direction leading to whole perimeter scarfs and print artifacts. #13923
  • Improved random seam painting accuracy. #13410
  • Fixed rear seam not at the rearmost point. #13870
  • Fixed seam generation issue where a seam could sometimes be place on an overhang.
  • Improved scarf seams by making sure it never starts on an overhang if it is possible. #13912
  • The wipe tower was not included in the print area passed to the printer in specific cases. This led to issues especially on the XL which uses the information for MBL and heating the bedlets. #13983
  • First wipe tower layer was not printed correctly when custom z-offset was applied.
  • When "retract on layer change" was disabled and the layer change was followed by a travel requiring retraction, such retraction was performed after raising z, not before. This is now fixed.
  • When slicing using CLI, all objects partially or fully outside the first bed are now ignored instead of generating extrusions outside the printable area.
  • Fixed z travel speed limiting and G-code export truncation inconsistencies. Improved robustness of travel G-code generation. We thank @jalapenopuzzle (PR #14060) for these changes. #13420
  • macOS specific: Fixed a crash on quitting when Printables tab is active.
  • Fixed couple of issues in multi-material segmentation algorithm. This fixes occasional irregularities in how the painting is applied, such as ones from #13887 or #10238.
  • Fixed a crash during G-code generation, related to "Wipe into this object/infill" feature. #13930
  • Windows specific: Fixed unexpected re-login without entering user credentials to Prusa Account after the user logged out. The token was not cleared on logout in all cases.
  • Fixed printing order of open perimeters with Arachne perimeter generator, which led to excessive travel moves. #11658
  • Fixed a rare crash when downloading avatar icon from PrusaAccount.
  • There were multiple issues related to frequent logouts from Prusa Account. Most of them should now be fixed. Probably the most frequent issue was related to having multiple instances of PrusaSlicer running (in simple terms, one instance might logout another). The login status is now shared across instances in the sense that whatever the user does in any of the instances happens in all of them. #13944, #13883, #13939
  • In some cases, Connect tab in PrusaSlicer would become all white and unable to recover without restarting the application. This should now be fixed, although several different things can cause this. #14138 #14028 #14016
  • Fixed a crash when inserting a removable drive with corrupted filesystem.

Linux build is now distributed through Flathub. Please see the respective page on our Prusa Knowledge Base for instructions.

Don't miss a new PrusaSlicer release

NewReleases is sending notifications on new releases.