PrusaSlicer 2.3.0-alpha1
PrusaSlicer 2.3.0-alpha1
Summary
This is the first alpha release of PrusaSlicer 2.3.0, introducing paint-on custom FDM supports and seams, ironing of the top layers, monotonic and adaptive cubic and cubic support infills, per-extrusion g-code preview & standalone G-code Viewer, neat notification center in the 3D scene, imperial units support, SLA supports improvements, collapsible side bar, floating presets dialog and fuzzy search in parameters, physical printer settings, nine new 3rd party printer profiles and many more new features, improvements and bugfixes.
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.
Complete description of improvements and changes with respect to the current PrusaSlicer 2.2.0 release follows.
FDM custom supports by painting
For quite a long time already, PrusaSlicer provides support enforcers and blockers so the user has control over support generation. While this method works, it is not a pleasure to work with and manipulating the blocks where the user wants them is quite tedious.
This release brings a tool to simply paint the areas where supports should be enforced or blocked, directly on the object. The tool is available from the left toolbar and is only shown in Advanced and Expert modes. After selecting an object and clicking the toolbar icon, all other objects are hidden so they do not obscure the view, the selected object is rendered in light gray to ensure contrast and the painting tool is activated.
Left mouse button enforces supports, right button blocks them. The selection can be erased by Shift + mouse click. The size of the painting tool can be adjusted, as well as a cursor type: circular cursor paints all visible places inside the circle, possibly leaving unpainted areas in shaded areas, but never painting behind corners. Spherical cursor paints everything inside the sphere regardless of whether it is visible or not. You can also use the clipping plane tool to hide a part of the object, so that difficult to reach areas can be easily painted. The Autoset by angle button allows to select all triangles that are "more horizontal" than a threshold. This can be used as a default for further manual editing to ensure that no overhangs are left unsupported. The overhang triangles are visualized in real-time while the threshold is being adjusted.
Do not forget to enable supports if you want to actually generate them. The painted areas are equivalent to the old support enforcer/blockers, so their behavior depends on Auto-generated supports checkbox status in Print Settings (it can also be adjusted in the main window sidebar, highlighted in the picture above). When left unchecked, supports will be generated for support enforcers only:
If Auto-generated supports checkbox is checked, supports will be generated automatically, just not inside support blockers. This can be used to remove supports that are not necessary:
IMPORTANT NOTE: Your selection will not be completely obeyed when the painted region is small. The support generator itself works on a grid internally, the supported/unsupported areas cannot be infinitely detailed.
FDM seam placement by painting #946 #2527 #342 #728
Seams are inherent to FDM printing and they can negatively affect visual appearance of the model. PrusaSlicer always provided limited possibility to customize the seam placement in Print Settings to optimize for short travel moves, to keep the seams aligned on between successive layers, to randomize seam position along the contour, or to place it to the back of the model. The last option allows rudimentary manual control of seam placement by rotating the model on the build plate. In addition, PrusaSlicer always tried to hide the seams into share concave or convex corners and seam was never placed on an overhang.
This release introduces a new manual seam placement tool to provide more detailed control over the seam placement. The tool is accessible from the left toolbar and it is only shown in Advanced and Expert modes. After clicking on the icon, the user can paint 'Seam enforcers' or 'Seam blockers' on the model in a similar to how the new custom supports are painted.
The seam logic is the same as it was in previous releases, except that if there is a seam enforcer, it always places seams into the enforcer area. If there is a blocker, its area is excluded from possible seam candidates. The Nearest, Rear and Random options are still respected. When the Aligned option is active and enforcers are used, the seam is placed in the middle of the enforcer area. This allows to draw smooth seams over the model.
Two long-standing problems related to seam placement were fixed along the way:
- Seam set to Random did not produce really random positioning in some cases #2162 (comment), inspired by #2222 thanks @DrLex0 #1409.
- Aligned seam should now be aligned even if an object slice consists of more than one island. The seam will newly be aligned on all the islands independently.
Ironing over top surfaces, Monotonic infill
The Ironing idea was first proposed by the user "Neotko" on the Ultimaker community forum. Neotko prototyped "Neosanding" - a smoothing of top surfaces in Simplify3D by running a second infill phase at the same print height with zero or a tiny extrusion rate perpendicularly to the first infill run. The "Neosanding" was later integrated by Ultimaker into their Cura slicer. Kisslicer integrated Ironing with a small twist: The second phase is not perpendicular to the first phase, but at 45 degrees, which Johnathan, the author of Kisslicer validated to produce better results. With this release, PrusaSlicer implements Neotko's "Neosanding" at 45 degrees as in Kisslicer.
Ironing is very sensitive to accurate extruder calibration. Too little and shiny groves will be visible at the top layer, that will not be sanded. Too much and the excess plastic will be dragged by the nozzle to the edges of the top surface. One may experiment with the ironing flow, speed and spacing to achieve the best results. Ironing may also increase the print times significantly, as the second phase of top infills is usually performed with very narrow line spacing.
To improve the top surface quality without sacrificing the print time, we have developed a novel "monotonic" infill. The "monotonic" infill is the good old rectilinear infill with modified path planning: The infill lines are extruded left to right monotonically, a line is never extruded to the left of an already extruded infill line. This strikingly simple strategy leads to a homogenous texture without ridges, which are often created when the left-to-right extrusions meet with right-to-left extrusions in the center of an infill area, while printing left to right only leads to a homogenous shine. The seemingly simple left-to-right strategy is surprisingly difficult to implement optimally. We have implemented a variant of the Ant Colony System as described by Raad Salman.
Adaptive Cubic / Adaptive Support Cubic infill
The Adaptive Cubic infil was proposed by @mboerwinkle, see the discussion, and implemented for Cura by @mboerwinkle as well. The Adaptive Cubic infill works by refining those cells of an octree, that contain any object triangle. We have picked up on the idea with a handful of improvements:
- We have added an "Adaptive Support Cubic infill" variant, which densifies the infill below roofs, while the original Adaptive Cubic infill densifies close to any surface.
- We have added anchors to each infill line. This makes the infill sturdier and it was required by PETG to stabilize the extrusion flow at the start of an infill line. Anchors are not available yet in this alpha.
- Our implementation produces a bit less dense infill than the implementation by @mboerwinkle, as we only refine those Octree cells that contain an object surface triangle, while the original implementation tested for a bounding sphere.
We expect the Adaptive Cubic infill and the Adaptive Support Cubic infills to be useful for large prints with a large volume. For example, the Adaptive Support Cubic infill decreased the print time of the famous treefrog by MorenaP scaled to a full print bed of the Prusa i3 MK2 printer by -30% compared to a cubic infill of the same density, while 44% of material was saved.
Stand-alone G-code viewer, print simulation in time #3997
PrusaSlicer offered a rich G-code viewer since Slic3r PE 1.42, however with two limitations: It was not possible to load an external G-code and print simulation in time was not possible. With this release, we are removing both these limitations and we are adding some more features.
First, we are newly providing a stand-alone G-code viewer. One can start as many G-code viewers as he wishes either by opening a G-code from the "File->G-code preview" menu, by starting the G-code viewer application, or by double clicking on a G-code file in Windows File Explorer or OSX Finder. From the technical point of view, the stand-alone G-code viewer is a PrusaSlicer in disguise. The stand-alone G-code viewer is started as a new PrusaSlicer process. The way how the G-code viewer process is started is platform specific:
- On Windows, the PrusaSlicer.dll contains all the code while the prusa-slicer.exe, prusa-slicer-console.exe and the new prusa-gcodeviewer.exe wrappers just load PrusaSlicer.dll with the proper parameters.
- On OSX, the application distribution format supports a single binary, which in our case is PrusaSlicer.app/Contents/MacOS/PrusaSlicer. For command line usage, this binary may be symlinked to prusa-gocdeviewer to start in a G-code viewer mode. Starting new instances of PrusaSlicer does not quite fit the OSX system, as the Finder only expects a single instance of a GUI application to be running. Thus when drag & dropping onto a dock icon of PrusaSlicer resp. G-code viewer, the file is sent to the first instance of PrusaSlicer resp. G-code viewer.
- On Linux, we support two binary distributions: AppImage and .tar.bz2. The .tar.bz2 format contains a new prusa-gcodeviewer starter script, while the AppImage may be symlinked to prusa-gcodeviewer to start the G-code viewer. The AppImage works by mounting the zipped filesystem image embedded inside the AppImage file and starting the application from there. It is not recommended to start prusa-gcodeviewer from an already mounted AppImage, as the AppImage will be unmounted when the PrusaSlicer that mounted it closes, see the following discussion. When the user starts a G-code viewer from an AppImage PrusaSlicer application, another AppImage is mounted by the G-code viewer, which means the PrusaSlicer binary is being loaded into RAM the second time. Therefore if one is low on RAM, it is recommended to use the .tar.bz2 distribution instead of the AppImage until the AppImage is improved to support multiple processes running from a single mounted AppImage.
PrusaSlicer standalone G-code viewer tries hard to estimate the extrusion widths, layer heights, extrusion types, types of moves, layers etc. from the G-code generated by various slicers (PrusaSlicer, Cura, Simplify3D, IdeaMaker). The G-code itself does not contain all the information mentioned above, thus the G-code is usually augmented with slicer specific comments. To support visualization of extrusion types and extrusion widths reliably for G-code generated by PrusaSlicer, the G-code generated by PrusaSlicer is newly augmented by the following comments: ";TYPE:", ";HEIGHT:" and ";LAYER_CHANGE", where these comments are only exported when the extrusion type, layer height or layer index changes. In addition, the following annotations are exported for the G-code events inserted on the vertical slider in the G-code viewer: ";COLOR_CHANGE", ";PAUSE_PRINT" and ";CUSTOM_GCODE". G-code generated by older PrusaSlicer which does not contain these new annotations will still be displayed, but the extrusion widths or extrusion types may not be shown reliably.
In the stand-alone G-code viewer or once the final G-code is available after slicing, a new horizontal slider shows up, limiting visualization of extrusions and travel by time thus allowing simulation of the print in time. By default the new horizontal slider limits visualization of the last layer selected by the vertical toolbar. Alternatively the horizontal slider limits the extrusions in all layers selected by the vertical slider. In the first case, if the horizontal slider limits visibility of the top layer, then the other layers below are rendered in a gray color. We borrowed this visualization strategy from the Craftware user interface as Cura did.
The legend newly shows the print time and the print time fraction per feature (perimeter, infill etc.), and the legend labels serve as buttons to show / hide the particular extrusion time. The print time estimate is available in both the G-code preview after slicing and in the stand-alone G-code viewer.
Single vs. multiple instances, sending arguments to an existing instance
Some users prefer to work with a single instance of PrusaSlicer only, while other users love to be able to switch between multiple PrusaSlicer instances. While Windows and Linux support multiple instances of an application by default, OSX framework keeps just a single instance of an application running. We newly allow both scenarios on all platforms: The Windows and Linux users may now keep just a single instance of PrusaSlicer running, while the OSX users may launch additional instances of PrusaSlicer. Additionally we allow opening a new PrusaSlicer instance from a running PrusaSlicer "View -> Open New Instance" menu and from Dock context menu on OSX #2929 #4447.
When one clicks on the PrusaSlicer icon to open PrusaSlicer, either a new PrusaSlicer instance is started or an existing PrusaSlicer instance is activated based on the "single instance" preferences settings. The initial value of "single instance" matches the platform default: Multiple instances are allowed on Windows and Linux, while a single instance is allowed on OSX. When one drag and drops an STL or 3MF onto a PrusaSlicer icon and "single instance" is enabled, the file is opened in an existing PrusaSlicer instance. Drag and dropping a G-code file onto a PrusaSlicer icon opens always a new G-code viewer.
An instance of PrusaSlicer is identified by its full path to the PrusaSlicer binary, thus if "single instance" is enabled, PrusaSlicer will allow a single instance of each PrusaSlicer binary to run. Thus different versions of PrusaSlicer will not affect each other, alphas and betas included.
The command line supports a new "--single-instance" or "--no-single-instance" argument to override the "single instance" settings. For example, one may prefer to open a new instance of PrusaSlicer when drag & dropping an STL over the PrusaSlicer icon, while one may want to send an STL from Autodesk Fusion 360 to an existing PrusaSlicer instance by providing a "--single-instance" command line argument when starting PrusaSlicer from Fusion 360.
OSX specific: The OSX Finder and Dock only support a single application instance. Thus when double clicking on a PrusaSlicer icon, the existing PrusaSlicer instance is always activated independent of the "single instance" settings, and drag & dropping a file onto a PrusaSlicer icon in Finder or Dock opens the file in some random, likely the first instance of PrusaSlicer. However when starting PrusaSlicer.app/Contents/MacOS/PrusaSlicer from terminal, the "single instance" preferences settings is respected. We are aware that the approach of starting multiple instances of the same application on OSX is neither recommended nor supported by the OSX framework, however for technical reasons this was the quickest way to deliver multiple PrusaSlicer windows and the stand-alone G-code viewer.
While one may argue that one should open multiple windows of PrusaSlicer inside a single process instead of starting a new process for each PrusaSlicer instance, we do not think there is any memory issue with our approach as the program image is shared among instances and the base private program memory is quite low. Most of the memory is allocated by the models, slicing, undo/redo and mainly the G-code preview, therefore starting new instance for each slicer consumes just a tiny bit more than it would if the multiple windows were managed by a single process.
Technical details: PrusaSlicer writes a lock file into its cache directory to detect another instance running. The name of the lockfile is constructed from the hashed path to the PrusaSlicer process and a ".lock" suffix. Passing commands between PrusaSlicer instances is platform specific:
- On Windows, a Window message is sent to an existing PrusaSlicer main window, where the PrusaSlicer main window is identified by a window name, window class name and a hash of the PrusaSlicer proces path.
- On Linux, PrusaSlicer instances communicate over DBUS, where each PrusaSlicer instance registers as a listener with the following name: "com.prusa3d.prusaslicer.InstanceCheck.Object" + hash of the PrusaSlicer proces path.
- On OSX, NSDistributedNotificationCenter API is used. Each instance registers itself to receive a message named "OtherPrusaSlicerInstanceMessage" + hash of the PrusaSlicer process path.
Unsaved Changes dialog #3049
When closing the application or switching profiles, PrusaSlicer newly opens a dialog with the listing of modified unchanged parameters, their old and new values. The user may decide to discard all the changes, or one may save some or all the changes into user profiles. When switching profiles, the modified parameters may also be transferred to the activated profiles.
One may decide to always save or always discard the parameter changes by checking the "Remember my choice" checkbox at the "Unsaved changes" dialog. Such decision may later be reverted in the Preferences dialog. The user interface design and code was inspired by @kumpuu #3285.
When switching the Printer profile, the active Print and Filament profiles may no more be compatible with the new Printer profile. The old PrusaSlicer selected a Printer and Filament profiles marked as "default" in the activated Printer profile. The new PrusaSlicer selects the new Print profile with the following priority:
- Compatible Print profile with the same logical name aka alias.
- Prefered Print profile with the same layer height.
- Compatible Print profile with the same layer height.
- Prefered Print profile.
- Any compatible profile.
Thus when switching the printer from "Prusa i3 MK3" with the "0.2mm SPEED" Print profile active to "Prusa i3 MK2", "0.20mm 10mms Linear Advance" Print profile is newly activated, while the previous PrusaSlicer would select the default, which is "0.15mm OPTIMAL". The same logic applies to the selection of Filament profile, while the symbolic "filament_type" parameter is matched instead of the layer height.
Improved filament installation
In PrusaSlicer, not all installed filaments are necessarily compatible with all installed printers. We require the printer vendor to explicitly enumerate those filaments, which were verified to print correctly with his printers.
In this version, we have updated the Filaments selection page of the Configuration Wizard to reflect, that an installed filament may not be available for each installed printer. Namely, we are marking the filaments, which are incompatible with some of the installed printers with an asterisk. In addition, compatible installed printer profiles are listed out for the selected filament profile at the bottom of the Filaments page.
Physical Printers settings #1880 #3050 #4217 #4549
Historically PrusaSlicer stored the printer network connection settings into the Printer profile. This became inconvenient with the introduction of read-only vendor specific system profiles, where the user had to derive his own Printer profile from a system one just to be able to configure G-code upload over the network. In addition, storing the network connection information into the Printer profile posed a security risk, which we had to patch by suppressing export of the network connection into the 3MF, G-code and Config Bundles anyway.
Starting with this version, PrusaSlicer separates the physical printer connection settings from the Printer profile into new Physical Printer profiles. A Physical Printer profile references one or more Printer profiles of the same technology (either FFF or SLA), and it assigns a network connection information to these printers. One does not have to create a Physical Printer profile if one does not need to connect to a printer over the network. The new Physical Printers are listed in a new section in the Printer selection combo box after the system and custom Printer profiles.
A new Physical Printer profile is created by clicking on the "cog" icon right to the Printer profiles combo box, or by selecting the "add or remove printers" item in the Printer combo box. The Physical Printer profile editor opens also when clicking on the new "cog" icon in the Printer settings tab. The Physical Printer profiles are being stored into PrusaSlicer/physical_printer directory.
When first installing PrusaSlicer 2.3.0-alpha1, the network connection information is removed from existing user Printer profiles and converted to new Physical Printers profiles giving them generic names "Printer 1, Printer 2, ...". The user is advised to review and rename these Physical Printer profiles generated by the conversion process. The following configuration keys are moved from Printer to Physical Printer profiles: "host_type", "print_host", "printhost_apikey", "printhost_cafile", "printhost_authorization_type", "printhost_user", "printhost_password". The last three keys are new to support SL1 HTTP digest authentication, see the following section.
If some parameter of a Printer profile is modified, a "(modified)" suffix is newly shown not only for the modified Printer profile in the list of Printer profiles, but also for all the associated Physical Printer profiles.
For security reasons, the "Export Config Bundle" function does not export the Physical Printers. To help sharing the complete PrusaSlicer profiles between ones computers, we added "Export Config Bundle with Physical Printers" option.
SLA improvements
- It is newly possible to import both a model and its print profile from an existing
.SL1
archive. The feature is available through the "File->Import->Import SL1 archive" menu. Note that the original model is not available in the SL1 archive, it has to be reconstructed from the slices, thus the imported mesh will be visibly discretized and the supports (if they were used) will be fused with the object. - HTTP digest authentication (RFC 2617) is newly supported by PrusaSlicer to send files to an SL1 printer. HTTP digest authentication is configured in the new Physical Printers configuration dialog.
- Optimize orientation now orients parts flat to the print platform when configured to print directly on the platform.
- Configuration option Pad around object is only accessible from Pad parameter subpage. It was confusingly mirrored in Supports in the past.
- The bed texture is no more shown when looking from below while the support points or holes editing is in progress. It is to provide clear view of the bottom of the model with no obstructions.
- SLA support points and holes are re-projected on the mesh during loading and after Netfabb repair. This ensures that no support point or hole ends up off the mesh.
Various improvements regarding supports and hollowing were implemented. See the following table for more information and comparison with the last release.
New 3rd party printer profiles
The following 3rd party printer profiles were added or improved:
- Anycubic: Mega Zero #4057 thank @kad, Kossel Pulley, Linear and Linear Plus #4220 thanks @tc0fh, Mega S #4619 thanks @Igami
- BIBO profile improvements by @photodude
- Creality: Added Ender-2 thanks @probonopd, updated Ender-2 texture #4748 thanks @ChandlerMcCowan, updated Ender-3 bed texture, added Ender-3 with BLTouch and many other Ender improvements thanks @pmjdebruijn #4853 #4854
- TriLAB models DeltiQ M, L, XL prusa3d/PrusaSlicer-settings#100 thanks @espr14
Collapsible side bar, floating presets dialog etc.
PrusaSlicer is being used on various form factor devices ranging from ultrabooks and laptops to multi-screen workstations. One application layout does not fit them all, therefore we implemented the following layout options:
- The good old mode with Plater, Print, Filament and Printer tabs. The good old layout fits larger size laptops well.
- A bit of screen real estate is saved by hiding the tabs when the Plater is active. The configuration tabs are accessed by a new "cog" button at the top toolbar.
- Floating dialog mode, where the Print, Filament and Printer pages are shown in a floating dialog, which opens with the new "cog" button at the top toolbar. The floating dialog mode is handy on a multi-screen workstation and using it to fine tune print parameters with the background processing enabled is a joy #4093.
To support small laptops and ultrabooks, we have implemented the following new features:
- The side bar at the Plater is now collapsible if enabled in application preferences #2075 #3325.
- The side bar is collapsed with a Shift-Tab shortcut, thanks @wavexx #4735.
- Toolbars in the Plater are newly scaled down until they fit the screen.
Notification center
Starting with this version, many non-critical notifications and user requests which used to pop up as modal dialogs are newly displayed as notifications at the right side of the 3D scene. The following notifications are shown by the new notification center:
- New PrusaSlicer version or configuration profiles are available for download. This notification is shown at every application start up, therefore one no more misses an update.
- "Slicing complete" with time estimate and "Export G-code" hyperlink is shown as a notification if the side bar is collapsed.
- "Export of G-code to removable media finished" with a hyperlink to unmount the removable media.
- "Unmounting of a removable media succeeded / failed" #4821.
- "Slicing error" reporting inconsistency in slicing parameters that prohibits slicing, for example the "extruder collision with an object" in sequential print #4606.
- "Slicing warning" reporting possible problems of the print. Newly the "Empty layers detected" is reported as Slicing warning instead of stopping the slicing process, allowing to print stacked objects, for example the COVID-19 face shields #4062 #4756.
- Objects partially / fully outside the print volume. This notification used to be displayed at the bottom of the 3D scene, it is now shown by the notification center.
- 3D Mouse detached.
The notifications are sorted by severity with the most severe notifications at the bottom.
The update notifications, slicing finished, unmounting successful, 3D mouse detached and similar notifications fade out after a short time interval, while the warnings and errors are displayed as long as they are valid. Fading out of a notification is suppressed if the mouse cursor hovers over the notification.
Support for imperial units #1041 #1407 #1463 #1811 #2570
We newly provide support for imperial units for our US customers. PrusaSlicer uses metric system internally, namely all internal dimensions (model sizes, model positions, print & printer profiles and G-code) are measured in millimeters. To make the life easier to our US customers, we newly support imperial units in the following way:
- The "Object manipulation" panel newly offers an "Inches" check box. If enabled, the object position and scaling is presented and accepted in inches. PrusaSlicer still keeps the internal dimensions in mm, however they are converted from/to inches when presented to the user.
- The state of the "Inches" checkbox at the "Object manipulation" panel persists in application preferences as "use_inches" option. Initial state of the "Inches" checkbox is set at the last page of the application configuration wizard.
- The filament usage is shown in inches if the "Inches" mode is enabled.
The models are still imported / exported in millimeters by default, as most of the models available are in millimeters. However, we newly support the following:
- Importing STLs saved in inches by menu File->Import->Import STL (Imperial Units). STLs are converted from inches to millimeters on import.
- Object and Volume context menu newly contain "Convert from Imperial Unit" to scale from inches to millimeters after an object with dimensions in inches was loaded as in millimeters.
- Object and Volume context menu newly contain "Revert conversion from Imperial Unit" to revert the above, or if the user loaded an object in mm through "Import STL (Imperial Units)".
- If the model loaded is very small, a conversion from inches to millimeters is newly offered #4521.
Fuzzy search in parameters #1504
PrusaSlicer newly allows one to search for a parameter to quickly access particular parameter page and parameter field. The search is accessible from both the Plater top toolbar and from the Print/Filament/Printer parameter pages, or with a Ctrl-F hot key.
A modified fuzzy search algorithm by @forrestthewoods is used, which works similarly to the fuzzy search algorithm in Sublime editor. If the application is switched to a local language, both the localized names and English names are searched through. ASCII folding is applied, so one may for example type "cistici vez" to search for "Čistící věž".
Other UI improvements
- Copy/Paste is newly supported for the custom parameters and layer ranges in the object list.
- One may newly merge multiple objects into one multi-part object by selecting multiple objects in the Plater or in the Object list and by executing "Merge" from the pop-up menu.
- Splash screen is newly shown for both PrusaSlicer and the new G-code viewer. Splash screen may optionally be disabled in the preferences.
Other new features and improvements
- Windows specific: PrusaSlicer starts significantly faster due to delayed creation of parameter pages.
- It is newly possible to change the G-code generated for the Color Change, Tool Change and Pause events placed at the layer slider using the new "color_change_gcode", "pause_print_gcode" and "template_custom_gcode" variables #3722.
- Linux specific: Various Linux distros store system SSL certificates at a different locations, which our binary builds were not aware of, breaking automatic profile updates on Fedora and possibly on other Linux distros. PrusaSlicer newly searches for the openssl certificates at locations used by common Linux/Unix distributions on first application start-up, the user is informed about where the certificates are found and the user is asked to accept these certificates #3851 #4448.
- Windows specific: PrusaSlicer newly communicates with the 3DConnexion devices using the 3DConnexion driver, thus it is possible to configure 3DConnexion device for PrusaSlicer in the driver, for example it is now possible to swap the axes of the 3D mouse in the 3DConnexion driver. The latest 3DConnexion driver already installs c:\Program Files\3Dconnexion\3DxWare\3DxWinCore64\Cfg\prusa-slicer.xml, however if you created this file manually, you are advised to remove it before starting the 3DConnexion driver update as the driver update will keep the old file. The 3DConnexion driver does not install a configuration file for the new prusa-gcodeviewer.exe, you have to copy the prusa-slicer.xml to prusa-gcodeviewer.xml and edit it to get the 3D mouse working in the G-code viewer. We are in touch with 3DConnexion to fix that #3864 #3933 #3937 #4104.
- The G-code placeholder parser supports the following new keys: "print_bed_min", "print_bed_max", "print_bed_size", which are calculated as a bounding box of an existing "bed_shape" vector of points.
- The G-code placeholder parser also newly supports the following new keys: "first_layer_print_convex_hull", "first_layer_print_min", "first_layer_print_max", "first_layer_print_size", defining convex hull of the first layer. Please note that the extrusions generated by the custom G-code are not accounted for.
- OSX specific: Implemented automatic switching of color schemes (light to dark and vice versa) on a system notification.
- Custom G-code texts now use a monospaced font, thanks @wavexx #4747.
- It is now possible to stack objects one over the other, however the user will be informed with a notification and when exporting the G-code about empty layers in the print #4041 #4062 #4756.
Bugs fixed
- Windows specific: Fixed loading of PrusaSlicer profiles from a path containing a symlink. The issue is caused by a buggy boost::filesystem::canonical() implementation, which we replaced with boost::filesystem::absolute() #732 #3956 #4557.
- Linux specific: Fixed crash on startup under Wayland. Fixed by setting env "GDK_BACKEND" to "x11" #2515 #4691.
- Fixed under-extrusion upon leaving the MMU2 wipe tower. Wiping moves performed before moving away from the wipe tower were replaced by scheduling a regular wipe that is performed after the regular G-code generator regains control from the wipe tower generator. This makes it consistent with wipes on the model and gets rid of the unretracted travels #2834.
- The print bed is now limited to 1.2m x 1.2m, which is required by the range of a 32 bit fixed point signed int we use to represent coordinates #2877.
- Linux specific: LANGUAGE environment variable was not respected #2970.
- Windows 10 specific: Fixed "rubber band" effect when dragging windows on Windows 10 build 2004 #3009 #4636 #4838 #4886.
- PrusaSlicer does not support "Support material" overrides per layer range, therefore this option has been removed #3060 #4100.
- Fixed position of multi-material purging lines on rectangular beds with non-standard origin #3805.
- Linux specific: Fixed crashes due to a bug in accessing bitmaps for the object list #3837.
- Windows specific: The 3Dconnexion 3D mouse produced scrolling events in case the mouse cursor was over a combo box. This is now fixed with an installation of the latest 3DConnexion driver #3864.
- OSX specific: Selection of profiles by the combo boxes was case insensitive, making it impossible to select a user preset, if its name differed in case only #3889.
- Fixed order of processing configuration files when slicing from command line. The priority of config values is now: 1) Config keys from command line, for example --fill-pattern=stars (highest priority, overwrites everything below), 2) Config files loaded with --load, 3) Config from 3mf (lowest priority) #3893.
- Fixed crash when trying to test-connect to a FlashAir SD card given an invalid IP address #3899.
- Windows specific: Fixed language selection issue for country specific language variants. For example, pt_PT dictionary was incorrectly loaded by PrusaSlicer instead of pt_BR for Brazilian Portugese #3901.
- Improved error reporting when loading presets with option keys or option values that our PrusaSlicer does not understand. This applies to configs added by some forks of slic3r, for example SuperSlicer #3909.
- OSX specific: Fixed crashes when switching printers or attempting to modify the bed shape or size due to a bug in Retina scaling support #3916.
- Fixed extremely wide wipe tower with 0.35mm FAST profile #3919 #4361 #4541.
- MMU specific: Fixed disabling of linear advance with RepRap firmware #3965.
- Windows specific. Fixed scanning of floppy drives when searching for a removable media as a target for G-code export #3967.
- Fixed crash due to a typo in Korean localization #3983.
- Fixed layout of the object manipulation panel in French by shortening the labels #4035.
- The "Eject removable media" is newly shown first after the export is finished #4212.
- Fixed an issue in arrangement, where some objects were left out of bed after arrange #4329.
- Windows specific: Improved scanning of removable drives. PrusaSlicer newly registers for removable media insert / eject notifications, therefore the devices are no more scanned regularly, spinning up removable hard drives. Thanks @mjgtp from prusaprinters.org, see the following discussion #4071.
- Fixed a crash when slicing a specific SL1 project #4836.
- Fixed print-out of the final G-code file name when slicing from command line. The macros in the file name template are now correctly substituted #4872.
- Fixed cutting of objects by a plane in SLA mode with supports already calculated, where the object elevation was not being taken into account.
Architecture, infrastructure
- We have updated to wxWidgets 3.1.3.
- The dependency build script now supports a new parameter DEP_WX_GTK3=on/off to build wxWidgets against GTK3.
- We newly provide Linux/GTK3 builds.
- Improved the "Update How to build - Mac OS" documentation, thanks @danhae #4630.
Known issues
- The new G-code viewer does not correctly support sequential print and spiral vase. We are working on that.
- OSX Big Sur specific: Bold fonts are not displayed as bold, combo boxes at the bottom of the G-code viewer open down, thus they may end up out of the screen. 3DConnexion does not provide a correctly signed driver, which could install on Big Sur.
What is in the working
We are revamping the "Avoid crossing perimeters" feature.
Where you can help
We accept translations and 3rd party printer profiles.