G-code generator for 3D printers (Bambu, Prusa, Voron, VzBot, RatRig, Creality, etc.) https://discord.gg/P4VE9UY9gJ
Find a file
Rodrigo Faselli 506fde8f86
Some checks are pending
Build all / Build Linux (push) Waiting to run
Build all / Build Non-Linux (push) Waiting to run
Build all / Unit Tests (push) Blocked by required conditions
Build all / Flatpak (push) Waiting to run
Shellcheck / Shellcheck (push) Waiting to run
Clipper 2 multiline Infill (#11435)
* Grid non-crossing for multiline

cleaning

Replaced negative offset logic with surface contraction to reduce overlap with perimeters.

center the infill

filltriangles

update triangles

preallocate memory

Update FillRectilinear.cpp

Update FillRectilinear.cpp

overlapp adjustment

Fix Crash

Update FillRectilinear.cpp

density tunning

density tunning

fine tunning

reserve polilines

Grid non-crossing for multiline

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-Authored-By: discip <53649486+discip@users.noreply.github.com>

* Improve multiline fill offset and polyline closure

Changed offset type from jtRound to jtMiter in multiline_fill for better geometry. Updated polyline conversion to require at least 3 points and ensured polylines are closed if not already. Updated FillGyroid, FillTpmsD, and FillTpmsFK to pass the 'close' argument to multiline_fill.

cleaning

FillAdaptive Noncross

Only use clipper if worth it

safeguard

fix overlap

Update FillRectilinear.cpp

FilllRectilineal multiline clipper

Update FillRectilinear.cpp

FilllRectilineal multiline clipper

Update FillRectilinear.cpp

Update FillRectilinear.cpp

fix 3d honeycomb

Simplify polylines

Update FillBase.cpp

Update FillBase.cpp

cleaning

Improved Multiline Function

This ensures `multiline_fill()` will correctly generate multiline infill with
closed loop polylines if the input infill line is a closedloop polyline. This
ensures that the multiline infill doesn't have little gaps or overlaps at the
"closed point" of the original infill line.

This changes how the tangent is calculated for the first and last points in a
polyline if the first and last points are the same, making it a closed loop.
Instead of just using the first or last line segment, it uses the line segment
between the points before the last point and after the first point, the same
way that all the other poly-line mid points are handled.

It also uses eigen vector operations to calculate the points instead of
explicitly calculating the x and y values. This is probably faster, and if not
then it is at least more concise.

Hibrid Multiline Function

Update FillRectilinear.cpp

Update FillRectilinear.cpp

Update FillRectilinear.cpp

Update FillRectilinear.cpp

clipperutils multiline hibrido

Update FillBase.cpp

Update FillBase.cpp

Update FillBase.cpp

multiline hibrido

arc tolerance

multiline con union

Update FillBase.cpp

Update FillBase.cpp

Update FillBase.cpp

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-Authored-By: Donovan Baarda <dbaarda@gmail.com>

* Switch multiline offset logic to Clipper2

Replaces Clipper-based multiline offset logic in FillBase.cpp with Clipper2, using InflatePaths and Union for offsetting and merging. Adds new conversion utilities in Clipper2Utils for handling Paths64 to Polygons/Polylines and updates headers accordingly.

* Refactor multiline_fill to always use Clipper2 logic

Removed the 'use_clipper' parameter from multiline_fill and updated all callers to use the new signature. The function now consistently applies Clipper2-based offset logic for multiline infill, simplifying the code and ensuring uniform behavior across fill patterns.

* Change offset join type to Round in multiline_fill

Replaces the Miter join type with Round in the InflatePaths call within multiline_fill. For smotther print travels.

* Increase max infill multiline to 10

Raised the maximum allowed value for the 'Fill Multiline' infill parameter from 5 to 10 to support more lines in infill patterns.

* Refactor multiline_fill to optimize offset logic

Replaces manual conversion of polylines to Clipper2 paths with Slic3rPolylines_to_Paths64 and filters short paths using std::remove_if. Uses ClipperOffset for path inflation and streamlines merging and conversion to polylines, improving performance and code clarity.

* half iteration because is bucle

* Funciona 1

Refactored the multiline_fill function to streamline the insertion of center lines by directly checking for odd line counts and removing redundant logic. This improves code clarity and reduces unnecessary checks.

* Refactor multiline_fill for improved offset logic

Reworked the multiline_fill function to simplify and clarify the logic for generating multiple offset lines. The new implementation computes offsets more explicitly for odd and even cases, creates a fresh ClipperOffset for each band, and improves conversion between Clipper2 paths and polylines. This enhances maintainability and correctness of the multiline fill generation.

* Quartercubic multiline

* fillplanePath

fix bounding box

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* fillconcentric multiline

Co-Authored-By: Ian Bassi <12130714+ianalexis@users.noreply.github.com>

* Update FillBase.hpp

* cleaning

* Refactor multiline_fill to clean polylines and reuse offsetter

Invalid polylines with less than two points are now removed before processing. The ClipperOffset object is created once and reused for each offset, improving efficiency and code clarity.

trigger build

* Optimize Filltrapezoidal

Refactored the trapezoidal fill pattern generation to precompute base row templates and reuse them with vertical translation, reducing redundant computations and improving code clarity. This change enhances performance and maintainability by avoiding repeated construction of row patterns within loops.

* Replace push_back with emplace_back for Polyline points

Updated Polyline point insertion from push_back to emplace_back for efficiency and clarity. Also refactored row copying logic to avoid in-place modification, improving code readability and safety.

* Update FillRectilinear.cpp

* Reserve space for poliline points

* Union not needed

* Update FillRectilinear.cpp

* unused functions

* compactado

Update FillRectilinear.cpp

* Adjust minimum rows for better performance

* Update FillRectilinear.cpp

---------

Co-authored-by: Ian Bassi <12130714+ianalexis@users.noreply.github.com>
Co-authored-by: discip <53649486+discip@users.noreply.github.com>
Co-authored-by: Donovan Baarda <dbaarda@gmail.com>
Co-authored-by: Ian Bassi <ian.bassi@outlook.com>
2025-12-23 22:53:09 +02:00
.claude/commands Fix CICD AI dedupe 2025-11-23 20:47:07 +08:00
.devcontainer Better CMake Defaults (#10294) 2025-10-25 22:05:09 +08:00
.github Bump actions/checkout from 4 to 6 (#11547) 2025-12-09 23:58:02 +08:00
.idea Merge remote-tracking branch 'BS/v1.7.2' 2023-08-26 16:13:57 +08:00
cmake Fix tests (#10906) 2025-12-08 22:42:11 +08:00
deps Update CGAL.cmake (#10850) 2025-12-23 00:44:36 +08:00
deps_src Fix emboss crash when displaying warning information (#11299) 2025-11-08 00:28:22 +08:00
localization/i18n Correct Typo (#11472) 2025-12-18 12:38:59 +00:00
resources feat: update CORE One profiles for to Prusa 2.4.2 (#11453) 2025-12-23 12:56:53 +08:00
sandboxes Support larger printer sizes by using 64-bit. 2024-05-10 23:47:08 +08:00
scripts GCode Macro: Fix placeholder parser bugs and enable tests (#11485) 2025-12-23 23:44:43 +08:00
SoftFever_doc Update Qidi logo 2024-12-12 22:21:17 +08:00
src Clipper 2 multiline Infill (#11435) 2025-12-23 22:53:09 +02:00
tests GCode Macro: Fix placeholder parser bugs and enable tests (#11485) 2025-12-23 23:44:43 +08:00
tools restore tools to git from lfs 2024-03-17 23:14:43 +08:00
.clang-format Set PointerAlignment to Left (#2948) 2023-12-01 15:32:48 +00:00
.cursorignore reenable appimage build on ubuntu 24.04 (#9458) 2025-04-24 08:13:15 +08:00
.dockerignore Refactor folder (#10475) 2025-08-22 20:02:26 +08:00
.doxygen update doxygen setting 2023-06-30 13:59:41 +08:00
.gitattributes Adds resonance avoidance ported from qidi slicer (#9403) 2025-06-16 13:14:00 +08:00
.gitignore ENH: support parts skipping function 2025-09-26 10:55:19 +08:00
AGENTS.md Revamp OrcaSlicer updater (#10884) 2025-09-28 10:33:33 +08:00
build_flatpak.sh Update GNOME runtime and SDK to version 48 (#11384) 2025-11-17 20:46:44 +08:00
build_linux.sh Fix tests (#10906) 2025-12-08 22:42:11 +08:00
build_release.bat Better CMake Defaults (#10294) 2025-10-25 22:05:09 +08:00
build_release_macos.sh Better CMake Defaults (#10294) 2025-10-25 22:05:09 +08:00
build_release_vs.bat Support Visual Studio 2026 (#11349) 2025-11-13 23:11:56 +08:00
build_release_vs2022.bat Support Visual Studio 2026 (#11349) 2025-11-13 23:11:56 +08:00
CLAUDE.md Build and run a test in CI (#10835) 2025-10-29 20:56:06 +08:00
CMakeLists.txt Update default Windows SDK include path version (Fix netfab mesh repair service for local compilation) (#11450) 2025-12-12 21:48:46 +08:00
LICENSE.txt some misc changes (#1848) 2023-08-20 20:02:54 +08:00
README.md Minor Tab.cpp redirection fixes + PowerLoss recovery link (#11608) 2025-12-12 23:32:28 +08:00
SECURITY.md Improvementes in readme and security docs (#6730) 2024-09-11 22:23:15 +08:00
version.inc Better CMake Defaults (#10294) 2025-10-25 22:05:09 +08:00

OrcaSlicer logo

SoftFever%2FOrcaSlicer | Trendshift

GitHub Repo stars Build all

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:

OrcaSlicer.com

Github Repository:

GitHub Logo

Follow us:

X Logo

Join our Discord community:

discord logo

⚠️ 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.

How to install

Windows

Download the Windows Installer exe for your preferred version from the releases page.

Windows Package Manager

winget install --id=SoftFever.OrcaSlicer -e

Mac

  1. Download the DMG for your computer: arm64 version for Apple Silicon and x86_64 for Intel CPU.

  2. Drag OrcaSlicer.app to Application folder.

  3. 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:

      • Step 1: open the app, a warning window will pop up
        mac_cant_open
      • Step 2: in System Settings -> Privacy & Security, click Open Anyway:
        mac_security_setting

Linux (Ubuntu)

  1. 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 I'm deeply grateful to all my sponsors and backers.
Their generous support enables me to purchase filaments and other essential 3D printing materials for the project.
Thank you! :)

Sponsors:

QIDI BIGTREE TECH

Backers:

Ko-fi supporters : Backers list

Support me

Some background

OrcaSlicer was originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever.

Bambu Studio is forked from PrusaSlicer by Prusa Research, which is from Slic3r by Alessandro Ranellucci and the RepRap community. OrcaSlicer incorporates a lot of features from SuperSlicer by @supermerill OrcaSlicer's logo is designed by community member Justin Levine (@freejstnalxndr).

License

  • OrcaSlicer is licensed under the GNU Affero General Public License, version 3. OrcaSlicer is based on Bambu Studio by BambuLab.
  • Bambu Studio is licensed under the GNU Affero General Public License, version 3. Bambu Studio is based on PrusaSlicer by PrusaResearch.
  • PrusaSlicer is licensed under the GNU Affero General Public License, version 3. PrusaSlicer is owned by Prusa Research. PrusaSlicer is originally based on Slic3r by Alessandro Ranellucci.
  • Slic3r is licensed under the GNU Affero General Public License, version 3. Slic3r was created by Alessandro Ranellucci with the help of many other contributors.
  • 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.