Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

There is a way to completely eliminate the visible seam. #3211

Closed
vgdh opened this issue Dec 20, 2023 · 29 comments · Fixed by #3839
Closed

There is a way to completely eliminate the visible seam. #3211

vgdh opened this issue Dec 20, 2023 · 29 comments · Fixed by #3839
Labels
enhancement New feature or request

Comments

@vgdh
Copy link
Contributor

vgdh commented Dec 20, 2023

Is your feature request related to a problem? Please describe.

Hide the Seam Completely

Explanation

Every closed loop will eventually have a visible seam. However, if there is no specific point where the line ends, there is no seam, right?

  1. Begin the line with a height of 0 and gradually increase the height of the nozzle and the line over some length until it reaches the full height of the line.
  2. Move through the loop until reaching the end of the line, but continue extruding the filament due to the initial zero line height. Systematically reduce the line's height while maintaining the same nozzle height until reaching the end of the starting slope.
  3. Move on to the next perimeter or infill.

That's it. The algorithm is remarkably simple, though the result is astonishingly good.
It is not an easy task to post-process already existing GCODE files, but if it works at the slicer level, it will work very well.

The python code

The repository includes an example demonstrating a basic implementation of the algorithm for printing a ring. This implementation allows specifying parameters such as the number of lines in the ring, layer height, line width, speed, etc.

Also there is an example of gcode file for 0.4 nozzle line 0.3x0.6 layer height 0.3

Photos of the Seam Details on the Printed Example.

The first layer (the top on the first photo) was printed without the algorithm to get better adhesion.
botom 2
botom 3
photo_1_2023-12-20_16-13-32

In the photo below you can see there is no gap between the lines.
top 1
side 1
botom 1
center 1
top 2

Which printers will be beneficial to this feature
all the community

@vgdh
Copy link
Contributor Author

vgdh commented Dec 20, 2023

printed on the cheapest kingroon kp3s

@Eldenroot
Copy link
Contributor

Nice idea :)

@TheBest6337
Copy link

This could be game changing! Idk how well it could work on smaller things and not smooth shapes but it would be nice to have an implementation to test.

@Noisyfox
Copy link
Collaborator

One possible issue I could think of is the nozzle clearance, since you'll have to lower the z every time you start printing an outer wall.

@PrimeGoat
Copy link

How does this differ from the spiral vase?

@vgdh
Copy link
Contributor Author

vgdh commented Dec 26, 2023

I have written some post-processing script. Feel free to test, modify, or contribute.

@DVSVIDEO
Copy link

Hogyan különbözik ez a spirális vázától?

How does this differ from the spiral vase?

In that the spiral vase mode can only print a single object that returns to itself within the slice. So an object branching into two separate branches cannot be created with a single line.
This method works for any number of objects.

@SoftFever
Copy link
Owner

This is pure genius!

@Eldenroot
Copy link
Contributor

This could be a game changer

@Noisyfox
Copy link
Collaborator

Noisyfox commented Dec 29, 2023

https://github.com/Noisyfox/seam-slope-postprocessor/tree/dev/better-orca-support

I've made a version that should be (mostly) usable with Orca as a post-processor script, with the following requirements:

  • Arc fitting: off
  • Wipe distance: 0
  • Z hop when retracting: 0
  • Disable set remaining time
  • Seam gap: 0
  • Infill: 0
  • Top/bottom shell: 0
  • Single object only

This script is still very prototype, use at your own risk! Non-zero infill and top/bottom shells might work but I haven't tested yet. Update: seems to be working fine.
And Orca might not be able to preview the processed gcode file, you could use PS instead.

My current plan is to use the post-process script to verify this algorithm is valid and affective, then we'll integrate it into the slicer itself. That's also why I disabled all infills and top/bottom shells and wipes etc. because they don't really matter in this POC and might confuse the script. I don't want to spend any time on fixing the script so it can properly handle things like wipes and z hops, because these won't be an issue at all when we implement this in the slicer.

@SoftFever SoftFever added the enhancement New feature or request label Dec 29, 2023
@Noisyfox
Copy link
Collaborator

Noisyfox commented Dec 29, 2023

8e30bef94d86a8f1ca475fee2e91f8e0
(Left with the post-process script, right the original)
THIS IS AMAZING!

@Eldenroot
Copy link
Contributor

Omg cool! Good job!

@vgdh
Copy link
Contributor Author

vgdh commented Jan 1, 2024

Now the script processes only the outer perimeters, printing the inner ones as usual.

@vgdh
Copy link
Contributor Author

vgdh commented Jan 1, 2024

bender likes it very much 😁
1704131531564
1704131531621

@Eldenroot
Copy link
Contributor

Wau!

@Noisyfox
Copy link
Collaborator

Noisyfox commented Jan 2, 2024

Looks promising, will give it another shot tonight. Was having over extrusion when printing a sphere, will see if it's getting better.

1bcc59175704d4c61305ec610090fba2

@Eldenroot
Copy link
Contributor

Did you try and did you get better results?

@Noisyfox
Copy link
Collaborator

Yeah and I still got that over extrusion on overhangs... Maybe something wrong with my PA.

@Eldenroot
Copy link
Contributor

Ouch, not good :( because this would be a huge step forward in FDM printing world.

@vgdh - do you have any idea?

@Noisyfox
Copy link
Collaborator

I've successfully integrated this into the slicer itself:

91469be21465a5b9f2c8e272996dc391

@Eldenroot
Copy link
Contributor

Amazing!

@superfloh247
Copy link

please push a PR - I want to test this!

@Noisyfox
Copy link
Collaborator

Ok the PR is raised.

@superfloh247
Copy link

git fetch origin pull/3839/head:pr3839
git checkout pr3839
./build_release_macos.sh -t 14.2

correct?

is this new feature activated by default or how do I switch it on?

@Eldenroot
Copy link
Contributor

Just download the build from PR

@vgdh
Copy link
Contributor Author

vgdh commented Jan 27, 2024

git fetch origin pull/3839/head:pr3839 git checkout pr3839 ./build_release_macos.sh -t 14.2

correct?

is this new feature activated by default or how do I switch it on?

win PR artifact

@vgdh
Copy link
Contributor Author

vgdh commented Jan 31, 2024

This feature in now implementing by OrcaSlicer: #3839
Feel free to participate.

@dstulken
Copy link

Thank you!

@vgdh
Copy link
Contributor Author

vgdh commented Feb 27, 2024

Thank you!

You are welcome! ❤️

wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this issue Feb 17, 2025
Also add patches to fix compatibility isues with cgal 6.0.x.

PrusaSlicer 2.9.0

Bugs fixed with respect to 2.9.0-rc1
- Fixed a crash in a specific case when slicing multimaterial-painted
  objects (#13676, #13798).
- Fixed a crash when slicing multimaterial-painted objects on a printer with
  less extruders than painted.
- Fixed highlighting of the active bed in case that the bed has a big custom
  model which would overlap neighboring beds (mentioned in #13791).

PrusaSlicer 2.9.0-rc1

Bugs fixed with respect to 2.9.0-beta1
- Windows specific: Export G-code button in the right panel was flickering on
  mouse move.
- The Slice Now button did not update after loading an object from the shape
  gallery (#13777).
- Fixed undefined behavior when sending G-code to print host. The issue only
  manifested on macOS with address sanitizer (#13766, #13759, #13750).
- A tenth bed was offered to the user after loading the project already
  containing maximum number of beds (a visual glitch, it was not possible to
  actually use the bed).
- Fixed empty thumbnail after adding a custom object into the shape gallery
  (bug introduced in 2.9.0-alpha1).
- Fixed freeze after a communication with Prusa Account returned a specific
  error code. This bug was uncovered by a problem on the server side couple of
  days ago which affected many PrusaSlicer users (#13768, #13762, #13765,
  #13762, #13745, #13757, #13758, #13748). Extra countermeasures were applied
  on both sides and they should prevent this from happening again.
- Fixed incomplete update when switching from FDM mode to SLA: out-of-bed
  status of volumes and thumbnails in bed selector were not updated correctly.
- Fixed a crash during slicing introduced between 2.9.0-alpha1 and 2.9.0-beta1.
- Fixed a crash when switching application language while using the bulk
  slicing screen.
- macOS specific: Loading screen displayed when web content is being loaded
  did not show.
Localization
- Updated POT.
- Updated CS, PL, DE, IT, ES, FR, JA dictionaries.
- Updated RU dictionary (#13438, thanks to @AndylgTom and Dmitry Sorkin).

PrusaSlicer 2.9.0-beta1

This is the first beta release of PrusaSlicer 2.9.0. This release introduces
more improvement related to multiple beds, several other improvements and
couple of bugfixes.

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

Important note for Linux users: As noted during 2.8.x releases, we are now
using Flathub as the only official distribution channel of PrusaSlicer on
Linux. The reasons behind this decision and what it means for you are
described at the end of 2.9.0-alpha1 release log.

Multiple beds - bulk slicing and export
It is now possible to schedule slicing of all prepared beds without switching
them manually. The bed selector dialog in Preview now has an extra button.
Pushing it activates a "bulk slicing" mode, and PrusaSlicer will start slicing
all the beds one by one. When it is finished, a combined print statistics is
shown.

It is also possible to export all the sliced beds using the usual button in the
right panel. It now opens an "Open folder" dialog, and after a folder is
selected, an extra dialog appears where it is possible to change names of the
individual files. One can also uncheck one or more of the beds to not export
them. The same dialog opens when sending multiple G-codes to Connect.

Support for printing with different nozzle diameters
Experimental support for printing with different nozzle diameters on multi-tool
printers, such as the Original Prusa XL, is now available for experienced users
and developers. This workflow allows combining nozzles of different diameters
(e.g., for fine perimeters and fast infill) but requires a few profile
adjustments.

Key changes:
- Automatic extrusion width calculation can be easily enabled (Print Settings ->
  Advanced -> Automatic extrusion widths calculation), adjusting based on nozzle
  diameter.
- Automatic infill combining (Print Settings -> Infill -> Automatic infill
  combination) helps optimize printing when using larger nozzles for infill.
  This feature, inspired by OrcaSlicer, simplifies setup. Thanks to OrcaSlicer
  for the idea!
- It is now possible to use the wipe tower and supports with multiple nozzles of
  different size.

Important Notes:
- Some nozzle combinations may not be compatible. Be cautious as these setups
  could lead to failed prints.
- For detailed step-by-step instructions and limitations refer to our help.
Closes #13159, #13587.

Other improvements with respect to 2.9.0-alpha1
- When using slicer from command-line interface and slicing a 3MF, the thumbnail
  in the 3MF is used for G-codes. Because thumbnail generator relies on OpenGL,
  PrusaSlicer cannot easily generate its own thumbnail. #7878
- When multiple beds are used, each is now labeled with a number. The number
  also appears in the Bed selector dialog in Preview, along with a status icon
  informing about current situation of the bed (not sliced / slicing in
  progress / slicing finished).
- Autocenter feature was removed. The feature was a candidate for removal for
  many years, because it caused more confusion than good.
- Extruder stall detection is disabled for XL before ramming.
- Bugs fixed with respect to 2.9.0-alpha1
- Loading binary G-codes into standalone G-code Viewer was extremely slow.
- Fixed issues with 'avoid crossing perimeters' feature (#13445, #13478, #12432,
  #13669).
- Fixed incorrect display of volumetric flow rate in preview when "Use relative
  distances" was switched off (#13623).
- Fixed never-ending loading cursor on Linux when loading webpage in WebView
  panels.
- Fixed arrange not arranging to front on XL (#13650).
- Fixed wipe tower not auto-disabling on single filament print on MM printer
  (#13649).
- Fixed export of M73 C lines to G-code to fix displaying remaining time to
  color change. This was partially fixed in 2.9.0-alpha1 already, but not in
  all cases. #4734, #12849
- Fixed couple of camera glitches.
- Fixed missing updates of shells in preview after moving object using the right
  panel.
- Fixed incorrect placement of objects after cut (they would end up on an
  unexpected bed). #13637
- Stopped displaying warning dialog with "Error running JavaScript" phrase
  (#12950).
- Fix objects incorrectly rearranging after saving and reloading a 3mf in
  2.9.1-alpha1 (#13651).
- Custom G-codes and ColorChanges did not load from project when multiple beds
  were used (#13651).
- Object names emitted into G-code for Cancel Object G-codes are now trimmed.
  Very long names were causing issues when sending the G-code using OctoPrint
  (#13314).
- Changed reading of keyboard shortcuts in WebView on MacOS. Current
  implementation of wxWidgets's WebView has completely different approach to
  keyboard shortcuts. On Widows, all kind of WebView shortcuts are read and
  implemented while no "PrusaSlicer shortcuts" are read. On Linux it is opposite
  situation - only "PrusaSlicer shortcuts" are read inside WebView. It is not
  the best, but behavior on Windows and Linux is acceptable. While on Mac no
  shortcuts are read at all. So far we have added reading and handling of
  cmd + Q, cmd + M and cmd + R. In future we would like to unify shortcut
  reading on all platforms.
- Menu button "Reload from disk" and "Reload WebView Content" now correctly
  share "F5" shortcut. Reload from disk shortcut was not working in last
  release (#13693).
- Fix of clipping logic for clipping arcs with negative radius. (#13678).
- Fix splitting to object moving some of the just split object parts to a
  different bed (#13661).
- Fix of search bar losing focus while typing (#13691, thanks to @themanyone).
- Fixed slow generation of cancel object polygons by performing union operation
  of polygons incrementally.
- Prevent empty slicing notification when switching beds.
- Height range painting tool now always use world coordinates and thus works
  correctly with rotated objects (13631).
- During startup, non-flatpak desktop files of older PrusaSlicer versions are
  silently searched for and deleted. This is necessary for correct opening of
  our custom URL (used for login and model opening from Printables).
  Unfortunately searching for desktop files has troubles to search all possible
  paths due flatpak changing XDG_DATA_HOME and XDG_DATA_DIRS which stores
  potential paths for desktop file creation. Thus some old desktop files might
  remain in the system. In such case, it is possible to delete those inside the
  old version with Configuration -> Desktop Integration -> Undo.
- Fix of uninitialized ExtrusionLine when Fuzzy skin was applied on Arachne
  extrusions to fix combining Fuzzy Skin and Seam Painting (#13614).
- Fixed incorrect seam placement with painted fuzzy skin (#13640, #13614).
- Fixed negative seam gap values causing invalid extrusion generation (#13678).
- Fix missing update of preview when switching beds in 3D scene.
- Fix empty layers when multi-material painting and modifiers are used (#13645).
- Fix of ignored assigned extruders to modifiers when multi-material painting
  is used (#13645).
Infrastructure
- Fix CMake bugs leading to build errors on Gentoo and possibly other linux
  distributions (PR #13609 by @jmickelin building upon PR #13080 by @Rose-

PrusaSlicer 2.9.0-alpha1

This is the first alpha release of PrusaSlicer 2.9.0. This release introduces
support for multiple beds, Printables integration, scarf seams, better fuzzy
skin and other 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.

Important note for Linux users: As noted during 2.8.x releases, we are now using
Flathub as the only official distribution channel of PrusaSlicer on Linux. The
reasons behind this decision and what it means for you are described at the end
of this release log. Thanks for your understanding

Multiple beds (#10704)
It is now possible to work with multiple beds in the scene. This allows the user
to handle more complicated projects (which do not fit a single bed) more easily
than before. This feature is already known to BambuStudio users (the
implementation in PrusaSlicer is completely independent).

Beds handling
To make the workflow fluid and not intrusive to users using only a single bed,
there are no buttons to add or remove beds. A new bed is offered anytime you are
dragging an object outside of bed for more than 1 second (unless the object is
dragged to the new bed position faster, in which case it shows up immediately).
This allows to create a bed and place an object on it in a single operation. The
beds are placed in a compact grid pattern, with a hard limit of 9 beds. One bed
is always set as active, which is controlled by left-clicking it. Operations
such as "Import STL" and similar are processed on the active bed. The individual
beds can be thought of as almost independent projects, each having its own set
of color changes, its own wipe tower and so on. Currently the only limitation is
that all the beds must use the same configuration (i.e. you cannot have an MK4
bed next to a MINI).

Arrange
The Arrange button in the top toolbar was duplicated. The arrange function can
either do the global arrange (as it always could) or arrange only objects on the
active bed (which includes objects partially on it). The settings dialog shown
when right-clicking the button is common to both.

Compatibility with older PrusaSlicer
To keep the number of changes to our 3MF project files as small as possible,
the positions of the beds are not explicitly saved, but they are instead
inferred from positions of the objects. The new project files can therefore be
loaded into older versions of PrusaSlicer (they obviously do not show the extra
beds, though). As for loading older PrusaSlicer projects. PrusaSlicer actually
had minimal concept of virtual beds for many years, which is obvious from
Arrange function. When there were too many objects to place on a single bed,
PrusaSlicer would keep adding them spaced as if there were other beds next to
each other. If you load such a project into PrusaSlicer 2.9.0, this situation
is detected and the objects on these virtual "beds" are moved so they actually
end up on a non-virtual bed in the grid.

Preview
When switching to Preview, a bed selector toolbar is shown in the top-right
corner, which was the last remaining space where nothing was placed yet. We were
considering a bigger reorganization of the Preview scene, but in the end we
decided to purposefully leave the controls where they were so we do not break
what people are used to. We are planning to do a general overhaul in future,
so it makes sense to us to postpone the big changes to do them in one go.
Switching the beds in Preview moves the camera so the bed switched to is in the
same position as the one switched from. The 'Sliced Info' statistics and
'Export G-code' button in the right panel are related to currently active bed.

What is in the works
It is currently not possible to slice all the beds in one step. This will be
added before the 2.9.0 final. We only released the alpha a bit early to start
collecting feedback.

Printables integration (#13207)
Printables.com has been fully integrated into the PrusaSlicer ecosystem,
complementing the earlier integration of Prusa Connect in version 2.8.0.
Printables is now a persistent tab in the top bar, available to all users
regardless of login status. While anonymous users can browse and download
models, logged-in users gain access to additional features such as managing
collections, viewing liked and downloaded models, and sending G-code directly
to Prusa Connect.

On model pages, three key functions - Slice, Download and Print - interact
seamlessly with PrusaSlicer. The Slice button, identifiable by the PrusaSlicer
logo, mirrors the functionality of the browser version. Clicking it redirects
the user to the Plater tab, where the download starts automatically. The
destination directory for downloads can be set in Configuration ->
Preferences -> Others. The download notification now includes a link back to
the model page on Printables. Once the download is complete, the data is
added to the Plater using the same logic as the drag-and-drop mechanism.

The Download button provides similar functionality with two key differences.
First, the user remains on the Printables tab, with a simple notification
confirming the download in the bottom-right corner. As with Slice, a detailed
notification is available in the Plater tab, including a button to open the
destination directory. Second, the downloaded file is not opened or added to
the Plater.

The Print button is exclusively for logged-in users and enables direct printing
of G-code files. A background check between Printables and Prusa Connect
ensures printer model compatibility. If a suitable printer is detected, users
can start printing directly from Printables without needing to slice or
download the model. A printer selection dialog, similar to the upload dialog in
PrusaSlicer, is displayed to complete the process.

Printables is implemented as a webpage within a WebView, allowing its content
and functionality to improve independently of PrusaSlicer releases.

Scarf seams (#11621)
A feature dubbed "scarf seams" by the community is introduced. The main purpose
of this feature is hiding visible seams on smooth perimeters. It is achieved by
overlapping extrusions at the start and end of a perimeter loop. The name of
the feature originates from a similar technique in woodworking called "scarf
joint". It is possible to turn on scarf seams for both inner and outer
perimeters and to turn it off for holes in a print (e.g. a hole for a screw).
Also, by default, when scarf seams are turned on, it only generates the scarfs
if the perimeter is considered smooth. This can be turned off. Currently, the
scarf seams are best visualized using the "Actual volumetric flow rate" option
in the preview legend. This way it is clearly visible where the scarf joint
begins and ends.

In the image above there is a cylinder printed with both a normal seam and
scarf seam. Number one is the scarf seam start, number two is the scarf seam
end and number three is a normal seam. The scarf seam greatly reduces the
visibility of the usual seam. Yet, it is not a silver bullet as it may
generates a new "ghost" seam, albeit way less visible than the original seam.

Settings related to scarf seams are located under Print Settings -> Layers
and Perimeters -> Advanced.

It is important to note that scarf seams are not our original idea. As far as
we know the original idea came from @MichaelJLew in #11621 and simultaneously
from @vgdh in SoftFever/OrcaSlicer#3211. The feature was then implemented by
@Noisyfox to OrcaSlicer in SoftFever/OrcaSlicer#3839. Even though our
implementation is original (because of our specific code base needs), for the
most part the functionality mimics the available functionality in OrcaSlicer.
We would like to express our gratitude to the many people that got directly or
indirectly involved with the development of this feature, with a special thank
you to @Noisyfox who did a lot of the heavy lifting required to implement it in
OrcaSlicer.

Fuzzy skin improvements
Since fuzzy skin was integrated into PrusaSlicer, it was always applied to the
whole perimeter. This behavior had drawbacks, such as when fuzzy skin was
applied to the modifier, objects were split into several regions, and each
region had its own perimeters that divided the layer into several parts (#6881,
@Noisyfox, which was the base for our implementation.

We incorporated several other fuzzy skin improvements (like poor randomness)
into PrusaSlicer, which were developed by the OrcaSlicer community. Thanks to
@Noisyfox, @SoftFever, @SeaRyanC, and @andrewboktor for improvements of the
fuzzy skin.

We believe that the above mentioned improvements will lead to fuzzy skin being
more used together with modifiers. To make it more convenient to use, we also
introduced the fuzzy skin painting tool. The fuzzy skin painting is similar to
the multi-material tool and the support painting tool, so now fuzzy skin can be
easily painted where it is needed without playing with modifiers (#6988). The
tool is available from the left toolbar.

Improvements in painting tools and multimaterial segmentation
- Smart fill and bucket fill automatically paint tiny triangles around selected
  areas. Such triangles often exceeded the angle limit and were left unpainted,
  negatively affecting multi-material segmentation.
- Added the slider to specify the maximum angle between triangles that the
  bucket fill will select.
- Added height range painting tool into multi-material painting tool for
  painting objects between two horizontal lines. We were inspired by this tool
  in BambuStudio but implemented it from scratch to ensure that it works
  smoothly on detailed models.
- Sped up painting using the single triangle brush, which was especially slow on
  detailed models.
- Fixed unintended short sliders in the support painting gizmo.
- The projection of painted models onto slices in multi-material segmentation
  has been improved. We fixed various types of artifacts and made the
  projection more precise. This means the sliced models will now better match
  how they were painted (#8745, #12616).
- Improved multi-material segmentation for painted volume objects. Previously,
  multi-material segmentation was used just for painted volumes, and handling
  of the default extruder was done later during the slicing process, which was
  unpredictable and confusing for users. Because it could happen that in the
  place where two volumes were touching, there could be a change in the used
  extruder. Since this PrusaSlicer version, when at least one volume is
  multi-material painted, the whole multi-volume object is processed by
  multi-material segmentation, and the handling of the default extruder is left
  on multi-material segmentation.

Other improvements with respect to 2.8.1
- Reduced splitting of extrusions when the pressure equalizer is enabled.
  Extrusions were split into too many even when the feedrate barely changed.
- Avoid emitting Z-axis coordinates for every g-code command when the pressure
  equalizer is enabled. Z-axis coordinates are now emitted only when Z-axis
  coordinates actually change.
- We reconsidered the decision to remove the "Ensure vertical shell thickness"
  option. We bring back this parameter by combining PR by @vovodroid (#11950)
  and implementation in OrcaSlicer by @SoftFever. Now, there are three options
  for "Ensure vertical shell thickness": Enabled, Partial, and Disabled. Partial
  is similar to behavior when "Ensure vertical shell thickness" is unchecked in
  the older PrusaSlicer versions. Disabled produces additional extrusion only to
  support top layers (#223, #1054, #6853, #9898, #10102, #10191, #10202, #10827,
  #10926).
- Added hypertext link that opens the printer dashboard into the notification
  about sending files into Connect.
- It is now possible to start PrusaSlicer GUI from the command line with
  specified printer, print, and material profiles using the following arguments:
  --print-profile, --printer-profile and --material-profile (#13327). Until now,
  the arguments could only be used in the headless mode.
- Several performance improvements of ConfigWizard together with improvements of
  ConfigWizard UI.
- Remove export to the AMF file format from CLI. Export into the AMF file format
  was previously removed from GUI in PrusaSlicer 2.4.0.
- Behavior of WebView tabs is changed. Until user clicks and opens the tab,
  WebView is not created. This is particularly effective on Windows, where
  WebView spawns several processes for each tab. This applies for Connect,
  Physical printer and the new Printables tabs. #13127
- 'Reload WebView' action was added. Accessible from the View menu, 'Reload
  WebView Content' button or F5 key reloads currently visible WebView.
  Unfortunately keyboard reading with WebView / WebKit libraries does not work
  reliably on all platforms and is subject of further improvements.
- Reload button is also present on error page displayed in WebView. This could
  be helpful e.g. when user forgets to turn on their physical printer before
  clicking the Physical printer tab.
- Upload to Connect dialog now has larger default size.

Bugs fixed with respect to 2.8.1
- Covered parts of top and bottom layers are now ignored during multi-material
  segmentation.
- Fixed overriding of multi-material painted top or bottom layer on low objects
  (#13252).
- Fixed painting on broken meshes (#13142).
- Fixed top layers incorrectly classified as a bridge. Thanks to @SoftFever.
- Added parameter for setting the gap between the start and the end of
  perimeter loops (#2503).
- Emboss tool was failing when attempting to load a file from path containing
  non-ASCII characters (#13123).
- Fixed Gtk-CRITICAL ** errors filling up logs (#4935, #13092, thanks to
  @themanyone).
- Fixed avoid crossing perimeters on layer change (#13445, #13478).
- Fix rear seam not aligned to rear sharp corner (#13518).
- Fix nearest seam would detect very tiny corners in geometry (#13072).
- Fix limiting of feedrate by z-travel speed (#13420).
- Fine tune seam placing algorithm - allow more flexibility when picking
  aligned seam points.
- Fixed warning dialog to correctly show multiple slicing warnings.
- Fixed export of M73 C lines to G-code to fix displaying remaining time to
  color change (prusa3d/Prusa-Firmware#4734).
- Fixed brush freeze when changing size using "Alt+mouse wheel" in the
  painting tools.
- Fixed a crash on Esc key when editing text in gizmos (#13458).
- Fixed a crash when infill density is changed to 100% (#13450).
- Fixed incompatible profiles with parentheses in name (#13554).
- Fixed reading of right Alt key in painting gizmos.
- Linux only: Fixed issues with WebView showing just a blank page (#12969
  #13046).
- Fixed drag & drop of several files at once including 3mfs and zip files.
- Improved Configuration Wizard to select SLA printer when multipart object is
  in on the bed.
- Fixed an internal issue potentially causing problems with path planning
  (although the problematic case was not identified). Thanks to @supermerill
  for spotting and fixing the issue (#13331).

Linux: Distribution through Flathub (#1124, #9776)
We have decided to move to Flatpak and use Flathub as the official means of
distributing our application on Linux. The Flathub package here is now
officially endorsed. You can follow the steps provided on the Flathub page.

Here is a quick guide on how to use flatpak from the terminal. This is
required to try out the alpha, beta and rc releases.

First, make sure you have flatpak installed and Flathub correctly set up.
You can follow the steps at https://flatpak.org/setup/.

If you want to try out the alpha (such as this one), beta and rc versions
you must add the flathub-beta repository (you only need to do this once):

flatpak remote-add --if-not-exists flathub-beta https://flathub.org/beta-repo/flathub-beta.flatpakrepo

To install the latest version of PrusaSlicer:

flatpak install flathub com.prusa3d.PrusaSlicer      # for stable
flatpak install flathub-beta com.prusa3d.PrusaSlicer # for the unstable versions

To run PrusaSlicer from the terminal, you can do:

flatpak run com.prusa3d.PrusaSlicer       # for stable
flatpak run com.prusa3d.PrusaSlicer//beta # for the unstable versions

Note that you can run all the mentioned commands with the --user option if you
do not have the superuser privileges on your machine.

Please understand that publication of PrusaSlicer on Flathub has to be preceded
by the publication on our GitHub. This means that there will always be certain
delay (typically couple of hours) before the new release shows up on Flathub.
This is the expected behaviour, the extra time is needed to build the Flathub
binary.

Config migration
Config folder location on your machine for the new Flatpak version of
PrusaSlicer is different to the one used by the AppImage. PrusaSlicer will
automatically ask you if you want to migrate your old AppImage config to the
new location. If you prefer or are afraid of data loss, you can also do this
manually. The Help -> Show configuration folder utility in PrusaSlicer can aid
you with doing just that.

Special thanks
Special thanks belong to @xarbit and @eliadevito who were keeping PrusaSlicer
community flatpak up to date for the past several years. Their commitment
provided a great service to many users that used the flatpak version before
this release. Also, the work was an invaluable resource when migrating our
infrastructure to flatpak. Last but not least, shout-out to @xarbit who helped
us with the migration itself.

Reasons for moving to Flatpak
We understand that the decision may make some people angry and raise questions
about why we are leaving something that "just works" (the AppImage). Why did we
decide to leave AppImage in favor of Flatpak? There are multiple reasons. First
of all, AppImage is not designed to bundle "everything". There are still
assumptions about the target system that must hold for the AppImage to work. It
is up to the developer to decide what to bundle with the application, and doing
this decision requires to check and test on all the targeted Linux
distributions, which kind of kills the whole purpose. Also, some libraries may
be almost or completely impossible to bundle (such as glibc or webkit). The
AppImage itself requires certain version of libfuse to be present on the target
system, otherwise it does not start at all, and because some Linux
distributions have upgraded from libfuse2 to libfuse3, this brings another
problem into the equation. The need to use old glibc for compatibility reasons
forces us to build on older distros (not to mention that we would like to
provide both x64 and arm64 builds). To summarize this all, the amount of work
required to keep our build infrastructure running is consuming resources that
we would much rather spend on PrusaSlicer itself.

Flatpak is a tool that is already proven by time, and it solves the problem
that we need to solve - it bypasses the dependency hell created by the
existence of many Linux distributions and different versions of everything.
The main idea is that the application is built against a defined runtime,
which is then downloaded on the target computer and the application is run
against it. The biggest complain people have about Flatpak is that it downloads
too much data to run a single application (although a runtime is only
downloaded once for all applications that rely on it). However, Flatpak only
does what people assume the AppImage was doing - it bundles everything. This
is not Flatpak's fault, it is really the price paid for the Linux freedom,
which effectively makes every distribution is a separately maintained platform.

Flatpak also provides better user experience regarding desktop integration and
application updates, and it is able to control permissions that the
applications have through its sandboxing mechanism. Although this may not be
appealing to all Linux users, we believe that these points are valuable to most.

Thank you for your understanding.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants