## Description
Addresses every item of @raistlin7447's review of 2026-10-07 on #14394
(https://github.com/OrcaSlicer/OrcaSlicer/pull/14394#pullrequestreview-5447529307),
one commit per item, plus a follow-up commit from a second adversarial
pass over the result.
**Organic supports (the one non-belt difference raistlin's export
fixtures found).** The debug-strip commit dda58b07cd had deleted the
loop in `organic_draw_branches()` that trims every branch slice against
the collision volume, the bed and the belt plane. It is restored exactly
as on `main` (plus the belt-floor clip). New test: a cube carrying a 60
mm plate, organic supports, flat-bed printer; on every support layer no
support extrusion may come within 0.2 mm of the part's slice. To be
clear about what it proves: it guards that invariant, but on this
fixture the loop's own effect is a sub-millimetre reshaping of one
branch (checked by running the test with the loop compiled out), so the
test does not by itself fail without the loop. The loop's effect is
shown separately by slicing six organic fixtures with the stripped and
the restored binary (CLI): on a plate-over-cube fixture the stripped
build brings a branch to 0.02 mm from the part's slice at the cube's
corner where the restored build keeps 0.39 mm; the Bulbasaur project
differs in ~2000 support lines; a fixture with no wall near the branches
is byte-identical.
**G-code (belt only).**
- First-layer speed test: the writer passes points with the plate origin
already removed, so only the instance part of `m_origin` is subtracted
now.
- The mixed-filament sub-layer pass calls `on_set_origin()` like the
main instance loop.
- `m_belt_in_band` is reset per object in by-object printing, with the
cooling buffer.
- `m_layer_count` counts only the layers that are written, through the
same predicate `collect_layers_to_print()` uses
(`belt_object_layer_prints_something()`); the by-object overload drops
the empty belt layers as well, so both print sequences write the same
layer changes. The empty-layers test now runs for both sequences and
checks `; total layers count` too. Side effect worth knowing: with the
empty entries dropped per object, a multi-filament belt layer no longer
selects a filament it then prints nothing with. On belt_project.3mf (two
filaments, belt purge tower) the T commands go from 472 to 106 with the
extruded length per filament unchanged; every removed tool change was
followed by no extrusion.
**Invalidation / ordering.**
- `posSlice` now also invalidates `posDetectOverhangsForLift` (not
belt-gated: a re-slice starts the layers over with empty overhang
regions while the step stayed done; this makes an incremental re-slice
match a fresh slice).
- `btLeadingEdgeOnly` takes part in the layer-0 outer-wall-first rule
and the matching `brim_type` → `posPerimeters` rule (not belt-gated:
`Print.cpp` already prints it as an outer brim on a flat bed).
- Adding or removing an object invalidates the support step of the other
belt-brim owners, so their brims are clipped against what is on the
plate now.
**Belt brim (found during the GUI pass, pre-existing since #16236).**
"Leading edge only" produced no brim at all: the cut that narrows the
outer brim to the first contact was taken at `layers().front()`, which
since the lead-in change is an empty layer whose contact lies ahead of
the part, so the whole region was clipped away. The cut is now taken at
the first layer with geometry; `leading_edge_only` joins the
all-brim-types test and a new test checks the brim starts no later than
the part and covers fewer layers than the outer brim.
**UI.** Build plate tilt X/Y are read-only on a belt printer (they are
derived from the belt tilt). The belt temperature tower refuses a range
without an embossed model, before the project is replaced, instead of
falling back to the 230–190 model.
**Strings, dead code, comments.** Tooltip and comment say cot and
1/|sin| (what `MachineFrameTransform.cpp` does); `gcode_remap_*` labels
and tooltips are `L("literal")` so they are extracted; removed
`belt_remapped_bbox()`, `belt_min_z()`, `m_belt_global_xy_correction`,
`LayerTools::has_belt_brim`, the `belt_surface_z` constant, and (second
pass) the unused kinematics inverse (`to_logical`,
`apply_axis_remap_inverse`, `to_build_volume` and their state), the
`world_coordinates()`, `is_active()` and `belt_brim_areas_by_layer()`
accessors and two unused overloads; rewrote the comments that still
described removed code (BeltBrim.cpp SEQUENCING, GCodeWriter.hpp,
calib.cpp/hpp, GCode.hpp, BeltSliceStrategy, PrintObjectSlice.cpp,
PrintApply.cpp).
Not changed, noted for a follow-up: the outer-wall-first rule keys on
numeric layer 0, which on a belt is usually an empty lead-in layer, so
the part's first contact layer does not get the rule; and a
leading-length-only brim (zero base width) is excluded by the
`brim_width > 0` test. Both need a geometry-based rule rather than a
one-line change.
## Screenshots/Recordings/Graphs
Build plate tilt fields greyed out on a belt printer, the temperature
tower error dialog, and the brim before/after deleting a neighbouring
object are attached below (from the Xvfb GUI pass).
## Tests
- `fff_print_tests`: all cases pass (includes the new organic test and
the extended empty-layers test in both print sequences);
`libslic3r_tests` pass.
- Organic test run with the loop compiled out (temporary local switch):
passes either way on this fixture, see above; the CLI comparison on six
fixtures is where the loop's effect is visible.
- `OrcaSlicer_profile_validator -s` on the belt vendors and Prusa as
control; `scripts/orca_profile_tool.py check`; profile tool unit tests
(281).
- `scripts/clang_tidy_diff.py` against `belt-printer`: clean.
- GUI pass on Xvfb (Linux): tilt fields greyed/editable with belt
on/off; temperature tower error for 250–200 leaves the project
untouched, 230–190 loads the tower; multi-colour demo by layer 595
slider layers = 595 layer changes with matching labels and no greying
while dragging; two cubes by object 314 = 314; outer brim complete after
deleting the neighbouring cube; organic supports clear of the part on
the belt preset and on a flat-bed variant; raw G-code toggle via menu
and `B` keeps the slider index; no crash or assert in the logs. The
leading-edge brim finding from this pass is fixed above.
OS: Linux (Ubuntu), GCC, local build. Written with AI assistance (Claude
Code), every change reviewed and tested locally as listed.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
OrcaSlicer: an open source Next-Gen Slicing Software for Precision 3D Prints.
Optimize your prints with ultra-fast slicing, intelligent support generation, and seamless printer compatibility—engineered for perfection.
Official links and community
Official Website:
Github Repository:
Follow us:
Join our Discord community:
|
⚠️ CAUTION: Several clickbait and malicious websites, such as orca-slicer[.]com and orcaslicer[.]net, are pretending to be the official OrcaSlicer site. These sites may redirect you to dangerous downloads or contain misleading information. Our only official website is www.orcaslicer.com. If you come across any of these in search results, please report them as unsafe or phishing to help keep the community secure with: - Google Safe Browsing - Microsoft Security Intelligence - IPThreat |
Main features
- Advanced Calibration Tools
Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance. - Precise Wall and Seam Control
Adjust outer wall spacing and apply scarf seams to enhance print accuracy. - Sandwich Mode and Polyholes Support
Use varied infill patterns and accurate hole shapes for improved clarity. - Overhang and Support Optimization
Modify geometry for printable overhangs with precise support placement. - Granular Controls and Customization
Fine-tune print speed, layer height, pressure, and temperature with precision. - Network Printer Support
Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control. - Mouse Ear Brims & Adaptive Bed Mesh
Automatic brims and adaptive mesh calibration ensure consistent adhesion. - User-Friendly Interface
Intuitive drag-and-drop design with pre-made profiles for popular printers. - Open-Source & Community Driven
Regular updates fueled by continuous community contributions. - Wide Printer Compatibility
Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more. - Additional features can be found in the change notes.
Wiki
The wiki aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
Download
Stable Release
📥 Download the Latest Stable Release
Visit our GitHub Releases page for the latest stable version of OrcaSlicer, recommended for most users.
Nightly Builds
🌙 Download the Latest Nightly Build
Explore the latest developments in OrcaSlicer with our nightly builds. Feedback on these versions is highly appreciated.
Belt Printer Builds
The nightly release ships two parallel builds: the standard build and a belt-printer build. Both are attached to the same release — tell them apart by the filename suffix:
- Standard — no suffix (e.g.
OrcaSlicer_Windows_Installer_x64_nightly.exe) - Belt —
_beltsuffix (e.g.OrcaSlicer_Windows_Installer_x64_nightly_belt.exe)
The _belt builds add experimental support for belt / conveyor (infinite-Z) printers, where the model is sliced against a tilted belt surface instead of a flat horizontal bed. They include ready-to-use belt printer profiles, the full belt slicing pipeline (mesh rotation and G-code transforms), belt-aware support generation, and a tilted-bed preview.
⚠️ Belt printer support is under active development and is not yet merged into
main— it currently ships only in these parallel_beltbuilds, produced from thebelt-printerbranch. See tracking PR #14394 and the original documentation in #12998.
How to install
Windows
Download the Windows Installer exe for your preferred version from the releases page. Both x64 and arm64 installers are published — pick the one matching your CPU.
-
For convenience there is also a portable build available.
Troubleshooting
- If you have troubles to run the build, you might need to install following runtimes:
- MicrosoftEdgeWebView2RuntimeInstallerX64
- vcredist2019_x64
- Alternative Download Link Hosted by Microsoft
- This file may already be available on your computer if you've installed visual studio. Check the following location:
%VCINSTALLDIR%Redist\MSVC\v142
Microsoft Store
Install from the Microsoft Store when you prefer a Store-signed package (helps on Windows 11 Smart App Control).
Windows Package Manager
winget install --id=SoftFever.OrcaSlicer -e
Mac
-
Download the universal DMG, which runs on both Apple Silicon and Intel Macs.
-
Drag OrcaSlicer.app to Application folder.
-
If you want to run a build from a PR, you also need to follow the instructions below:
Quarantine
-
Option 1 (You only need to do this once. After that the app can be opened normally.):
- Step 1: Hold cmd and right click the app, from the context menu choose Open.
- Step 2: A warning window will pop up, click Open
-
Option 2: Execute this command in terminal:
xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app -
Option 3:
-
Homebrew Cask
brew install --cask orcaslicer
The Homebrew cask installs the official macOS DMG from GitHub Releases.
Linux
Flathub (Recommended)
OrcaSlicer is available through FlatHub:
Install from the command line:
flatpak install flathub com.orcaslicer.OrcaSlicer
flatpak run com.orcaslicer.OrcaSlicer
It can also be installed through graphical software managers (KDE Discover, GNOME Software, etc.) when Flathub is enabled. Search for OrcaSlicer in your software center.
AppImage
AppImages are published for both x86_64 and aarch64 (ARM64). Pick the file matching your CPU — the ARM64 build has aarch64 in its name (e.g. OrcaSlicer_Linux_AppImage_Ubuntu2404_aarch64_*.AppImage).
-
Download App image from the releases page.
-
Double click the downloaded file to run it.
-
If you run into trouble executing it, try this command in the terminal:
chmod +x /path_to_appimage/OrcaSlicer_Linux.AppImage
How to Compile
All updated build instructions for Windows, macOS, and Linux are now available on the official OrcaSlicer Wiki - How to build page.
Please refer to the wiki to ensure you're following the latest and most accurate steps for your platform.
Klipper Note
If you're running Klipper, it's recommended to add the following configuration to your printer.cfg file.
# Enable object exclusion
[exclude_object]
# Enable arcs support
[gcode_arcs]
resolution: 0.1
Supports
OrcaSlicer is an open-source project, and we're deeply grateful to all our sponsors and backers.
Their generous support helps fund filaments and other essential 3D printing materials for the project.
Thank you! :)
Sponsors
|
|
Backers:
Ko-fi supporters ☕: Backers list
Support the project
Some Background
Open-source slicing has always been built on a tradition of collaboration and attribution. Slic3r, created by Alessandro Ranellucci and the RepRap community, laid the foundation. PrusaSlicer by Prusa Research built on Slic3r and acknowledged that heritage. Bambu Studio in turn forked from PrusaSlicer, and SuperSlicer by @supermerill extended PrusaSlicer with community-driven enhancements. Each project carried the work of its predecessors forward, crediting those who came before.
OrcaSlicer began in that same spirit, drawing from BambuStudio, PrusaSlicer, and ideas inspired by CuraSlicer and SuperSlicer. But it has since grown far beyond its origins. Through relentless innovation — introducing advanced calibration tools, precise wall and seam control, tree supports, adaptive slicing, and hundreds of other features — OrcaSlicer has become the most widely used and actively developed open-source slicer in the 3D printing community. Many of its innovations have been adopted by other slicers, making it a driving force for the entire industry.
The OrcaSlicer logo was designed by community member Justin Levine.
License
- OrcaSlicer is licensed under the GNU Affero General Public License, version 3.
- The GNU Affero General Public License, version 3 ensures that if you use any part of this software in any way (even behind a web server), your software must be released under the same license.
- OrcaSlicer includes a pressure advance calibration pattern test adapted from Andrew Ellis' generator, which is licensed under GNU General Public License, version 3. Ellis' generator is itself adapted from a generator developed by Sineos for Marlin, which is licensed under GNU General Public License, version 3.
- The Bambu networking plugin is based on non-free libraries from BambuLab. It is optional to the OrcaSlicer and provides extended functionalities for Bambulab printer users.


