diff --git a/README.md b/README.md index c162a11aad..5b49cf60db 100644 --- a/README.md +++ b/README.md @@ -37,10 +37,8 @@ If you come across any of these in search results, please report them as unsafe - - # Main features - **[Advanced Calibration Tools](https://github.com/SoftFever/OrcaSlicer/wiki/Calibration)** @@ -48,7 +46,7 @@ If you come across any of these in search results, please report them as unsafe - **[Precise Wall](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#precise-wall) and [Seam Control](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_seam)** Adjust outer wall spacing and apply scarf seams to enhance print accuracy. - **[Sandwich Mode](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_wall_and_surfaces#innerouterinner) and [Polyholes](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_precision#polyholes) Support** - Use varied infill patterns and accurate hole shapes for improved clarity. + Use varied infill [patterns](https://github.com/SoftFever/OrcaSlicer/wiki/strength_settings_patterns) and accurate hole shapes for improved clarity. - **[Overhang](https://github.com/SoftFever/OrcaSlicer/wiki/quality_settings_overhangs) and [Support Optimization](https://github.com/SoftFever/OrcaSlicer/wiki#support-settings)** Modify geometry for printable overhangs with precise support placement. - **[Granular Controls](https://github.com/SoftFever/OrcaSlicer/wiki#process-settings) and Customization** @@ -77,16 +75,19 @@ Please note that the wiki is a work in progress. We appreciate your patience as # Download ## Stable Release + 📥 **[Download the Latest Stable Release](https://github.com/SoftFever/OrcaSlicer/releases/latest)** -Visit our GitHub Releases page for the latest stable version of Orca Slicer, recommended for most users. +Visit our GitHub Releases page for the latest stable version of OrcaSlicer, recommended for most users. ## Nightly Builds -🌙 **[Download the Latest Nightly Build](https://github.com/SoftFever/OrcaSlicer/releases/tag/nightly-builds)** -Explore the latest developments in Orca Slicer with our nightly builds. Feedback on these versions is highly appreciated. +🌙 **[Download the Latest Nightly Build](https://github.com/SoftFever/OrcaSlicer/releases/tag/nightly-builds)** +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](https://github.com/SoftFever/OrcaSlicer/releases). - *For convenience there is also a portable build available.* @@ -102,15 +103,18 @@ Download the **Windows Installer exe** for your preferred version from the [rel - This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142` -Windows Package Manager: +Windows Package Manager + ```shell -winget install --id=SoftFever.OrcaSlicer --exact +winget install --id=SoftFever.OrcaSlicer -e ``` -## Mac: +## 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 @@ -120,27 +124,33 @@ winget install --id=SoftFever.OrcaSlicer --exact - Option 2: Execute this command in terminal: + ```shell - xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app` + xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app ``` + - Option 3: - Step 1: open the app, a warning window will pop up ![mac_cant_open](./SoftFever_doc/mac_cant_open.png) - - Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`: + - Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`: ![mac_security_setting](./SoftFever_doc/mac_security_setting.png)
-## Linux (Ubuntu): +## 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](https://github.com/SoftFever/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: +# Klipper Note + If you're running Klipper, it's recommended to add the following configuration to your `printer.cfg` file. + ```gcode # Enable object exclusion [exclude_object] @@ -151,11 +161,13 @@ resolution: 0.1 ``` # Supports -**Orca Slicer** is an open-source project and I'm deeply grateful to all my sponsors and backers. + +**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: +
@@ -172,31 +184,29 @@ Thank you! :)
## Backers: + **Ko-fi supporters** ☕: [Backers list](https://github.com/user-attachments/files/16147016/Supporters_638561417699952499.csv) ## Support me + ## Some background + OrcaSlicer was originally forked from Bambu Studio, it was previously known as BambuStudio-SoftFever. [Bambu Studio](https://github.com/bambulab/BambuStudio) is forked from [PrusaSlicer](https://github.com/prusa3d/PrusaSlicer) by Prusa Research, which is from [Slic3r](https://github.com/Slic3r/Slic3r) by Alessandro Ranellucci and the RepRap community. -Orca Slicer incorporates a lot of features from [SuperSlicer](https://github.com/supermerill/SuperSlicer) by @supermerill -Orca Slicer's logo is designed by community member Justin Levine(@freejstnalxndr). +OrcaSlicer incorporates a lot of features from [SuperSlicer](https://github.com/supermerill/SuperSlicer) by @supermerill +OrcaSlicer's logo is designed by community member Justin Levine (@freejstnalxndr). # License -**Orca Slicer** is licensed under the GNU Affero General Public License, version 3. Orca Slicer 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. - -Orca Slicer 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 Orca Slicer and provides extended functionalities for Bambulab printer users. +- **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. diff --git a/doc/Home.md b/doc/Home.md index 702f2e2cfc..325cf1193d 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -1,10 +1,9 @@ # Welcome to the OrcaSlicer WIKI! -Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki page aims to provide an detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer. +OrcaSlicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki page aims to provide an detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer. - [Printer Settings](#printer-settings) - [Material Settings](#material-settings) -- [Prepare](#prepare) - [Process Settings](#process-settings) - [Quality Settings](#quality-settings) - [Strength Settings](#strength-settings) @@ -12,17 +11,23 @@ Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wik - [Support Settings](#support-settings) - [Multimaterial Settings](#multimaterial-settings) - [Others Settings](#others-settings) +- [Prepare](#prepare) - [Calibrations](#calibrations) - [Developer Section](#developer-section) +> [!WARNING] +> This wiki is community-maintained. +> Some pages may be **outdated** while others may be **newer** and present only in [nightly build](https://github.com/SoftFever/OrcaSlicer/releases/tag/nightly-builds) or [latest release](https://github.com/SoftFever/OrcaSlicer/releases). + > [!NOTE] -> The Wiki is **Work In Progress** so bear with us while we get it up and running! > Please consider contributing to the wiki following the [How to contribute to the wiki](How-to-wiki) guide. ## Printer Settings ![printer-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/printer-preset.png?raw=true) +![printer](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/printer.svg?raw=true) Settings related to the 3D printer hardware and its configuration. + - [Air filtration/Exhaust fan handling](air-filtration) - [Auxiliary fan handling](Auxiliary-fan) - [Chamber temperature control](chamber-temperature) @@ -33,20 +38,16 @@ Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wik ![filament-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/filament-preset.png?raw=true) +![filament](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/filament.svg?raw=true) Settings related to the 3D printing material. + - [Single Extruder Multimaterial](semm) - [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient) -## Prepare - -First steps to prepare your model/s for printing. - -- [STL Transformation](stl-transformation) - ## Process Settings ![process-preset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/GUI/process-preset.png?raw=true) -The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results. +![process](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/process.svg?raw=true) Settings related to the 3D printing process. ### Quality Settings @@ -69,6 +70,7 @@ The below sections provide a detailed settings explanation as well as tips and t - ![param_wall](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_wall.svg?raw=true) [Walls](strength_settings_walls) - ![param_shell](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_shell.svg?raw=true) [Top and Bottom Shells](strength_settings_top_bottom_shells) - ![param_infill](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_infill.svg?raw=true) [Infill](strength_settings_infill) + - ![param_concentric](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_concentric.svg?raw=true) [Fill Patterns](strength_settings_patterns) - ![param_gcode](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_gcode.svg?raw=true) [Template Metalanguage for infill rotation](strength_settings_infill_rotation_template_metalanguage) - ![param_advanced](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced](strength_settings_advanced) @@ -117,9 +119,15 @@ The below sections provide a detailed settings explanation as well as tips and t - ![param_gcode](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_gcode.svg?raw=true) [Post Processing Scripts](others_settings_post_processing_scripts) - ![note](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/note.svg?raw=true) [Notes](others_settings_notes) +## Prepare + +![tab_3d_active](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/tab_3d_active.svg?raw=true) First steps to prepare your model/s for printing. + +- [STL Transformation](stl-transformation) + ## Calibrations -The [Calibration Guide](Calibration) outlines Orca’s key calibration tests and their suggested order of execution. +![tab_calibration_active](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/tab_calibration_active.svg?raw=true) The [Calibration Guide](Calibration) outlines Orca’s key calibration tests and their suggested order of execution. - [Temperature](temp-calib) - [Flow Rate](flow-rate-calib) @@ -135,9 +143,9 @@ The [Calibration Guide](Calibration) outlines Orca’s key calibration tests and ## Developer Section -This is a documentation from someone exploring the code and is by no means complete or even completely accurate. Please edit the parts you might find inaccurate. This is probably going to be helpful nonetheless. +![im_code](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/im_code.svg?raw=true) This is a documentation from someone exploring the code and is by no means complete or even completely accurate. Please edit the parts you might find inaccurate. This is probably going to be helpful nonetheless. -- [How to build Orca Slicer](How-to-build) +- [How to build OrcaSlicer](How-to-build) - [Localization and translation guide](Localization_guide) - [How to create profiles](How-to-create-profiles) - [How to contribute to the wiki](How-to-wiki) diff --git a/doc/calibration/Calibration.md b/doc/calibration/Calibration.md index 685b294d07..bc1e5b6a10 100644 --- a/doc/calibration/Calibration.md +++ b/doc/calibration/Calibration.md @@ -1,10 +1,10 @@ # Calibration Guide -This guide offers a structured and comprehensive overview of the calibration process for Orca Slicer. +This guide offers a structured and comprehensive overview of the calibration process for OrcaSlicer. It covers key aspects such as flow rate, pressure advance, temperature towers, retraction tests, and advanced calibration techniques. Each section includes step-by-step instructions and visuals to help you better understand and carry out each calibration effectively. -To access the calibration features, you can find them in the **Calibration** section of the Orca Slicer interface. +To access the calibration features, you can find them in the **Calibration** section of the OrcaSlicer interface. ![calibration](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/calibration.png?raw=true) diff --git a/doc/calibration/adaptive-pressure-advance-calib.md b/doc/calibration/adaptive-pressure-advance-calib.md index 40208a7f08..a6ed751626 100644 --- a/doc/calibration/adaptive-pressure-advance-calib.md +++ b/doc/calibration/adaptive-pressure-advance-calib.md @@ -153,7 +153,7 @@ Refer to [Calibration Guide](Calibration) for more details on batch mode calibra #### OrcaSlicer 2.2.0 and older -Setup your PA test as usual from the calibration menu in Orca slicer. Once setup, your PA test should look like the below: +Setup your PA test as usual from the calibration menu in OrcaSlicer. Once setup, your PA test should look like the below: ![apa-setup-result-speed](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/apa-setup-result-speed.png?raw=true) diff --git a/doc/calibration/cornering-calib.md b/doc/calibration/cornering-calib.md index 9baed365be..4ce4a1b2dd 100644 --- a/doc/calibration/cornering-calib.md +++ b/doc/calibration/cornering-calib.md @@ -1,6 +1,6 @@ # Cornering -Cornering is a critical aspect of 3D printing that affects the quality and accuracy of prints. It refers to how the printer handles changes in direction during movement, particularly at corners and curves. Proper cornering settings can help reduce artifacts like ringing, ghosting, and overshooting, leading to cleaner and more precise prints. +Cornering is a critical aspect of 3D printing that affects print quality and accuracy. It's how the printer handles changes in direction during movement, particularly at corners and curves. Proper cornering settings can reduce artifacts such as ringing, ghosting, and overshooting, resulting in cleaner and more precise prints. ## Jerk @@ -8,45 +8,35 @@ TODO: Jerk calibration not implemented yet. ## Junction Deviation -Junction Deviation is the default method for controlling cornering speed in MarlinFW (Marlin2) printers. -Higher values result in more aggressive cornering speeds, while lower values produce smoother, more controlled cornering. -The default value in Marlin is typically set to 0.08mm, which may be too high for some printers, potentially causing ringing. Consider lowering this value to reduce ringing, but avoid setting it too low, as this could lead to excessively slow cornering speeds. +Junction Deviation is the default method for controlling cornering speed in **Marlin firmware (Marlin 2.x)**. +Higher values allow more aggressive cornering, while lower values produce smoother, more controlled corners. +The default value in Marlin is often `0.08mm`, which may be too high for some printers and may cause ringing. Consider lowering this value to reduce ringing, but avoid setting it too low that could lead to excessively slow cornering speed. ```math -JD = 0,4 \cdot \frac{\text{Jerk}^2}{\text{Accel.}} +JD = 0.4 \cdot \frac{\text{Jerk}^2}{\text{Acceleration}} ``` 1. Pre-requisites: - 1. Check if your printer has Junction Deviation enabled. You can do this by sending the command `M503` to your printer and looking for the line `Junction deviation: 0.25`. + 1. Check if your printer has Junction Deviation enabled. Look for `Junction deviation` in the printer's advanced settings. 2. In OrcaSlicer, set: 1. Acceleration high enough to trigger ringing (e.g., 2000 mm/s²). 2. Speed high enough to trigger ringing (e.g., 100 mm/s). - 3. Use an opaque, high-gloss filament to make the ringing more visible. -2. You need to print the Junction Deviation test. - + 3. Use an opaque, high-gloss filament to make ringing more visible. +2. You need to print the Junction Deviation test. ![jd_first_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_menu.png?raw=true) - - 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer. - - ![jd_first_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_print_measure.jpg?raw=true) - ![jd_first_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_slicer_measure.png?raw=true) - - 2. It’s very likely that you’ll need to set values lower than 0.08 mm, as shown in the previous example. To determine a more accurate maximum JD value, you can print a new calibration tower with a maximum value set at the point where the corners start losing sharpness. - 3. Print the second Junction Deviation test with the new maximum value. - - ![jd_second_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_menu.png?raw=true) - - 4. Measure the X and Y heights and read the frequency set at that point in Orca Slicer. - - ![jd_second_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_print_measure.jpg?raw=true) - ![jd_second_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_slicer_measure.png?raw=true) - + 1. Measure the X and Y heights and read the frequency set at that point in OrcaSlicer. + ![jd_first_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_print_measure.jpg?raw=true) + ![jd_first_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_slicer_measure.png?raw=true) + 2. You will likely need values lower than `0.08mm`, as in the example. To find a better maximum JD value, print a new calibration tower with a maximum set near the point where corners start losing sharpness. + 3. Print the second Junction Deviation test with the new maximum value. + ![jd_second_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_menu.png?raw=true) + 4. Measure the X and Y heights and read the frequency set at that point in OrcaSlicer. + ![jd_second_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_print_measure.jpg?raw=true) + ![jd_second_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_slicer_measure.png?raw=true) 3. Save the settings - 1. Set your Maximum Junction Deviation value in [Printer settings/Motion ability/Jerk limitation]. - - ![jd_printer_jerk_limitation](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png?raw=true) - - 2. Use the following G-code to set the mm: + 1. Set your Maximum Junction Deviation value in [Printer settings/Motion ability/Jerk limitation]. + ![jd_printer_jerk_limitation](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png?raw=true) + 2. Use the following G-code to set the value: ```gcode M205 J#JunctionDeviationValue @@ -67,7 +57,7 @@ JD = 0,4 \cdot \frac{\text{Jerk}^2}{\text{Accel.}} #define JUNCTION_DEVIATION_MM 0.012 // (mm) Distance from real junction edge ``` - 2. Check Classic Jerk is disabled (commented). + 2. Ensure Classic Jerk is disabled (commented out): ```cpp //#define CLASSIC_JERK diff --git a/doc/calibration/flow-rate-calib.md b/doc/calibration/flow-rate-calib.md index ce40c927a8..21fd73d93a 100644 --- a/doc/calibration/flow-rate-calib.md +++ b/doc/calibration/flow-rate-calib.md @@ -1,9 +1,11 @@ -# Flow rate -The Flow Ratio determines how much filament is extruded and plays a key role in achieving high-quality prints. A properly calibrated flow ratio ensures consistent layer adhesion and accurate dimensions. +# Flow Rate Calibration -- Too **low** flow ratio will cause under-extrusion, leading to gaps, weak layers, and poor structural integrity. -- Too **high** flow ratio can cause over-extrusion, resulting in excess material, rough surfaces, and dimensional inaccuracies. +Flow ratio determines how much filament is extruded and is crucial for high-quality prints. +A properly calibrated flow ratio ensures consistent layer adhesion and accurate dimensions. + +- Too **low** flow ratio causes under-extrusion, which leads to gaps, weak layers, and poor structural integrity. +- Too **high** flow ratio causes over-extrusion, resulting in excess material, rough surfaces, and dimensional inaccuracies. - [Calibration Types](#calibration-types) - [OrcaSlicer \> 2.3.0 Archimedean chords + YOLO (Recommended)](#orcaslicer--230-archimedean-chords--yolo-recommended) @@ -11,55 +13,67 @@ The Flow Ratio determines how much filament is extruded and plays a key role in - [Credits](#credits) > [!WARNING] -> **Bambulab Printers:** make sure you do not select the 'Flow calibration' option. +> **BambuLab Printers:** Make sure you do **not** select the 'Flow calibration' option. > ![flowrate-Bambulab-uncheck](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png?raw=true) > [!NOTE] -> After v2.3.0, the [Top Pattern](strength_settings_top_bottom_shells#surface-pattern) changed to [Archimedean chords](strength_settings_infill#archimedean-chords) from Monotonic Line. +> After v2.3.0, the [Top Pattern](strength_settings_top_bottom_shells#surface-pattern) changed to [Archimedean chords](strength_settings_patterns#archimedean-chords) from [Monotonic Line](strength_settings_patterns#monotonic-line). ## Calibration Types -- **2-Pass Calibration:** Old method using two passes to determine the optimal flow rate using the formula `FlowRatio_old*(100 + modifier)/100`. -- **YOLO:** Simplified method that adjusts the flow rate in a single pass using the formula `FlowRatio_old±modifier`. - - **Recommended:** Calibration range `[-0.05, +0.05]`, flow rate step is `0.01`. - - **Perfectionist Version:** Calibration range `[-0.04, +0.035]`, flow rate step is `0.005`. +- **YOLO:** A simplified method that adjusts the flow rate in a single pass using the formula `OldFlowRatio ± modifier`. + - **Recommended:** calibration range `[-0.05, +0.05]`, flow rate step `0.01`. + - **Perfectionist:** calibration range `[-0.04, +0.035]`, flow rate step `0.005`. +- **2-Pass Calibration:** the legacy method, using two passes to determine the optimal flow rate with the formula `OldFlowRatio * (100 + modifier) / 100`. ### OrcaSlicer > 2.3.0 Archimedean chords + YOLO (Recommended) -This example demonstrates the use of [Archimedean chords](strength_settings_infill#archimedean-chords) for flow rate calibration using the YOLO (Recommended) method. +This method uses the [Archimedean Chords](strength_settings_patterns#archimedean-chords) pattern for flow rate calibration with the YOLO (Recommended) approach. -WIP... +1. Select the printer and the filament you want to calibrate. + This method is based on the filament's current flow ratio, so make sure you select the correct filament before proceeding. +2. In the `Calibration` menu, under the `Flow Rate` section, select `YOLO (Recommended)`. +3. A new project with eleven blocks will be created, each with a different flow rate modifier. Slice and print the project. + ![flowcalibration-yolo](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-yolo.gif?raw=true) +4. Examine the printed blocks and identify the one with the best surface quality. Look for: + 1. The smoothest top surface. + 2. No visible gaps between the pattern arcs. + 3. Minimal or no visible line between the Inner Spiral and the Outer Arcs. + ![flowcalibration-guide](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-guide.png?raw=true) + In this example, the block with a flow modifier of `+0.01` produced the best results, despite a visible line between the Inner Spiral and the Outer Arcs; reducing the flow further begins to show gaps between the lines. + ![flowcalibration-example](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-example.png?raw=true) +5. Update the flow ratio in the filament settings using the equation: `OldFlowRatio ± modifier`. + If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+0.01`, the new value would be: `0.98 + 0.01 = 0.99`. + **Remember** to save the filament profile. + ![flowcalibration_update_flowrate](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration_update_flowrate.png?raw=true) -![flowcalibration-yolo](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-yolo.gif?raw=true) +> [!NOTE] +> The new Archimedean chords pattern uses a specific print order that prints the inner spiral last so you can check for material accumulation on the contact line at the end. ### OrcaSlicer <= 2.3.0 Monotonic Line + 2-Pass Calibration -This example demonstrates the use of Monotonic Line for flow rate calibration using the 2-Pass Calibration method. +This example uses the Monotonic Line pattern with the 2-Pass Calibration approach. ![flow-calibration-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flow-calibration-monotonic.gif?raw=true) -Calibrating the flow rate involves a two-step process. - -1. Select the printer, filament, and process you would like to use for the test. -2. Select `Pass 1` in the `Calibration` menu -3. A new project consisting of nine blocks will be created, each with a different flow rate modifier. Slice and print the project. +1. Select the printer, filament, and process you want to use for the test. +2. In the `Calibration` menu, under the `Flow Rate` section, select `Pass 1`. +3. A new project with nine blocks will be created, each with a different flow rate modifier. Slice and print the project. 4. Examine the blocks and determine which one has the smoothest top surface. - ![flowrate-pass1-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg?raw=true) - + ![flowrate-pass1-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg?raw=true) ![flowrate-0-5-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg?raw=true) - -5. Update the flow ratio in the filament settings using the following equation: `FlowRatio_old*(100 + modifier)/100`. If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value should be calculated as follows: `0.98x(100+5)/100 = 1.029`. **Remember** to save the filament profile. -6. Perform the `Pass 2` calibration. This process is similar to `Pass 1`, but a new project with ten blocks will be generated. The flow rate modifiers for this project will range from `-9 to 0`. -7. Repeat steps 4. and 5. In this case, if your previous flow ratio was 1.029 and you selected the block with a flow rate modifier of -6, the new value should be calculated as follows: `1.029x(100-6)/100 = 0.96726`. **Remember** to save the filament profile. - -![flowrate-pass2-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg?raw=true) - -![flowrate-6-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg?raw=true) - -![flowcalibration_update_flowrate](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration_update_flowrate.png?raw=true) +5. Update the flow ratio in the filament settings using the equation: `OldFlowRatio * (100 + modifier) / 100`. + For example, if your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value would be: `0.98 × (100 + 5) / 100 = 1.029`. + **Remember** to save the filament profile. +6. Perform the `Pass 2` calibration. This process is similar to `Pass 1`, but a new project with ten blocks will be generated. The flow rate modifiers for this project will range from `-9` to `0`. +7. Repeat steps 4 and 5. For example, if your previous flow ratio was `1.029` and you selected the block with a flow rate modifier of `-6`, the new value would be: `1.029 × (100 - 6) / 100 = 0.96726`. + **Remember** to save the filament profile. + ![flowrate-pass2-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg?raw=true) + ![flowrate-6-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg?raw=true) + ![flowcalibration_update_flowrate_monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowcalibration_update_flowrate_monotonic.png?raw=true) > [!TIP] -> @ItsDeidara has made a html to help with the calculation. Check it out if those equations give you a headache [here](https://github.com/ItsDeidara/Orca-Slicer-Assistant). +> @ItsDeidara has created an HTML tool to help with these calculations. Check it out if you find the equations confusing: [Orca-Slicer-Assistant](https://github.com/ItsDeidara/Orca-Slicer-Assistant). ## Credits diff --git a/doc/calibration/input-shaping-calib.md b/doc/calibration/input-shaping-calib.md index 10f50943f2..fd0dfcc0b1 100644 --- a/doc/calibration/input-shaping-calib.md +++ b/doc/calibration/input-shaping-calib.md @@ -39,7 +39,7 @@ Ussualy the recommended values modes are `MZV` or `EI` for Delta printers. ![IS_freq_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_menu.png?raw=true) - 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer. + 1. Measure the X and Y heights and read the frequency set at that point in OrcaSlicer. ![IS_damp_klipper_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_klipper_print_measure.jpg?raw=true) ![IS_freq_klipper_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_klipper_slicer_measure.png?raw=true) @@ -53,7 +53,7 @@ Ussualy the recommended values modes are `MZV` or `EI` for Delta printers. ![IS_damp_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_menu.png?raw=true) - 1. Measure the X and Y heights and read the damping set at that point in Orca Slicer. + 1. Measure the X and Y heights and read the damping set at that point in OrcaSlicer. ![IS_damp_klipper_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_klipper_print_measure.jpg?raw=true) ![IS_damp_klipper_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_klipper_slicer_measure.png?raw=true) @@ -87,7 +87,7 @@ ZV Input Shaping introduces an anti-vibration signal into the stepper motion for ![IS_freq_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_menu.png?raw=true) - 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer. + 1. Measure the X and Y heights and read the frequency set at that point in OrcaSlicer. ![IS_freq_marlin_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg?raw=true) ![IS_freq_marlin_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_marlin_slicer_measure.png?raw=true) @@ -101,7 +101,7 @@ ZV Input Shaping introduces an anti-vibration signal into the stepper motion for ![IS_damp_menu](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_menu.png?raw=true) - 1. Measure the X and Y heights and read the damping set at that point in Orca Slicer. + 1. Measure the X and Y heights and read the damping set at that point in OrcaSlicer. ![IS_damp_marlin_print_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg?raw=true) ![IS_damp_marlin_slicer_measure](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_marlin_slicer_measure.png?raw=true) diff --git a/doc/calibration/pressure-advance-calib.md b/doc/calibration/pressure-advance-calib.md index 70d52bc7eb..ad96932e86 100644 --- a/doc/calibration/pressure-advance-calib.md +++ b/doc/calibration/pressure-advance-calib.md @@ -2,7 +2,7 @@ Pressure Advance is a feature that compensates for the lag in filament pressure within the nozzle during acceleration and deceleration. It helps improve print quality by reducing issues like blobs, oozing, and inconsistent extrusion, especially at corners or during fast movements. -Orca Slicer includes three approaches for calibrating the pressure advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test. +OrcaSlicer includes three approaches for calibrating the pressure advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test. > [!NOTE] > [Adaptive Pressure Advance Guide](adaptive-pressure-advance-calib) @@ -36,7 +36,7 @@ Steps: The pattern method is adapted from [Andrew Ellis' pattern method generator](https://ellis3dp.com/Pressure_Linear_Advance_Tool/), which was itself derived from the [Marlin pattern method](https://marlinfw.org/tools/lin_advance/k-factor.html) developed by [Sineos](https://github.com/Sineos/k-factorjs). -[Instructions for using and reading the pattern method](https://ellis3dp.com/Print-Tuning-Guide/articles/pressure_linear_advance/pattern_method.html) are provided in [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/), with only a few Orca Slicer differences to note. +[Instructions for using and reading the pattern method](https://ellis3dp.com/Print-Tuning-Guide/articles/pressure_linear_advance/pattern_method.html) are provided in [Ellis' Print Tuning Guide](https://ellis3dp.com/Print-Tuning-Guide/), with only a few OrcaSlicer differences to note. Test configuration window allow user to generate one or more tests in a single projects. Multiple tests will be placed on each plate with extra plates added if needed. @@ -56,7 +56,7 @@ Once test generated, one or more small rectangular prisms could be found on the ![pa-pattern-batch-objects](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch-objects.png?raw=true) -Next, Ellis' generator provided the ability to adjust specific printer, filament, and print profile settings. You can make these same changes in Orca Slicer by adjusting the settings in the Prepare pane as you would with any other print. When you initiate the calibration test, Ellis' default settings are applied. A few things to note about these settings: +Next, Ellis' generator provided the ability to adjust specific printer, filament, and print profile settings. You can make these same changes in OrcaSlicer by adjusting the settings in the Prepare pane as you would with any other print. When you initiate the calibration test, Ellis' default settings are applied. A few things to note about these settings: 1. Ellis specified line widths as a percent of filament diameter. The Orca pattern method does the same to provide its suggested defaults, making use of Ellis' percentages in combination with your specified nozzle diameter 2. In terms of line width, the pattern only makes use of the `Default` and `First layer` widths diff --git a/doc/calibration/retraction-calib.md b/doc/calibration/retraction-calib.md index 7ec32ac40f..61872dc223 100644 --- a/doc/calibration/retraction-calib.md +++ b/doc/calibration/retraction-calib.md @@ -13,7 +13,7 @@ In the dialog, you can select the start and end retraction length, as well as th ![retraction_test_print](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/retraction/retraction_test_print.jpg?raw=true) > [!NOTE] -> When testing filaments such as PLA or ABS that have minimal oozing, the retraction settings can be highly effective. You may find that the retraction tower appears clean right from the start. In such situations, setting the retraction length to 0.2mm - 0.4mm using Orca Slicer should suffice. +> When testing filaments such as PLA or ABS that have minimal oozing, the retraction settings can be highly effective. You may find that the retraction tower appears clean right from the start. In such situations, setting the retraction length to 0.2mm - 0.4mm using OrcaSlicer should suffice. > On the other hand, if there is still a lot of stringing at the top of the tower, it is recommended to dry your filament and ensure that your nozzle is properly installed without any leaks. > [!TIP] diff --git a/doc/calibration/tolerance-calib.md b/doc/calibration/tolerance-calib.md index 818b796b66..23f948de47 100644 --- a/doc/calibration/tolerance-calib.md +++ b/doc/calibration/tolerance-calib.md @@ -1,7 +1,7 @@ # Filament Tolerance Calibration Each filament and printer combination can result in different tolerances. This means that even using the same filament and print profile, tolerances may vary from one printer to another. -To correct for these variations, Orca Slicer provides: +To correct for these variations, OrcaSlicer provides: - Filament Compensation: @@ -20,7 +20,7 @@ To correct for these variations, Orca Slicer provides: ## Handy Models -Orca Slicer includes several handy models to help you test and calibrate your printer. +OrcaSlicer includes several handy models to help you test and calibrate your printer. Right-click on your plate in Prepare mode and select "Add Handy Model" to access these models. ![handy-models-list](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Handy-Models/handy-models-list.png?raw=true) diff --git a/doc/developer-reference/How-to-wiki.md b/doc/developer-reference/How-to-wiki.md index 1d8a3b7f43..e59f5408da 100644 --- a/doc/developer-reference/How-to-wiki.md +++ b/doc/developer-reference/How-to-wiki.md @@ -1,17 +1,18 @@ # How to Contribute to the Wiki -This guide explains how to contribute to the Orca Slicer wiki. +This guide explains how to contribute to the OrcaSlicer wiki. -Orca Slicer uses GitHub's wiki feature, which allows users and developers to create and edit documentation collaboratively. +OrcaSlicer uses GitHub's wiki feature, which lets users and developers create and edit documentation collaboratively. -We encourage all developers and users to contribute to the wiki by updating existing pages and adding new content. This helps keep the documentation up-to-date and useful for everyone. +We encourage developers and users to contribute by updating existing pages and adding new content. This helps keep the documentation accurate and useful. -When developing new features, please consider updating the wiki to reflect these changes. This ensures that users have access to the latest information and can make the most of the features. +When adding new features, consider updating the wiki so users can access the latest guidance. - [Wiki Structure](#wiki-structure) - [Home](#home) - [Index and Navigation](#index-and-navigation) - [File Naming and Organization](#file-naming-and-organization) +- [Orca to Wiki Redirection](#orca-to-wiki-redirection) - [Formatting and Style](#formatting-and-style) - [Markdown Formatting](#markdown-formatting) - [Alerts and Callouts](#alerts-and-callouts) @@ -30,30 +31,35 @@ When developing new features, please consider updating the wiki to reflect these ## Wiki Structure -Each wiki page is a Markdown file located in the `doc` directory of the repository. The wiki is organized into various sections, each covering different areas of the project. +Each wiki page is a Markdown file located in the `doc` directory of the repository. The wiki is organized into sections that cover different areas of the project. ### Home -The starting point of the Orca Slicer wiki is the **Home** page. From there, you can navigate to different sections and topics related to the project. +The Home page is the starting point for the OrcaSlicer wiki. From there you can navigate to sections and topics related to the project. -When creating a new page or section, be sure to link it from the Home page under the appropriate category. +When you create a new page or section, link it from the Home page under the appropriate category. +The Home page currently organizes content in these top-level entries: -- **Print Settings:** Detailed explanations of print settings, tips, and tricks for optimizing print quality. -- **Printer Calibration:** Step-by-step calibration tests in Orca Slicer, including how to interpret the results. -- **Developer Section:** Information for developers and contributors on building Orca Slicer, localization, and developer resources. +- ![printer](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/printer.svg?raw=true) [Printer Settings](home#printer-settings) +- ![filament](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/filament.svg?raw=true) [Material Settings](home#material-settings) +- ![process](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/process.svg?raw=true) [Process Settings](home#process-settings) +- ![tab_3d_active](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/tab_3d_active.svg?raw=true) [Prepare](home#prepare) +- ![tab_calibration_active](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/tab_calibration_active.svg?raw=true) [Calibrations](home#calibrations) +- ![im_code](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/im_code.svg?raw=true) [Developer Section](home#developer-section) + +Each section can have multiple pages covering specific topics. For example, the [Process Settings](home#process-settings) section includes pages on [quality](home#quality-settings), [support](home#support-settings), and [others](home#others-settings). #### Index and Navigation -Github Wiki uses the name of the files as identifiers for the pages. To link to a page, use the file name without the `.md` extension. -If the file is inside a subdirectory, dont include the subdirectory in the link. Instead, link directly to the file from the Home page. +GitHub Wiki uses file names as page identifiers. To link to a page, use the file name without the `.md` extension. If a file lives in a subdirectory, **do not include the subdirectory** in the link; link directly to the file name from the Home page. -For example, if you create a new page `doc/calibration/flow-rate-calib.md`, link it as follows: +For example, if you add `doc/calibration/flow-rate-calib.md`, link it like this: ```markdown -[Calibration Guide](Calibration) +[Flow Rate Calibration](flow-rate-calib) ``` -For pages with extensive content, it's helpful to include a table of contents at the beginning. This allows users to quickly find and access different sections of the page. +For long pages, include a table of contents at the top to help readers find sections quickly. ```markdown - [Wiki Structure](#wiki-structure) @@ -64,21 +70,41 @@ For pages with extensive content, it's helpful to include a table of contents at ``` > [!NOTE] -> If you're adding a new section, follow the existing structure and ensure it doesn't already fit within an existing category. Link it from the Home page accordingly. +> If you're adding a new section, follow the existing structure and make sure it doesn't already fit an existing category. Link it from the Home page accordingly. ### File Naming and Organization -When creating new pages, follow these file naming conventions: +When creating new pages, follow these file-naming conventions: - Use unique file names to avoid conflicts. - Use descriptive names that reflect the page's content. -- Use kebab-case for filenames (e.g., `How-to-wiki.md`). -- If the page belongs to a specific section, include the section name in the file name. For example, calibration pages should end with `-calib.md` (e.g., `flow-rate-calib.md`, `pressure-advance-calib.md`). -- Place files in the appropriate subdirectory when applicable (e.g., `doc/calibration/` for calibration-related content). +- Use kebab-case for filenames (e.g.: `How-to-wiki.md`). +- If a page belongs to a section, include a suffix that clarifies it (for example, calibration pages should end with `-calib.md`, e.g. `flow-rate-calib.md`). +- Place files in the appropriate subdirectory when applicable (e.g.: `doc/calibration/` for calibration-related content). + +## Orca to Wiki Redirection + +OrcaSlicer can redirect users from the GUI to the appropriate wiki pages, making it easier to find relevant documentation. + +The option-to-wiki mapping is defined in [src/slic3r/GUI/Tab.cpp](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Tab.cpp). Any option added with `append_single_option_line` can be mapped to a wiki page using a second string argument. + +```cpp +optgroup->append_single_option_line("OPTION_NAME"); // Option without wiki page/redirection +optgroup->append_single_option_line("OPTION_NAME", "WIKI_PAGE"); // Option with wiki page and redirection +``` + +You can also point to a specific section within a wiki page by appending a fragment identifier (for example `#section-name`). + +Example: + +```cpp +optgroup->append_single_option_line("seam_gap","quality_settings_seam"); // Wiki page and redirection +optgroup->append_single_option_line("seam_slope_type", "quality_settings_seam#scarf-joint-seam"); // Wiki page and redirection to `Scarf Joint Seam` section +``` ## Formatting and Style -Please adhere to the following style and formatting conventions when contributing to the wiki. +Follow these style and formatting conventions when contributing to the wiki. ### Markdown Formatting @@ -90,41 +116,27 @@ Refer to the [GitHub Markdown Guide](https://guides.github.com/features/masterin ### Alerts and Callouts -To add alerts or notes, use GitHub’s Markdown alert syntax: +Use GitHub's alert syntax to add inline notes and warnings: ```markdown > [!NOTE] -> Useful information that users should know, even when skimming content. +> Useful information that readers should know. > [!TIP] -> Helpful advice for doing things better or more easily. +> Helpful advice for doing things more easily. > [!IMPORTANT] -> Key information users need to know to achieve their goal. +> Key information required to achieve a goal. > [!WARNING] -> Urgent info that needs immediate user attention to avoid problems. +> Urgent information to avoid problems. > [!CAUTION] -> Advises about risks or negative outcomes of certain actions. +> Warnings about risks or negative outcomes. ``` > [!NOTE] -> Useful information that users should know, even when skimming content. - -> [!TIP] -> Helpful advice for doing things better or more easily. - -> [!IMPORTANT] -> Key information users need to know to achieve their goal. - -> [!WARNING] -> Urgent info that needs immediate user attention to avoid problems. - -> [!CAUTION] -> Advises about risks or negative outcomes of certain actions. - -Refer to the [GitHub Alert Guide](https://docs.github.com/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) for more details. +> Refer to the [GitHub Alerts documentation](https://docs.github.com/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) for more details. ## Images @@ -136,18 +148,21 @@ Images are encouraged to enhance the clarity and quality of the wiki content. Th ### Image Naming - Use clear, descriptive filenames that reflect the image content. -- For section-specific images, include the section name or initials. For example, images related to Pressure Advance could be named `pa-[description].png`. +- For section-specific images, include the section name or initials (for example `pa-[description].png` for Pressure Advance images). ### Image Placement - General images should be placed in the `doc/images/` directory. - Section-specific images should be stored in their corresponding subdirectories (e.g., `doc/images/calibration/` for calibration content). +> [!TIP] +> You can use `\resources\images` images used in the GUI. + ### Linking Images Always use raw GitHub URLs for image links to ensure correct display: -Format = `![[filename]](` + Base URL + filename.extension + Raw tag + `)` +Format = `![`filename`](` + Base URL + filename.extension + Raw tag + `)` - Base URL: @@ -176,14 +191,13 @@ Format = `![[filename]](` + Base URL + filename.extension + Raw tag + `)` ``` > [!IMPORTANT] -> New or Moved Images will not appear in the preview until the Pull Request is merged. Double-check your paths. -> If you are changing an image path, ensure all links to that image are updated accordingly. +> New or moved images may not appear in previews until the pull request is merged. Double-check paths and update links if you move files. #### Avoid the Following - Relative paths -- GitHub Assets, user content, or user-images URLs -- External image links from unreliable or temporary platforms +- GitHub Assets/user-content/user-images URLs +- External image links from temporary or unreliable hosts - Images containing personal or sensitive information - Using images for content that can be expressed in text, such as equations or code—use Markdown syntax or Mermaid/Math formatting instead. @@ -200,7 +214,7 @@ HTML Format = `` + filename + ` +IS_damp_marlin_print_measure ``` ### Image Cropping and Highlighting @@ -208,7 +222,7 @@ Example: To ensure clarity: - Crop images to focus on relevant areas. -- Use annotations like arrows or shapes (circles, rectangles) to highlight key parts—but avoid overloading the image. +- Use simple annotations (arrows, circles, rectangles) to highlight important parts without overloading the image. ### Recommended Formats @@ -218,11 +232,12 @@ To ensure clarity: ## Structuring Content -Each wiki page should have a clear objective, which helps determine the structure of the content. After a brief introduction, use one of the following formats: +Each page should have a clear objective. After a short introduction, choose a structure that fits the content: -- **Step-by-Step Guide:** Organize content into sections and subsections for tasks requiring sequential actions (e.g., calibration procedures). -- **GUI-Based Reference:** If sequence isn’t crucial, structure the content following Orca Slicer’s GUI. This format works well for configurable settings or feature overviews. - - Example: Explain **Layer Height** before **Initial Layer Height**, as the former applies globally while the latter is specific to the first layer. +- **Step-by-step guides:** Use for sequential procedures (for example calibration). +- **GUI-based reference:** Describe settings following OrcaSlicer's UI when sequence isn't required. + +Example: explain **Layer Height** before **Initial Layer Height**, since the former is global and the latter only applies to the first layer. ## Commands and Code Blocks @@ -247,5 +262,5 @@ When adding commands or code blocks please use the [Code Block with Syntax Highl ## External Links -Be careful when linking to external resources. Ensure that the links are relevant and reliable. -Papers, articles, and other resources should be cited properly. +Be careful when linking to external resources. +Ensure links are relevant and reliable and cite papers or articles when appropriate. diff --git a/doc/developer-reference/Localization_guide.md b/doc/developer-reference/Localization_guide.md index ad84ad6ea0..c5d473901f 100644 --- a/doc/developer-reference/Localization_guide.md +++ b/doc/developer-reference/Localization_guide.md @@ -1,6 +1,6 @@ # Localization and translation guide -The purpose of this guide is to describe how to contribute to the Orca Slicer translations. We use GNUgettext for extracting string resources from the project and PoEdit for editing translations. +The purpose of this guide is to describe how to contribute to the OrcaSlicer translations. We use GNUgettext for extracting string resources from the project and PoEdit for editing translations. Those can be downloaded here: @@ -34,9 +34,9 @@ Notice. When the translation is complete you need to: - copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file. ( name of folder "fr" means "French" - the translation language). -### Scenario 3. How do I add a new text resource when implementing a feature to Orca Slicer +### Scenario 3. How do I add a new text resource when implementing a feature to OrcaSlicer -Each string resource in Orca Slicer available for translation needs to be explicitly marked using L() macro like this: +Each string resource in OrcaSlicer available for translation needs to be explicitly marked using L() macro like this: ```C++ auto msg = L("This message to be localized") @@ -45,7 +45,7 @@ auto msg = L("This message to be localized") To get translated text use one of needed macro/function (`_(s)` or `_CHB(s)` ). If you add new file resource, add it to the list of files containing macro `L()` -### Scenario 4. How do I use GNUgettext to localize my own application taking Orca Slicer as an example +### Scenario 4. How do I use GNUgettext to localize my own application taking OrcaSlicer as an example 1. For convenience create a list of files with this macro `L(s)`. We have https://github.com/softfever/OrcaSlicer/blob/master/localization/i18n/list.txt. @@ -86,13 +86,13 @@ If you add new file resource, add it to the list of files containing macro `L()` When you have Catalog to translation open POT or PO file in PoEdit and start translating. -## General guidelines for Orca Slicer translators +## General guidelines for OrcaSlicer translators - We recommend using _PoEdit_ application for translation (as described above). It will help you eliminate most punctuation errors and will show you strings with "random" translations (if the fuzzy parameter was used). -- To check how the translated text looks on the UI elements, test it :) If you use _PoEdit_, all you need to do is save the file. At this point, a MO file will be created. Rename it Orca Slicer.mo, and you can run Orca Slicer (see above). +- To check how the translated text looks on the UI elements, test it :) If you use _PoEdit_, all you need to do is save the file. At this point, a MO file will be created. Rename it OrcaSlicer.mo, and you can run OrcaSlicer (see above). -- If you see an encoding error (garbage characters instead of Unicode) somewhere in Orca Slicer, report it. It is likely not a problem of your translation, but a bug in the software. +- If you see an encoding error (garbage characters instead of Unicode) somewhere in OrcaSlicer, report it. It is likely not a problem of your translation, but a bug in the software. - See on which UI elements the translated phrase will be used. Especially if it's a button, it is very important to decide on the translation and not write alternative translations in parentheses, as this will significantly increase the width of the button, which is sometimes highly undesirable: diff --git a/doc/images/Flow-Rate/flowcalibration-example.png b/doc/images/Flow-Rate/flowcalibration-example.png index 5f325f2977..a9903966b1 100644 Binary files a/doc/images/Flow-Rate/flowcalibration-example.png and b/doc/images/Flow-Rate/flowcalibration-example.png differ diff --git a/doc/images/Flow-Rate/flowcalibration-guide.png b/doc/images/Flow-Rate/flowcalibration-guide.png new file mode 100644 index 0000000000..77bda5091a Binary files /dev/null and b/doc/images/Flow-Rate/flowcalibration-guide.png differ diff --git a/doc/images/Flow-Rate/flowcalibration-yolo.gif b/doc/images/Flow-Rate/flowcalibration-yolo.gif index 38420b5bda..de4aaee116 100644 Binary files a/doc/images/Flow-Rate/flowcalibration-yolo.gif and b/doc/images/Flow-Rate/flowcalibration-yolo.gif differ diff --git a/doc/images/Flow-Rate/flowcalibration_update_flowrate.png b/doc/images/Flow-Rate/flowcalibration_update_flowrate.png index 6ac5024733..44dab31b13 100644 Binary files a/doc/images/Flow-Rate/flowcalibration_update_flowrate.png and b/doc/images/Flow-Rate/flowcalibration_update_flowrate.png differ diff --git a/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png b/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png index b362a3d689..eb6748f0e8 100644 Binary files a/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png and b/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowcalibration_update_flowrate_monotonic.png b/doc/images/Flow-Rate/monotonic-flow-rate/flowcalibration_update_flowrate_monotonic.png new file mode 100644 index 0000000000..1db9320a14 Binary files /dev/null and b/doc/images/Flow-Rate/monotonic-flow-rate/flowcalibration_update_flowrate_monotonic.png differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg index adf114ee2a..7e8108fe3d 100644 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg and b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg index 2e166982cb..cb1d5837a4 100644 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg and b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg index 01ef036ea5..19cd606e35 100644 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg and b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg index 2e09a8a127..333d1bc31e 100644 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg and b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg differ diff --git a/doc/images/fill/fill-combination.png b/doc/images/fill/fill-combination.png new file mode 100644 index 0000000000..29bca84ab8 Binary files /dev/null and b/doc/images/fill/fill-combination.png differ diff --git a/doc/images/fill/fill-direction-to-model.png b/doc/images/fill/fill-direction-to-model.png new file mode 100644 index 0000000000..890c9336a4 Binary files /dev/null and b/doc/images/fill/fill-direction-to-model.png differ diff --git a/doc/images/fill/fill-direction.png b/doc/images/fill/fill-direction.png new file mode 100644 index 0000000000..2ae10348d8 Binary files /dev/null and b/doc/images/fill/fill-direction.png differ diff --git a/doc/images/fill/fill-rotation.png b/doc/images/fill/fill-rotation.png new file mode 100644 index 0000000000..d60ac1c224 Binary files /dev/null and b/doc/images/fill/fill-rotation.png differ diff --git a/doc/images/fill/infill-top-2d-honeycomb.png b/doc/images/fill/infill-top-lateral-honeycomb.png similarity index 100% rename from doc/images/fill/infill-top-2d-honeycomb.png rename to doc/images/fill/infill-top-lateral-honeycomb.png diff --git a/doc/images/fill/infill-top-2d-lattice.png b/doc/images/fill/infill-top-lateral-lattice.png similarity index 100% rename from doc/images/fill/infill-top-2d-lattice.png rename to doc/images/fill/infill-top-lateral-lattice.png diff --git a/doc/images/fill/infill-top-monotonic-line.png b/doc/images/fill/infill-top-monotonic-line.png new file mode 100644 index 0000000000..e08eb51947 Binary files /dev/null and b/doc/images/fill/infill-top-monotonic-line.png differ diff --git a/doc/images/fill/infill-top-monotonic.png b/doc/images/fill/infill-top-monotonic.png new file mode 100644 index 0000000000..f81928be80 Binary files /dev/null and b/doc/images/fill/infill-top-monotonic.png differ diff --git a/doc/images/fill/infill-top-tpms-fk.png b/doc/images/fill/infill-top-tpms-fk.png new file mode 100644 index 0000000000..b46b038915 Binary files /dev/null and b/doc/images/fill/infill-top-tpms-fk.png differ diff --git a/doc/images/walls/walls-big-detect-thin-off-on.png b/doc/images/walls/walls-big-detect-thin-off-on.png new file mode 100644 index 0000000000..61be7244da Binary files /dev/null and b/doc/images/walls/walls-big-detect-thin-off-on.png differ diff --git a/doc/images/walls/walls-small-detect-thin-off.png b/doc/images/walls/walls-small-detect-thin-off.png new file mode 100644 index 0000000000..9d2722fa03 Binary files /dev/null and b/doc/images/walls/walls-small-detect-thin-off.png differ diff --git a/doc/images/walls/walls-small-detect-thin-on.png b/doc/images/walls/walls-small-detect-thin-on.png new file mode 100644 index 0000000000..70593d52e1 Binary files /dev/null and b/doc/images/walls/walls-small-detect-thin-on.png differ diff --git a/doc/images/walls/walls.png b/doc/images/walls/walls.png new file mode 100644 index 0000000000..7cdd527801 Binary files /dev/null and b/doc/images/walls/walls.png differ diff --git a/doc/print_settings/quality/quality_settings_ironing.md b/doc/print_settings/quality/quality_settings_ironing.md index bdb116668e..5b34cfb31a 100644 --- a/doc/print_settings/quality/quality_settings_ironing.md +++ b/doc/print_settings/quality/quality_settings_ironing.md @@ -11,7 +11,7 @@ Ironing is a process used to improve the surface finish of 3D prints by smoothin This setting controls which layer being ironed. -- **Top Surfaces**: All [top surfaces](strength_settings_top_bottom_shells) will be ironed. This is the most common setting and is used to smooth out the top layers of the print. +- **Top Surfaces**: All [top surfaces](strength_settings_top_bottom_shells) will be ironed. This is the most common setting and is used to smooth out the top layers of the print. ![ironing-top-surfaces](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/ironing/ironing-top-surfaces.png?raw=true) - **Topmost Surface**: Only the last [top layer](strength_settings_top_bottom_shells) of the print will be ironed. This is useful for prints where only the last layer needs to be smoothed. ![ironing-topmost-surface](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/ironing/ironing-topmost-surface.png?raw=true) @@ -21,7 +21,14 @@ This setting controls which layer being ironed. ## Pattern The pattern that will be used when ironing. Usually, the best pattern is the one with the most efficient coverage of the surface. -You can learn more about the different patterns in the [Sparse infill pattern](strength_settings_infill#sparse-infill-pattern) section. + +> [!TIP] +> See [Infill Patterns Wiki List](strength_settings_patterns) with **detailed specifications**, including their strengths and weaknesses. + + The ironing patterns are: + +- **[Concentric](strength_settings_patterns#concentric)** +- **[Rectilinear](strength_settings_patterns#rectilinear)** ## Flow @@ -39,12 +46,12 @@ The distance to keep from the edges, which can help prevent over-extrusion at th ![ironing-inset](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/ironing/ironing-inset.png?raw=true) -If this value is set to 0, the ironing toolpath will start directly at the perimeter edges without any inward offset. This means the ironing pattern will extend all the way to the outer boundaries of the top surface being ironed. +If this value is set to 0, the ironing toolpath will start directly at the perimeter edges without any inward offset. This means the [ironing pattern](#pattern) will extend all the way to the outer boundaries of the top surface being ironed. ## Angle The angle ironing is done at. -A negative number disables this function and uses the [sparse infill direction](strength_settings_infill#sparse-infill-direction). +A negative number disables this function and uses the [sparse infill direction](strength_settings_infill#direction). ## Speed diff --git a/doc/print_settings/quality/quality_settings_line_width.md b/doc/print_settings/quality/quality_settings_line_width.md index c508ff7044..8e393a5920 100644 --- a/doc/print_settings/quality/quality_settings_line_width.md +++ b/doc/print_settings/quality/quality_settings_line_width.md @@ -54,7 +54,7 @@ If you need stronger infill, it's recommended to use [infill line multiplier](st ### Internal Solid Infill -Used for solid top/bottom layers or [100% infill](strength_settings_infill##sparse-infill-density). +Used for solid top/bottom layers or [100% infill](strength_settings_infill#sparse-infill-density). Recommended: **~110%** for good layer adhesion and visual quality. ### Support diff --git a/doc/print_settings/quality/quality_settings_seam.md b/doc/print_settings/quality/quality_settings_seam.md index ad23847028..b0a5dce3a3 100644 --- a/doc/print_settings/quality/quality_settings_seam.md +++ b/doc/print_settings/quality/quality_settings_seam.md @@ -109,7 +109,7 @@ Disadvantages: - Requires tuning of parameters like length, speed, and flow for best results > [!NOTE] -> Read more here: [Better Seams - An Orca Slicer Guide](https://www.printables.com/model/783313-better-seams-an-orca-slicer-guide-to-using-scarf-s). +> Read more here: [Better Seams - An OrcaSlicer Guide](https://www.printables.com/model/783313-better-seams-an-orca-slicer-guide-to-using-scarf-s). #### Scarf joint seam Type diff --git a/doc/print_settings/quality/quality_settings_wall_and_surfaces.md b/doc/print_settings/quality/quality_settings_wall_and_surfaces.md index c5d5719f7c..e880d600bc 100644 --- a/doc/print_settings/quality/quality_settings_wall_and_surfaces.md +++ b/doc/print_settings/quality/quality_settings_wall_and_surfaces.md @@ -38,7 +38,7 @@ Use Outer/Inner for the same external wall quality and dimensional accuracy bene ### Print infill first -When this option is enabled, the [infill](strength_settings_infill) and [top/bottom shells](strength_settings_top_bottom_shells) is printed first, followed by the walls. This can be useful for some overhangs where the infill can support the walls. +When this option is enabled, the [infill](strength_settings_infill) and [top/bottom shells](strength_settings_top_bottom_shells) are printed first, followed by the walls. This can be useful for some overhangs where the infill can support the walls. ![infill-first](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Wall-Order/infill-first.gif?raw=true) @@ -68,7 +68,7 @@ The actual top surface flow used is calculated by multiplying this value with th ## Only one wall Use only one wall on flat surfaces, to give more space to the [top infill pattern](strength_settings_top_bottom_shells#surface-pattern). -Specially useful in small features, like letters, where the top surface is very small and concentric pattern from walls would not cover it properly. +Specially useful in small features, like letters, where the top surface is very small and [concentric pattern](strength_settings_patterns#concentric) from walls would not cover it properly. ![only-one-wall](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Wall-Order/only-one-wall.gif?raw=true) diff --git a/doc/print_settings/quality/quality_settings_wall_generator.md b/doc/print_settings/quality/quality_settings_wall_generator.md index 89482d3562..e464ee5c76 100644 --- a/doc/print_settings/quality/quality_settings_wall_generator.md +++ b/doc/print_settings/quality/quality_settings_wall_generator.md @@ -26,6 +26,9 @@ The Arachne wall generator dynamically adjusts extrusion width to follow the sha ![wallgenerator-arachne](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/WallGenerator/wallgenerator-arachne.png?raw=true) +> [!NOTE] +> [A Framework for Adaptive Width Control of Dense Contour-Parallel Toolpaths in Fused Deposition Modeling](https://www.sciencedirect.com/science/article/pii/S0010448520301007?via%3Dihub) + ### Wall transitioning threshhold angle Defines the minimum angle (in degrees) required for the algorithm to create a transition between an even and odd number of walls. If a wedge shape exceeds this angle, no extra center wall will be added. Lowering this value reduces center walls but may cause under- or over-extrusion in sharp corners. diff --git a/doc/print_settings/speed/speed_settings_acceleration.md b/doc/print_settings/speed/speed_settings_acceleration.md index 8bc35158fd..1352a950c3 100644 --- a/doc/print_settings/speed/speed_settings_acceleration.md +++ b/doc/print_settings/speed/speed_settings_acceleration.md @@ -23,11 +23,11 @@ The default acceleration of both normal printing and travel. ## Outer wall -Acceleration for [outer wall](speed_settings_walls#outer-wall) printing. This is usually set to a lower value than normal printing to ensure better quality. +Acceleration for [outer wall](speed_settings_other_layers_speed#outer-wall) printing. This is usually set to a lower value than normal printing to ensure better quality. ## Inner wall -Acceleration for [inner wall](speed_settings_walls#inner-wall) printing. This is usually set to a higher value than outer wall printing to improve speed. +Acceleration for [inner wall](speed_settings_other_layers_speed#inner-wall) printing. This is usually set to a higher value than outer wall printing to improve speed. ## Bridge diff --git a/doc/print_settings/speed/speed_settings_advanced.md b/doc/print_settings/speed/speed_settings_advanced.md index 288d1ef90d..d86834d626 100644 --- a/doc/print_settings/speed/speed_settings_advanced.md +++ b/doc/print_settings/speed/speed_settings_advanced.md @@ -184,7 +184,7 @@ In this case, the printer slows down and then accelerates independently of what ## Credits -- **Original feature authors and creators:** The Prusa Slicer team, including [@bubnikv](https://github.com/bubnikv), [@hejllukas](https://github.com/hejllukas). +- **Original feature authors and creators:** The PrusaSlicer team, including [@bubnikv](https://github.com/bubnikv), [@hejllukas](https://github.com/hejllukas). - **Enhanced by:** [@MGunlogson](https://github.com/MGunlogson), introducing the feature to external perimeters, enhancing it by taking into account travel, retraction and implementing near-contiguous extrusions pressure equalizer adjustments. - **Ported to Orca:** [@igiannakas](https://github.com/igiannakas). - **Enhanced by:** [@noisyfox](https://github.com/Noisyfox), per object pressure equalization and fixing calculation logic bugs. diff --git a/doc/print_settings/speed/speed_settings_initial_layer_speed.md b/doc/print_settings/speed/speed_settings_initial_layer_speed.md index 1542f38962..fc1a5ed635 100644 --- a/doc/print_settings/speed/speed_settings_initial_layer_speed.md +++ b/doc/print_settings/speed/speed_settings_initial_layer_speed.md @@ -4,12 +4,12 @@ Printing the first layer slower than the rest of the print is a widely recommend ## Initial layer -This setting determines the printing speed for the first layer, excluding [solid infill](strength_settings_top_bottom_shells) regions. It applies to the [outer/inner walls](strength_settings_walls), [sparse infill](strength_settings_infill) when [bottom layers](strength_settings_top_bottom_shells#shells-layers) is set to 0. +This setting determines the printing speed for the first layer, excluding [solid infill](strength_settings_top_bottom_shells) regions. It applies to the [outer/inner walls](strength_settings_walls), [sparse infill](strength_settings_infill) when [bottom layers](strength_settings_top_bottom_shells#shell-layers) is set to 0. Adjusting this speed helps ensure proper adhesion and print quality for the initial layer. ## Initial layer infill -Defines the speed used specifically for [solid infill](strength_settings_top_bottom_shells#shells-layers) regions on the first layer. These areas require more precise and consistent extrusion to create a flat and stable surface for subsequent layers. Printing this section too fast may result in high internal stresses (increased risk of warping), poor layer uniformity, or adhesion failures. +Defines the speed used specifically for [solid infill](strength_settings_top_bottom_shells#shell-layers) regions on the first layer. These areas require more precise and consistent extrusion to create a flat and stable surface for subsequent layers. Printing this section too fast may result in high internal stresses (increased risk of warping), poor layer uniformity, or adhesion failures. ## Initial layer travel speed diff --git a/doc/print_settings/speed/speed_settings_other_layers_speed.md b/doc/print_settings/speed/speed_settings_other_layers_speed.md index e7efceb059..cca1b32d9a 100644 --- a/doc/print_settings/speed/speed_settings_other_layers_speed.md +++ b/doc/print_settings/speed/speed_settings_other_layers_speed.md @@ -7,8 +7,8 @@ > > - [Maximum Volumetric Speed](volumetric-speed-calib) > - Machine / Motion ability -> - [Acceleration](speed-settings-acceleration) -> - [Jerk settings](speed-settings-jerk) +> - [Acceleration](speed_settings_acceleration) +> - [Jerk settings](speed_settings_jerk_xy) - [Speed limitations](#speed-limitations) - [Outer wall](#outer-wall) @@ -62,8 +62,8 @@ For example, if the threshold is set to 5 mm, then the perimeter length must be ## Sparse infill -Speed of [sparse infill](strength_settings_infill#sparse-infill) which is printed faster than solid infill to reduce print time. -In case you are using your Infill Pattern as aesthetic feature, you may want to set it closer to the [outer wall speed](#outer-wall) to get better quality. +Speed of [sparse infill](strength_settings_infill) which is printed faster than solid infill to reduce print time. +In case you are using your [Infill Pattern](strength_settings_infill) as aesthetic feature, you may want to set it closer to the [outer wall speed](#outer-wall) to get better quality. ## Internal solid infill diff --git a/doc/print_settings/speed/speed_settings_overhang_speed.md b/doc/print_settings/speed/speed_settings_overhang_speed.md index b362bfe474..41dd8829c3 100644 --- a/doc/print_settings/speed/speed_settings_overhang_speed.md +++ b/doc/print_settings/speed/speed_settings_overhang_speed.md @@ -2,7 +2,7 @@ - [Slow down for overhang](#slow-down-for-overhang) - [Slow down for curled perimeters](#slow-down-for-curled-perimeters) - - [Overhang speed](#overhang-speed-1) + - [Speed](#speed) - [Bridge speed](#bridge-speed) ## Slow down for overhang @@ -21,7 +21,7 @@ It is generally recommended to have this option switched on unless your printer > [!NOTE] > When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge. For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied. -### Overhang speed +### Speed This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of [line width](quality_settings_line_width). diff --git a/doc/print_settings/strength/infill_desc_calculator.xlsx b/doc/print_settings/strength/infill_desc_calculator.xlsx index 98bbbcadab..266ee309b6 100644 Binary files a/doc/print_settings/strength/infill_desc_calculator.xlsx and b/doc/print_settings/strength/infill_desc_calculator.xlsx differ diff --git a/doc/print_settings/strength/strength_settings_advanced.md b/doc/print_settings/strength/strength_settings_advanced.md index 076be86dff..461f998c44 100644 --- a/doc/print_settings/strength/strength_settings_advanced.md +++ b/doc/print_settings/strength/strength_settings_advanced.md @@ -10,38 +10,46 @@ ## Align infill direction to model -Aligns infill and surface fill directions to follow the model's orientation on the build plate. When enabled, fill directions rotate with the model to maintain optimal strength characteristics. +Aligns infill and surface fill directions to follow the model's orientation on the build plate. +When enabled, fill directions rotate with the model to maintain optimal characteristics. + +![fill-direction-to-model](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/fill-direction-to-model.png?raw=true) ## Bridge infill direction -Bridging angle override. If left to zero, the bridging angle will be calculated automatically. Otherwise the provided angle will be used for bridges. Use 180° for zero angle. +Bridging angle override. +If left at zero, the bridging angle will be calculated automatically. Otherwise, the provided angle will be used for bridges. +Use 180° to represent a zero angle. ## Minimum sparse infill threshold -Sparse infill area which is smaller than threshold value is replaced by internal solid infill. +Sparse infill areas smaller than the threshold value are replaced by [internal solid infill](strength_settings_infill#internal-solid-infill). +This setting helps to ensure that small areas of sparse infill do not compromise the strength of the print. It is particularly useful for models with intricate designs or small features where sparse infill may not provide sufficient support. ## Infill Combination -Automatically Combine sparse infill of several layers to print together to reduce time. Wall is still printed with original layer height. +Automatically combine [sparse infill](strength_settings_infill) of several layers so they print together and reduce print time and while increasing strength. While walls are still printed with the original [layer height](quality_settings_layer_height). + +![fill-combination](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/fill-combination.png?raw=true) ### Max layer height Maximum layer height for the combined sparse infill. -Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in print time) or a value of ~80% to maximize sparse infill strength. +Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in print time), or to a value of ~80% to maximize sparse infill strength. -The number of layers over which infill is combined is derived by dividing this value with the layer height and rounded down to the nearest decimal. +The number of layers over which infill is combined is derived by dividing this value by the layer height and rounding down to the nearest decimal. -Use either absolute mm values (eg. 0.32mm for a 0.4mm nozzle) or % values (eg 80%). This value must not be larger than the nozzle diameter. +Use either absolute mm values (e.g., 0.32mm for a 0.4mm nozzle) or percentages (e.g., 80%). This value must not be larger than the nozzle diameter. ## Detect narrow internal solid infill -This option will auto-detect narrow internal solid infill areas. If enabled, the concentric pattern will be used for the area to speed up printing. Otherwise, the rectilinear pattern will be used by default. +This option auto-detects narrow internal solid infill areas. If enabled, the [concentric pattern](strength_settings_patterns#concentric) will be used in those areas to speed up printing. Otherwise, the [rectilinear pattern](strength_settings_patterns#rectilinear) will be used by default. ## Ensure vertical shell thickness -Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top+bottom solid layers). +Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top and bottom solid layers). -- **None**: No solid infill will be added anywhere. Caution: Use this option carefully if your model has sloped surfaces. +- **None**: No solid infill will be added anywhere. **Caution:** Use this option carefully if your model has sloped surfaces. - **Critical Only**: Avoid adding solid infill for walls. - **Moderate**: Add solid infill for heavily sloping surfaces only. - **All (default)**: Add solid infill for all suitable sloping surfaces. diff --git a/doc/print_settings/strength/strength_settings_infill.md b/doc/print_settings/strength/strength_settings_infill.md index a306d1b554..36850e5391 100644 --- a/doc/print_settings/strength/strength_settings_infill.md +++ b/doc/print_settings/strength/strength_settings_infill.md @@ -14,39 +14,21 @@ Infill is the internal structure of a 3D print, providing strength and support. - [Anchor](#anchor) - [Internal Solid Infill](#internal-solid-infill) - [Sparse Infill Pattern](#sparse-infill-pattern) - - [Rectilinear](#rectilinear) - - [Aligned Rectilinear](#aligned-rectilinear) - - [Zig Zag](#zig-zag) - - [Cross Zag](#cross-zag) - - [Locked Zag](#locked-zag) - - [Line](#line) - - [Grid](#grid) - - [Triangles](#triangles) - - [Tri-hexagon](#tri-hexagon) - - [Cubic](#cubic) - - [Adaptive Cubic](#adaptive-cubic) - - [Quarter Cubic](#quarter-cubic) - - [Support Cubic](#support-cubic) - - [Lightning](#lightning) - - [Honeycomb](#honeycomb) - - [3D Honeycomb](#3d-honeycomb) - - [2D Honeycomb](#2d-honeycomb) - - [2D Lattice](#2d-lattice) - - [Cross Hatch](#cross-hatch) - - [TPMS-D](#tpms-d) - - [Gyroid](#gyroid) - - [Concentric](#concentric) - - [Hilbert Curve](#hilbert-curve) - - [Archimedean Chords](#archimedean-chords) - - [Octagram Spiral](#octagram-spiral) - [Credits](#credits) ## Sparse infill density -Density usually should be calculated as a % of the total infill volume, not the total print volume. -Higher density increases strength but also material usage and print time. Lower density saves material and time but reduces strength. +Infill density determines the amount of material used to fill the interior of a 3D print. It is usually expressed as a percentage, with 100% being completely solid. -Nevertheless, **not all patterns interpret density the same way**, so the actual material usage may vary. You can see each pattern's material usage in the [Sparse Infill Pattern](#sparse-infill-pattern) section. +- Higher density increases + - Strength + - Material usage + - Print time. + +> [!NOTE] +> Density usually is calculated as a % of the total infill volume, not the total print volume. +> Nevertheless, **not all patterns interpret density the same way**, so the actual material usage may vary. +> You can see each pattern's material usage in the [Patterns section](strength_settings_patterns). ## Fill Multiline @@ -73,14 +55,14 @@ This setting allows you to generate your selected [infill pattern](#sparse-infil ### Use cases -- Increasing the number of lines (e.g., 2 or 3) can improve part strength and print speed without increasing material usage. -- Fire-retardant applications: Some flame-resistant materials (like PolyMax PC-FR) require a minimum printed wall/infill thickness—often 1.5–3 mm—to comply with standards. Since infill contributes to overall part thickness, using multiple lines helps achieve the necessary thickness without switching to a large nozzle or printing with 100% infill. This is especially useful for high-temperature materials like PC, which are prone to warping when fully solid. -- Creating aesthetically pleasing infill patterns (like [Grid](#grid) or [Honeycomb](#honeycomb)) with multiple line widths—without relying on CAD modeling or being limited to a single extrusion width. +- Increasing the number of lines (e.g., 2 or 3) can **improve part strength** and **print speed** without increasing material usage. +- **Fire-retardant applications:** Some flame-resistant materials (like PolyMax PC-FR) require a minimum printed wall/infill thickness—often 1.5–3 mm—to comply with standards. Since infill contributes to overall part thickness, using multiple lines helps achieve the necessary thickness without switching to a large nozzle or printing with 100% infill. This is especially useful for high-temperature materials like PC, which are prone to warping when fully solid. +- Creating **aesthetic** infill patterns (like [Grid](strength_settings_patterns#grid) or [Honeycomb](strength_settings_patterns#honeycomb)) with multiple line widths—without relying on CAD modeling or being limited to a single extrusion width. ![infill-multiline-esthetic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-multiline-esthetic.gif?raw=true) > [!WARNING] -> For self intersecting infills (e.g. [Cubic](#cubic), [Grid](#grid)) multiline count greater than 3 may cause layer shift, extruder clog or other issues due to overlapping of lines on intersection points. +> For self intersecting infills (e.g. [Cubic](strength_settings_patterns#cubic), [Grid](strength_settings_patterns#grid)) multiline count greater than 3 may cause layer shift, extruder clog or other issues due to overlapping of lines on intersection points. > > ![infill-multiline-overlapping](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-multiline-overlapping.gif?raw=true) @@ -93,6 +75,8 @@ This setting allows you to generate your selected [infill pattern](#sparse-infil Controls the direction of the infill lines to optimize or strengthen the print. +![fill-direction](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/fill-direction.png?raw=true) + ### Rotation This parameter adds a rotation to the sparse infill direction for each layer according to the specified template. @@ -104,6 +88,8 @@ For example: 0,90 ``` +![fill-rotation](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/fill-rotation.png?raw=true) + The first layer uses 0°, the second uses 90°, and the pattern repeats for subsequent layers. Other examples: @@ -120,7 +106,7 @@ Other examples: > If there are more layers than angles, the sequence repeats. > [!IMPORTANT] -> Not all sparse infill patterns support rotation. +> Not all sparse [patterns](strength_settings_patterns) support rotation. ## Infill Wall Overlap @@ -136,7 +122,8 @@ Infill area is enlarged slightly to overlap with wall for better bonding. The pe ## Apply gap fill -Enables gap fill for the selected solid surfaces. The minimum gap length that will be filled can be controlled from the filter out tiny gaps option. +Enables gap fill for the selected solid surfaces. +The minimum gap length that will be filled can be controlled from the filter out tiny gaps option. 1. **Everywhere:** Applies gap fill to top, bottom and internal solid surfaces for maximum strength. 2. **Top and Bottom surfaces:** Applies gap fill to top and bottom surfaces only, balancing print speed, reducing potential over extrusion in the solid infill and making sure the top and bottom surfaces have no pinhole gaps. @@ -151,7 +138,8 @@ However this is not advised, as gap fill between perimeters is contributing to t ## Filter out tiny gaps -Don't print gap fill with a length is smaller than the threshold specified (in mm). This setting applies to top, bottom and solid infill and, if using the classic perimeter generator, to wall gap fill. +Don't print gap fill with a length is smaller than the threshold specified (in mm). +This setting applies to top, bottom and solid infill and, if using the [classic perimeter generator](quality_settings_wall_generator#classic), to wall gap fill. ## Anchor @@ -168,375 +156,12 @@ OrcaSlicer tries to connect two close infill lines to a short perimeter segment. ## Internal Solid Infill -Line pattern of internal solid infill. If the [detect narrow internal solid infill](strength_settings_advanced#detect-narrow-internal-solid-infill) be enabled, the concentric pattern will be used for the small area. +Line pattern of internal solid infill. If the [detect narrow internal solid infill](strength_settings_advanced#detect-narrow-internal-solid-infill) be enabled, the [concentric pattern](strength_settings_patterns#concentric) will be used for the small area. ## Sparse Infill Pattern -Infill patterns determine how material is distributed within a print. Different patterns can affect strength, flexibility, and print speed using the same density setting. - -There is no one-size-fits-all solution, as the best pattern depends on the specific print and its requirements. - -Many patterns may look similar and have similar overall specifications, but they can behave very differently in practice. -As most settings in 3D printing, experience is the best way to determine which pattern works best for your specific needs. - -| SVG | Pattern | X-Y Strength | Z Strength | Material Usage | Print Time | -|---|---|---|---|---|---| -| ![param_rectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_rectilinear.svg?raw=true) | [Rectilinear](#rectilinear) | Normal-Low | Low | Normal | Normal-Low | -| ![param_alignedrectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_alignedrectilinear.svg?raw=true) | [Aligned Rectilinear](#aligned-rectilinear) | Normal-Low | Normal | Normal | Normal-Low | -| ![param_zigzag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_zigzag.svg?raw=true) | [Zig Zag](#zig-zag) | Normal-Low | Low | Normal | Normal | -| ![param_crosszag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_crosszag.svg?raw=true) | [Cross Zag](#cross-zag) | Normal | Low | Normal | Normal | -| ![param_lockedzag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_lockedzag.svg?raw=true) | [Locked Zag](#locked-zag) | Normal-Low | Normal-Low | Normal-High | Extra-High | -| ![param_line](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_line.svg?raw=true) | [Line](#line) | Low | Low | Normal | Normal-Low | -| ![param_grid](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_grid.svg?raw=true) | [Grid](#grid) | High | High | Normal | Normal-Low | -| ![param_triangles](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_triangles.svg?raw=true) | [Triangles](#triangles) | High | Normal | Normal | Normal-Low | -| ![param_tri-hexagon](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_tri-hexagon.svg?raw=true) | [Tri-hexagon](#tri-hexagon) | High | Normal-High | Normal | Normal-Low | -| ![param_cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_cubic.svg?raw=true) | [Cubic](#cubic) | High | High | Normal | Normal-Low | -| ![param_adaptivecubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_adaptivecubic.svg?raw=true) | [Adaptive Cubic](#adaptive-cubic) | Normal-High | Normal-High | Low | Low | -| ![param_quartercubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_quartercubic.svg?raw=true) | [Quarter Cubic](#quarter-cubic) | High | High | Normal | Normal-Low | -| ![param_supportcubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_supportcubic.svg?raw=true) | [Support Cubic](#support-cubic) | Low | Low | Extra-Low | Extra-Low | -| ![param_lightning](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_lightning.svg?raw=true) | [Lightning](#lightning) | Low | Low | Ultra-Low | Ultra-Low | -| ![param_honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_honeycomb.svg?raw=true) | [Honeycomb](#honeycomb) | High | High | High | Ultra-High | -| ![param_3dhoneycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_3dhoneycomb.svg?raw=true) | [3D Honeycomb](#3d-honeycomb) | Normal-High | Normal-High | Normal-Low | High | -| ![param_2dhoneycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_2dhoneycomb.svg?raw=true) | [2D Honeycomb](#2d-honeycomb) | Normal-Low | Normal-Low | Normal | Normal-Low | -| ![param_2dlattice](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_2dlattice.svg?raw=true) | [2D Lattice](#2d-lattice) | Normal-Low | Low | Normal | Normal-Low | -| ![param_crosshatch](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_crosshatch.svg?raw=true) | [Cross Hatch](#cross-hatch) | Normal-High | Normal-High | Normal | Normal-High | -| ![param_tpmsd](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_tpmsd.svg?raw=true) | [TPMS-D](#tpms-d) | High | High | Normal | High | -| ![param_gyroid](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_gyroid.svg?raw=true) | [Gyroid](#gyroid) | High | High | Normal | Normal-High | -| ![param_concentric](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_concentric.svg?raw=true) | [Concentric](#concentric) | Low | Normal | Normal | Normal | -| ![param_hilbertcurve](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_hilbertcurve.svg?raw=true) | [Hilbert Curve](#hilbert-curve) | Low | Normal | Normal | High | -| ![param_archimedeanchords](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_archimedeanchords.svg?raw=true) | [Archimedean Chords](#archimedean-chords) | Low | Normal | Normal | Normal-Low | -| ![param_octagramspiral](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_octagramspiral.svg?raw=true) | [Octagram Spiral](#octagram-spiral) | Low | Normal | Normal | Normal | - -> [!NOTE] -> You can download [infill_desc_calculator.xlsx](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/print_settings/strength/infill_desc_calculator.xlsx?raw=true) used to calculate the values above. - -### Rectilinear - -Parallel lines spaced according to infill density. Each layer is printed perpendicular to the previous, resulting in low vertical bonding. Consider using new [Zig Zag](#zig-zag) infill instead. - -- **Horizontal Strength (X-Y):** Normal-Low -- **Vertical Strength (Z):** Low -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal - -![infill-top-rectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-rectilinear.png?raw=true) - -### Aligned Rectilinear - -Parallel lines spaced by the infill spacing, each layer printed in the same direction as the previous layer. Good horizontal strength perpendicular to the lines, but terrible in parallel direction. -Recommended with layer anchoring to improve not perpendicular strength. - -- **Horizontal Strength (X-Y):** Normal-Low -- **Vertical Strength (Z):** Normal -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal - -![infill-top-aligned-rectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-aligned-rectilinear.png?raw=true) - -### Zig Zag - -Similar to [rectilinear](#rectilinear) with consistent pattern between layers. Allows you to add a Symmetric infill Y axis for models with two symmetric parts. - -- **Horizontal Strength (X-Y):** Normal-Low -- **Vertical Strength (Z):** Low -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal -- **Material/Time (Higher better):** Normal - -![infill-top-zig-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-zig-zag.png?raw=true) - -### Cross Zag - -Similar to [Zig Zag](#zig-zag) but displacing each layer with Infill shift step parameter. - -- **Horizontal Strength (X-Y):** Normal -- **Vertical Strength (Z):** Low -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal -- **Material/Time (Higher better):** Normal - -![infill-top-cross-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-cross-zag.png?raw=true) - -### Locked Zag - -Adaptive version of [Zig Zag](#zig-zag) adding an external skin texture to interlock layers and a low material skeleton. - -- **Horizontal Strength (X-Y):** Normal-Low -- **Vertical Strength (Z):** Normal-Low -- **Density Calculation:** Same as [Zig Zag](#zig-zag) but increasing near walls -- **Material Usage:** Normal-High -- **Print Time:** Extra-High -- **Material/Time (Higher better):** Low - -![infill-top-locked-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-locked-zag.png?raw=true) - -### Line - -Similar to [rectilinear](#rectilinear), but each line is slightly rotated to improve print speed. - -- **Horizontal Strength (X-Y):** Low -- **Vertical Strength (Z):** Low -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal-High - -![infill-top-line](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-line.png?raw=true) - -### Grid - -Two-layer pattern of perpendicular lines, forming a grid. Overlapping points may cause noise or artifacts. - -- **Horizontal Strength (X-Y):** High -- **Vertical Strength (Z):** High -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal - -![infill-top-grid](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-grid.png?raw=true) - -### Triangles - -Triangle-based grid, offering strong X-Y strength but with triple overlaps at intersections. - -- **Horizontal Strength (X-Y):** High -- **Vertical Strength (Z):** Normal -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal-High - -![infill-top-triangles](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-triangles.png?raw=true) - -### Tri-hexagon - -Similar to the [triangles](#triangles) pattern but offset to prevent triple overlaps at intersections. This design combines triangles and hexagons, providing excellent X-Y strength. - -- **Horizontal Strength (X-Y):** High -- **Vertical Strength (Z):** Normal-High -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal-High - -![infill-top-tri-hexagon](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-tri-hexagon.png?raw=true) - -### Cubic - -3D cube pattern with corners facing down, distributing force in all directions. Triangles in the horizontal plane provide good X-Y strength. - -- **Horizontal Strength (X-Y):** High -- **Vertical Strength (Z):** High -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal-High - -![infill-top-cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-cubic.png?raw=true) - -### Adaptive Cubic - -[Cubic](#cubic) pattern with adaptive density: denser near walls, sparser in the center. Saves material and time while maintaining strength, ideal for large prints. - -- **Horizontal Strength (X-Y):** Normal-High -- **Vertical Strength (Z):** Normal-High -- **Density Calculation:** Same as [Cubic](#cubic) but reduced in the center -- **Material Usage:** Low -- **Print Time:** Low -- **Material/Time (Higher better):** Normal - -![infill-top-adaptive-cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-adaptive-cubic.png?raw=true) - -### Quarter Cubic - -[Cubic](#cubic) pattern with extra internal divisions, improving X-Y strength. - -- **Horizontal Strength (X-Y):** High -- **Vertical Strength (Z):** High -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal - -![infill-top-quarter-cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-quarter-cubic.png?raw=true) - -### Support Cubic - -Support |Cubic is a variation of the [Cubic](#cubic) infill pattern that is specifically designed for support top layers. Will use more material than Lightning infill but will provide better strength. Nevertheless, it is still a low-density infill pattern. - -- **Horizontal Strength (X-Y):** Low -- **Vertical Strength (Z):** Low -- **Density Calculation:** % of layer before top shell layers -- **Material Usage:** Extra-Low -- **Print Time:** Extra-Low -- **Material/Time (Higher better):** Normal - -![infill-top-support-cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-support-cubic.png?raw=true) - -### Lightning - -Ultra-fast, ultra-low material infill. Designed for speed and efficiency, ideal for quick prints or non-structural prototypes. - -- **Horizontal Strength (X-Y):** Low -- **Vertical Strength (Z):** Low -- **Density Calculation:** % of layer before top shell layers -- **Material Usage:** Ultra-Low -- **Print Time:** Ultra-Low -- **Material/Time (Higher better):** Low - -![infill-top-lightning](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-lightning.png?raw=true) - -### Honeycomb - -Hexagonal pattern balancing strength and material use. Double walls in each hexagon increase material consumption. - -- **Horizontal Strength (X-Y):** High -- **Vertical Strength (Z):** High -- **Density Calculation:** % of total infill volume -- **Material Usage:** High -- **Print Time:** Ultra-High -- **Material/Time (Higher better):** Low - -![infill-top-honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-honeycomb.png?raw=true) - -### 3D Honeycomb - -This infill tries to generate a printable honeycomb structure by printing squares and octagons maintaining a vertical angle high enough to maintain contact with the previous layer. - -- **Horizontal Strength (X-Y):** Normal-High -- **Vertical Strength (Z):** Normal-High -- **Density Calculation:** Unknown -- **Material Usage:** Normal-Low -- **Print Time:** High -- **Material/Time (Higher better):** Low - -![infill-top-3d-honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-3d-honeycomb.png?raw=true) - -### 2D Honeycomb - -Vertical Honeycomb pattern. Acceptable torsional stiffness. Developed for low densities structures like wings. Improve over [2D Lattice](#2d-lattice) offers same performance with lower densities.This infill includes a Overhang angle parameter to improve the point of contact between layers and reduce the risk of delamination. - -- **Horizontal Strength (X-Y):** Normal-Low -- **Vertical Strength (Z):** Normal-Low -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal - -![infill-top-2d-honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-2d-honeycomb.png?raw=true) - -### 2D Lattice - -Low-strength pattern with good flexibility. You can adjust **Angle 1** and **Angle 2** to optimize the infill for your specific model. Each angle adjusts the plane of each layer generated by the pattern. 0° is vertical. - -- **Horizontal Strength (X-Y):** Normal-Low -- **Vertical Strength (Z):** Low -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal - -![infill-top-2d-lattice](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-2d-lattice.png?raw=true) - -### Cross Hatch - -Similar to [Gyroid](#gyroid) but with linear patterns, creating weak points at internal corners. -Easier to slice but consider using [TPMS-D](#tpms-d) or [Gyroid](#gyroid) for better strength and flexibility. - -- **Horizontal Strength (X-Y):** Normal-High -- **Vertical Strength (Z):** Normal-High -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-High -- **Material/Time (Higher better):** Normal-Low - -![infill-top-cross-hatch](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-cross-hatch.png?raw=true) - -### TPMS-D - -Triply Periodic Minimal Surface (Schwarz Diamond). Hybrid between [Cross Hatch](#cross-hatch) and [Gyroid](#gyroid), combining rigidity and smooth transitions. Isotropic and strong in all directions. This geometry is faster to slice than Gyroid, but slower than Cross Hatch. - -- **Horizontal Strength (X-Y):** High -- **Vertical Strength (Z):** High -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** High -- **Material/Time (Higher better):** Normal-Low - -![infill-top-tpms-d](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-tpms-d.png?raw=true) - -### Gyroid - -Mathematical, isotropic surface providing equal strength in all directions. Excellent for strong, flexible prints and resin filling due to its interconnected structure. This pattern may require more time to slice because of all the points needed to generate each curve. If your model has complex geometry, consider using a simpler infill pattern like [TPMS-D](#tpms-d) or [Cross Hatch](#cross-hatch). - -- **Horizontal Strength (X-Y):** High -- **Vertical Strength (Z):** High -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-High -- **Material/Time (Higher better):** Normal-Low - -![infill-top-gyroid](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-gyroid.png?raw=true) - -### Concentric - -Fills the area with progressively smaller versions of the outer contour, creating a concentric pattern. Ideal for 100% infill or flexible prints. - -- **Horizontal Strength (X-Y):** Low -- **Vertical Strength (Z):** Normal -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal -- **Material/Time (Higher better):** Normal-High - -![infill-top-concentric](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-concentric.png?raw=true) - -### Hilbert Curve - -Hilbert Curve is a space-filling curve that can be used to create a continuous infill pattern. It is known for its Esthetic appeal and ability to fill space efficiently. -Print speed is very low due to the complexity of the path, which can lead to longer print times. It is not recommended for structural parts but can be used for Esthetic purposes. - -- **Horizontal Strength (X-Y):** Low -- **Vertical Strength (Z):** Normal -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** High -- **Material/Time (Higher better):** Low - -![infill-top-hilbert-curve](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-hilbert-curve.png?raw=true) - -### Archimedean Chords - -Spiral pattern that fills the area with concentric arcs, creating a smooth and continuous infill. Can be filled with resin thanks to its interconnected hollow structure, which allows the resin to flow through it and cure properly. - -- **Horizontal Strength (X-Y):** Low -- **Vertical Strength (Z):** Normal -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal-Low -- **Material/Time (Higher better):** Normal-High - -![infill-top-archimedean-chords](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-archimedean-chords.png?raw=true) - -### Octagram Spiral - -Esthetic pattern with low strength and high print time. - -- **Horizontal Strength (X-Y):** Low -- **Vertical Strength (Z):** Normal -- **Density Calculation:** % of total infill volume -- **Material Usage:** Normal -- **Print Time:** Normal -- **Material/Time (Higher better):** Normal-Low - -![infill-top-octagram-spiral](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-octagram-spiral.png?raw=true) +> [!TIP] +> See [Infill Patterns Wiki List](strength_settings_patterns) with **detailed specifications**, including their strengths and weaknesses. ## Credits diff --git a/doc/print_settings/strength/strength_settings_infill_rotation_template_metalanguage.md b/doc/print_settings/strength/strength_settings_infill_rotation_template_metalanguage.md index 456da55c67..ee323e6c9f 100644 --- a/doc/print_settings/strength/strength_settings_infill_rotation_template_metalanguage.md +++ b/doc/print_settings/strength/strength_settings_infill_rotation_template_metalanguage.md @@ -1,6 +1,6 @@ # Infill rotation template metalanguage -This metalanguage provides a way to define the [direction and rotation](strength_settings_infill#direction-and-rotation) of patterns in 3D printing. +This metalanguage provides a way to define the [direction and rotation](strength_settings_infill#direction-and-rotation) of [patterns](strength_settings_patterns) in 3D printing. - [Basic instructions](#basic-instructions) - [Defined angle](#defined-angle) diff --git a/doc/print_settings/strength/strength_settings_patterns.md b/doc/print_settings/strength/strength_settings_patterns.md new file mode 100644 index 0000000000..d1ff653f86 --- /dev/null +++ b/doc/print_settings/strength/strength_settings_patterns.md @@ -0,0 +1,477 @@ +# Patterns + +Patterns determine how material is distributed within a print. Different patterns can affect strength, flexibility and print speed using the same density setting. + +There is no one-size-fits-all solution, as the best pattern depends on the specific print and its requirements. + +Many patterns may look similar and have similar overall specifications, but they can behave very differently in practice. +As most settings in 3D printing, experience is the best way to determine which pattern works best for your specific needs. + +## Patterns Quick Reference + +| | Pattern | Applies to | X-Y Strength | Z Strength | Material Usage | Print Time | +|---|---|---|---|---|---|---| +| ![param_monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_monotonic.svg?raw=true) | [Monotonic](#monotonic) | - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - **[Surface](strength_settings_top_bottom_shells)** | Normal | Normal | Normal-High | Normal-Low | +| ![param_monotonicline](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_monotonicline.svg?raw=true) | [Monotonic line](#monotonic-line) | - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - **[Surface](strength_settings_top_bottom_shells)** | Normal | Normal | Normal | Normal | +| ![param_rectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_rectilinear.svg?raw=true) | [Rectilinear](#rectilinear) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - **[Surface](strength_settings_top_bottom_shells)** - **[Ironing](quality_settings_ironing)** | Normal-Low | Low | Normal | Normal-Low | +| ![param_alignedrectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_alignedrectilinear.svg?raw=true) | [Aligned Rectilinear](#aligned-rectilinear) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - **[Surface](strength_settings_top_bottom_shells)** | Normal-Low | Normal | Normal | Normal-Low | +| ![param_zigzag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_zigzag.svg?raw=true) | [Zig Zag](#zig-zag) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal-Low | Low | Normal | Normal-Low | +| ![param_crosszag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_crosszag.svg?raw=true) | [Cross Zag](#cross-zag) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal | Low | Normal | Normal-Low | +| ![param_lockedzag](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_lockedzag.svg?raw=true) | [Locked Zag](#locked-zag) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal-Low | Normal-Low | Low | Extra-High | +| ![param_line](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_line.svg?raw=true) | [Line](#line) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Low | Low | Normal-High | Normal-Low | +| ![param_grid](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_grid.svg?raw=true) | [Grid](#grid) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | High | High | Normal-High | Normal-Low | +| ![param_triangles](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_triangles.svg?raw=true) | [Triangles](#triangles) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | High | Normal | Normal-High | Normal-Low | +| ![param_tri-hexagon](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_tri-hexagon.svg?raw=true) | [Tri-hexagon](#tri-hexagon) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | High | Normal-High | Normal-High | Normal-Low | +| ![param_cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_cubic.svg?raw=true) | [Cubic](#cubic) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | High | High | Normal-High | Normal-Low | +| ![param_adaptivecubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_adaptivecubic.svg?raw=true) | [Adaptive Cubic](#adaptive-cubic) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal-High | Normal-High | Normal | Low | +| ![param_quartercubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_quartercubic.svg?raw=true) | [Quarter Cubic](#quarter-cubic) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | High | High | Normal-High | Normal-Low | +| ![param_supportcubic](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_supportcubic.svg?raw=true) | [Support Cubic](#support-cubic) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Low | Low | Normal | Extra-Low | +| ![param_lightning](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_lightning.svg?raw=true) | [Lightning](#lightning) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Low | Low | Low | Ultra-Low | +| ![param_honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_honeycomb.svg?raw=true) | [Honeycomb](#honeycomb) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | High | High | Low | Ultra-High | +| ![param_3dhoneycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_3dhoneycomb.svg?raw=true) | [3D Honeycomb](#3d-honeycomb) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal-High | Normal-High | Low | High | +| ![param_lateral-honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_lateral-honeycomb.svg?raw=true) | [Lateral Honeycomb](#lateral-honeycomb) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal-Low | Normal-Low | Normal-High | Normal-Low | +| ![param_lateral-lattice](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_lateral-lattice.svg?raw=true) | [Lateral Lattice](#lateral-lattice) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal-Low | Low | Normal-High | Normal-Low | +| ![param_crosshatch](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_crosshatch.svg?raw=true) | [Cross Hatch](#cross-hatch) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal-High | Normal-High | Normal-Low | Normal-High | +| ![param_tpmsd](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_tpmsd.svg?raw=true) | [TPMS-D](#tpms-d) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | High | High | Normal-Low | High | +| ![param_tpmsfk](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_tpmsfk.svg?raw=true) | [TPMS-FK](#tpms-fk) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | Normal-High | Normal-High | Low | High | +| ![param_gyroid](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_gyroid.svg?raw=true) | [Gyroid](#gyroid) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** | High | High | Normal-Low | Normal-High | +| ![param_concentric](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_concentric.svg?raw=true) | [Concentric](#concentric) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - **[Surface](strength_settings_top_bottom_shells)** - **[Ironing](quality_settings_ironing)** | Low | Normal | Normal-High | Normal-Low | +| ![param_hilbertcurve](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_hilbertcurve.svg?raw=true) | [Hilbert Curve](#hilbert-curve) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - **[Surface](strength_settings_top_bottom_shells)** | Low | Normal | Low | High | +| ![param_archimedeanchords](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_archimedeanchords.svg?raw=true) | [Archimedean Chords](#archimedean-chords) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - **[Surface](strength_settings_top_bottom_shells)** | Low | Normal | Normal-High | Normal-Low | +| ![param_octagramspiral](https://github.com/SoftFever/OrcaSlicer/blob/main/resources/images/param_octagramspiral.svg?raw=true) | [Octagram Spiral](#octagram-spiral) | - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - **[Surface](strength_settings_top_bottom_shells)** | Low | Normal | Normal-Low | Normal | + +> [!NOTE] +> You can download [infill_desc_calculator.xlsx](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/print_settings/strength/infill_desc_calculator.xlsx?raw=true) used to calculate the values above. + +## Monotonic + +[Rectilinear](#rectilinear) in a uniform direction for a smoother visual surface. + +- **Horizontal Strength (X-Y):** Normal +- **Vertical Strength (Z):** Normal +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Solid Infill](strength_settings_infill#internal-solid-infill)** + - **[Surface](strength_settings_top_bottom_shells)** + +![infill-top-monotonic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-monotonic.png?raw=true) + +## Monotonic line + +[Monotonic](#monotonic) but avoids overlapping with the perimeter, reducing excess material at joints. May introduce visible seams and increase print time. + +- **Horizontal Strength (X-Y):** Normal +- **Vertical Strength (Z):** Normal +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal +- **Material/Time (Higher better):** Normal +- **Applies to:** + - **[Solid Infill](strength_settings_infill#internal-solid-infill)** + - **[Surface](strength_settings_top_bottom_shells)** + +![infill-top-monotonic-line](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-monotonic-line.png?raw=true) + +## Rectilinear + +Parallel lines spaced according to infill density. Each layer is printed perpendicular to the previous, resulting in low vertical bonding. Consider using new [Zig Zag](#zig-zag) infill instead. + +- **Horizontal Strength (X-Y):** Normal-Low +- **Vertical Strength (Z):** Low +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** + - **[Surface](strength_settings_top_bottom_shells)** + - **[Ironing](quality_settings_ironing)** + +![infill-top-rectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-rectilinear.png?raw=true) + +## Aligned Rectilinear + +Parallel lines spaced by the infill spacing, each layer printed in the same direction as the previous layer. Good horizontal strength perpendicular to the lines, but terrible in parallel direction. +Recommended with layer anchoring to improve not perpendicular strength. + +- **Horizontal Strength (X-Y):** Normal-Low +- **Vertical Strength (Z):** Normal +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** + - **[Surface](strength_settings_top_bottom_shells)** + +![infill-top-aligned-rectilinear](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-aligned-rectilinear.png?raw=true) + +## Zig Zag + +Similar to [rectilinear](#rectilinear) with consistent pattern between layers. Allows you to add a Symmetric infill Y axis for models with two symmetric parts. + +- **Horizontal Strength (X-Y):** Normal-Low +- **Vertical Strength (Z):** Low +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-zig-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-zig-zag.png?raw=true) + +## Cross Zag + +Similar to [Zig Zag](#zig-zag) but displacing each layer with Infill shift step parameter. + +- **Horizontal Strength (X-Y):** Normal +- **Vertical Strength (Z):** Low +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-cross-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-cross-zag.png?raw=true) + +## Locked Zag + +Adaptive version of [Zig Zag](#zig-zag) adding an external skin texture to interlock layers and a low material skeleton. + +- **Horizontal Strength (X-Y):** Normal-Low +- **Vertical Strength (Z):** Normal-Low +- **Density Calculation:** Same as [Zig Zag](#zig-zag) but increasing near walls +- **Material Usage:** Normal-High +- **Print Time:** Extra-High +- **Material/Time (Higher better):** Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-locked-zag](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-locked-zag.png?raw=true) + +## Line + +Similar to [rectilinear](#rectilinear), but each line is slightly rotated to improve print speed. + +- **Horizontal Strength (X-Y):** Low +- **Vertical Strength (Z):** Low +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-line](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-line.png?raw=true) + +## Grid + +Two-layer pattern of perpendicular lines, forming a grid. Overlapping points may cause noise or artifacts. + +- **Horizontal Strength (X-Y):** High +- **Vertical Strength (Z):** High +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-grid](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-grid.png?raw=true) + +## Triangles + +Triangle-based grid, offering strong X-Y strength but with triple overlaps at intersections. + +- **Horizontal Strength (X-Y):** High +- **Vertical Strength (Z):** Normal +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-triangles](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-triangles.png?raw=true) + +## Tri-hexagon + +Similar to the [triangles](#triangles) pattern but offset to prevent triple overlaps at intersections. This design combines triangles and hexagons, providing excellent X-Y strength. + +- **Horizontal Strength (X-Y):** High +- **Vertical Strength (Z):** Normal-High +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-tri-hexagon](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-tri-hexagon.png?raw=true) + +## Cubic + +3D cube pattern with corners facing down, distributing force in all directions. Triangles in the horizontal plane provide good X-Y strength. + +- **Horizontal Strength (X-Y):** High +- **Vertical Strength (Z):** High +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-cubic.png?raw=true) + +## Adaptive Cubic + +[Cubic](#cubic) pattern with adaptive density: denser near walls, sparser in the center. Saves material and time while maintaining strength, ideal for large prints. + +- **Horizontal Strength (X-Y):** Normal-High +- **Vertical Strength (Z):** Normal-High +- **Density Calculation:** Same as [Cubic](#cubic) but reduced in the center +- **Material Usage:** Low +- **Print Time:** Low +- **Material/Time (Higher better):** Normal +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-adaptive-cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-adaptive-cubic.png?raw=true) + +## Quarter Cubic + +[Cubic](#cubic) pattern with extra internal divisions, improving X-Y strength. + +- **Horizontal Strength (X-Y):** High +- **Vertical Strength (Z):** High +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-quarter-cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-quarter-cubic.png?raw=true) + +## Support Cubic + +Support |Cubic is a variation of the [Cubic](#cubic) infill pattern that is specifically designed for support top layers. Will use more material than Lightning infill but will provide better strength. Nevertheless, it is still a low-density infill pattern. + +- **Horizontal Strength (X-Y):** Low +- **Vertical Strength (Z):** Low +- **Density Calculation:** % of layer before top shell layers +- **Material Usage:** Extra-Low +- **Print Time:** Extra-Low +- **Material/Time (Higher better):** Normal +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-support-cubic](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-support-cubic.png?raw=true) + +## Lightning + +Ultra-fast, ultra-low material infill. Designed for speed and efficiency, ideal for quick prints or non-structural prototypes. + +- **Horizontal Strength (X-Y):** Low +- **Vertical Strength (Z):** Low +- **Density Calculation:** % of layer before top shell layers +- **Material Usage:** Ultra-Low +- **Print Time:** Ultra-Low +- **Material/Time (Higher better):** Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-lightning](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-lightning.png?raw=true) + +## Honeycomb + +Hexagonal pattern balancing strength and material use. Double walls in each hexagon increase material consumption. + +- **Horizontal Strength (X-Y):** High +- **Vertical Strength (Z):** High +- **Density Calculation:** % of total infill volume +- **Material Usage:** High +- **Print Time:** Ultra-High +- **Material/Time (Higher better):** Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-honeycomb.png?raw=true) + +## 3D Honeycomb + +This infill tries to generate a printable honeycomb structure by printing squares and octagons maintaining a vertical angle high enough to maintain contact with the previous layer. + +- **Horizontal Strength (X-Y):** Normal-High +- **Vertical Strength (Z):** Normal-High +- **Density Calculation:** Unknown +- **Material Usage:** Normal-Low +- **Print Time:** High +- **Material/Time (Higher better):** Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-3d-honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-3d-honeycomb.png?raw=true) + +## Lateral Honeycomb + +Vertical Honeycomb pattern. Acceptable torsional stiffness. Developed for low densities structures like wings. Improve over [Lateral Lattice](#lateral-lattice) offers same performance with lower densities.This infill includes a Overhang angle parameter to improve the point of contact between layers and reduce the risk of delamination. + +- **Horizontal Strength (X-Y):** Normal-Low +- **Vertical Strength (Z):** Normal-Low +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-lateral-honeycomb](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-lateral-honeycomb.png?raw=true) + +## Lateral Lattice + +Low-strength pattern with good flexibility. You can adjust **Angle 1** and **Angle 2** to optimize the infill for your specific model. Each angle adjusts the plane of each layer generated by the pattern. 0° is vertical. + +- **Horizontal Strength (X-Y):** Normal-Low +- **Vertical Strength (Z):** Low +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-lateral-lattice](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-lateral-lattice.png?raw=true) + +## Cross Hatch + +Similar to [Gyroid](#gyroid) but with linear patterns, creating weak points at internal corners. +Easier to slice but consider using [TPMS-D](#tpms-d) or [Gyroid](#gyroid) for better strength and flexibility. + +- **Horizontal Strength (X-Y):** Normal-High +- **Vertical Strength (Z):** Normal-High +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-High +- **Material/Time (Higher better):** Normal-Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-cross-hatch](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-cross-hatch.png?raw=true) + +## TPMS-D + +Triply Periodic Minimal Surface (Schwarz Diamond). Hybrid between [Cross Hatch](#cross-hatch) and [Gyroid](#gyroid), combining rigidity and smooth transitions. Isotropic and strong in all directions. This geometry is faster to slice than Gyroid, but slower than Cross Hatch. + +- **Horizontal Strength (X-Y):** High +- **Vertical Strength (Z):** High +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** High +- **Material/Time (Higher better):** Normal-Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-tpms-d](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-tpms-d.png?raw=true) + +## TPMS-FK + +Triply Periodic Minimal Surface (Fischer–Koch S) pattern. Its smooth, continuous geometry resembles trabecular bone microstructure, offering a balance between rigidity and energy absorption. Compared to [TPMS-D](#tpms-d), it has more complex curvature, which can improve load distribution and shock absorption in functional parts. + +- **Horizontal Strength (X-Y):** Normal-High +- **Vertical Strength (Z):** Normal-High +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** High +- **Material/Time (Higher better):** Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-tpms-fk](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-tpms-fk.png?raw=true) + +## Gyroid + +Mathematical, isotropic surface providing equal strength in all directions. Excellent for strong, flexible prints and resin filling due to its interconnected structure. This pattern may require more time to slice because of all the points needed to generate each curve. If your model has complex geometry, consider using a simpler infill pattern like [TPMS-D](#tpms-d) or [Cross Hatch](#cross-hatch). + +- **Horizontal Strength (X-Y):** High +- **Vertical Strength (Z):** High +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-High +- **Material/Time (Higher better):** Normal-Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** + +![infill-top-gyroid](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-gyroid.png?raw=true) + +## Concentric + +Fills the area with progressively smaller versions of the outer contour, creating a concentric pattern. Ideal for 100% infill or flexible prints. + +- **Horizontal Strength (X-Y):** Low +- **Vertical Strength (Z):** Normal +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** + - **[Surface](strength_settings_top_bottom_shells)** + - **[Ironing](quality_settings_ironing)** + +![infill-top-concentric](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-concentric.png?raw=true) + +## Hilbert Curve + +Hilbert Curve is a space-filling curve that can be used to create a continuous infill pattern. It is known for its Esthetic appeal and ability to fill space efficiently. +Print speed is very low due to the complexity of the path, which can lead to longer print times. It is not recommended for structural parts but can be used for Esthetic purposes. + +- **Horizontal Strength (X-Y):** Low +- **Vertical Strength (Z):** Normal +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** High +- **Material/Time (Higher better):** Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** + - **[Surface](strength_settings_top_bottom_shells)** + +![infill-top-hilbert-curve](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-hilbert-curve.png?raw=true) + +## Archimedean Chords + +Spiral pattern that fills the area with concentric arcs, creating a smooth and continuous infill. Can be filled with resin thanks to its interconnected hollow structure, which allows the resin to flow through it and cure properly. + +- **Horizontal Strength (X-Y):** Low +- **Vertical Strength (Z):** Normal +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal-Low +- **Material/Time (Higher better):** Normal-High +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** + - **[Surface](strength_settings_top_bottom_shells)** + +![infill-top-archimedean-chords](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-archimedean-chords.png?raw=true) + +## Octagram Spiral + +Esthetic pattern with low strength and high print time. + +- **Horizontal Strength (X-Y):** Low +- **Vertical Strength (Z):** Normal +- **Density Calculation:** % of total infill volume +- **Material Usage:** Normal +- **Print Time:** Normal +- **Material/Time (Higher better):** Normal-Low +- **Applies to:** + - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - **[Solid Infill](strength_settings_infill#internal-solid-infill)** + - **[Surface](strength_settings_top_bottom_shells)** + +![infill-top-octagram-spiral](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/fill/infill-top-octagram-spiral.png?raw=true) diff --git a/doc/print_settings/strength/strength_settings_top_bottom_shells.md b/doc/print_settings/strength/strength_settings_top_bottom_shells.md index 7870d47232..a4c8885243 100644 --- a/doc/print_settings/strength/strength_settings_top_bottom_shells.md +++ b/doc/print_settings/strength/strength_settings_top_bottom_shells.md @@ -1,37 +1,50 @@ # Top and Bottom Shells -Controls how the top and bottom solid layers (shells) are generated in the print. +Controls how the top and bottom solid layers (shells) are generated. ![top-bottom-shells](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/top-bottom-shells/top-bottom-shells.png?raw=true) -## Shells Layers +## Shell Layers -This is the number of solid layers of shell, including the surface layer. When the thickness calculated by this value is thinner than shell thickness, the shell layers will be increased. +This is the number of solid shell layers, including the surface layer. +When the thickness calculated from this value is less than [shell thickness](#shell-thickness), the shell layers will be increased. + +These layers are printed over the [sparse infill](strength_settings_infill), so increasing **shell layers** will increase overall part strength and top surface quality. +It's usually recommended to have at least 3 shell layers for most prints. ## Shell Thickness -The number of solid layers is increased when slicing if the thickness calculated by shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of shell is absolutely determined by shell layers. +The number of solid layers is increased during slicing if the thickness calculated from shell layers is thinner than this value. This avoids having too thin a shell when layer height is small. +0 means this setting is disabled and shell thickness is determined entirely by [shell layers](#shell-layers). ## Surface Density -This setting controls the density of the top and bottom surfaces. A value of 100% means a solid surface, while lower values create a sparse surface. This can be used for esthetic purposes, gripping or making interfaces with the bed. +This setting controls the density of the top and bottom surfaces. A value of 100% means a solid surface, while lower values create a sparse surface. +This can be used for aesthetic purposes, improving grip or creating interfaces. ## Infill/Wall Overlap -Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill. +The top solid infill area is slightly enlarged to overlap with walls for better bonding and to minimize pinholes where the infill meets the walls. +A value of 25-30% is a good starting point. The percentage value is relative to the line width of the sparse infill. + +> [!TIP] +> Check [Monotonic Line](strength_settings_patterns#monotonic-line) to learn about its overlaying differences with [Monotonic](strength_settings_patterns#monotonic) and [Rectilinear](strength_settings_patterns#rectilinear). ## Surface Pattern -This setting controls the pattern of the surface. The options are: +This setting controls the pattern of the surfaces. +If [Shell Layers](#shell-layers) is greater than 1, the surface pattern will be applied to the outermost shell layer only and the rest will use [Internal Solid Infill Pattern](strength_settings_infill#internal-solid-infill). -- **[Concentric](strength_settings_infill#concentric):** Fills the surface with inward-tracing loops that follow the outer contour. -- **[Rectilinear](strength_settings_infill#rectilinear):** Fills the surface with straight lines alternating direction per layer. -- **Monotonic:** Prints lines in a uniform direction for a smoother visual surface. -- **Monotonic Lines:** Similar to Monotonic but avoids overlapping with the perimeter, reducing excess material at joints. May introduce visible seams. -- **[Aligned Rectilinear](strength_settings_infill#aligned-rectilinear):** The surface is printed with rectilinear lines that are aligned with the infill pattern. -- **[Hilbert Curve](strength_settings_infill#hilbert-curve):** Applies a space-filling curve for even material distribution and a unique appearance. Slow to print but useful in esthetic applications. -- **[Archimedean Chords](strength_settings_infill#archimedean-chords):** Generates concentric arc-like lines, promoting uniform material spread. -- **[Octagram Spiral](strength_settings_infill#octagram-spiral):** Creates an octagonal spiral for decorative, esthetic surfaces. +> [!TIP] +> See [Infill Patterns Wiki List](strength_settings_patterns) with **detailed specifications**, including their strengths and weaknesses. -> [!NOTE] -> Some patterns may have further information in its [Sparse Infill Pattern Wiki](strength_settings_infill#sparse-infill-pattern) + The surface patterns are: + +- **[Concentric](strength_settings_patterns#concentric)** +- **[Rectilinear](strength_settings_patterns#rectilinear)** +- **[Monotonic](strength_settings_patterns#monotonic)** +- **[Monotonic Line](strength_settings_patterns#monotonic-line)** Usually Recommended for Top. +- **[Aligned Rectilinear](strength_settings_patterns#aligned-rectilinear)** +- **[Hilbert Curve](strength_settings_patterns#hilbert-curve)** +- **[Archimedean Chords](strength_settings_patterns#archimedean-chords)** +- **[Octagram Spiral](strength_settings_patterns#octagram-spiral)** diff --git a/doc/print_settings/strength/strength_settings_walls.md b/doc/print_settings/strength/strength_settings_walls.md index b7c8b03798..badfcde8d1 100644 --- a/doc/print_settings/strength/strength_settings_walls.md +++ b/doc/print_settings/strength/strength_settings_walls.md @@ -1,17 +1,45 @@ # Walls -In 3D printing, "walls" refer to the outer layers of a printed object that provide its shape and structural integrity. Adjusting wall settings can significantly affect the strength, appearance, and print time of your model. +In 3D printing, "walls" refer to the outer layers of a printed object that provide its shape and structural integrity. +Adjusting wall settings can significantly affect layer adhesion, strength, appearance and print time of your model. + +![walls](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/walls/walls.png?raw=true) + +- [Wall loops](#wall-loops) +- [Alternate extra wall](#alternate-extra-wall) +- [Detect thin wall](#detect-thin-wall) ## Wall loops -"Wall loops" refers to the number of times the outer wall is printed in a loop. Increasing the wall loops can improve the strength and durability of the print, but may also increase print time. +"Wall loops" refers to the number of times the outer wall is printed in a loop. +Increasing the wall loops will: +- Enhance: + - Layer adhesion + - Strength + - Rigidity +- Reduce infill ghosting +- Increase print time ## Alternate extra wall This setting adds an extra wall to every other layer. This way the infill gets wedged vertically between the walls, resulting in stronger prints. When this option is enabled, the ensure vertical shell thickness option needs to be disabled. -Using lightning infill together with this option is not recommended as there is limited infill to anchor the extra perimeters to. + +> [!WARNING] +> It's not recommended to use this option with: +> - [Lightning infill](strength_settings_patterns#lightning) as there is limited infill to anchor the extra perimeters to. +> - **[Ensure vertical shell thickness: ALL](strength_settings_advanced#ensure-vertical-shell-thickness)** ## Detect thin wall -Detect thin wall which can't contain two line width. And use single line to print. Maybe printed not very well, because it's not closed loop. +By default, walls are printed as closed loops. When a wall is too thin to contain two line widths, enabling "Detect thin walls" prints it as a single extrusion line. +Thin walls printed this way may have reduced surface quality and strength because they are not closed loops. + +> [!TIP] +> Usually, it is recommended to use [Arachne wall generator](quality_settings_wall_generator#arachne) which will disable "Detect thin walls" because it uses a different approach to wall generation. + +- In small details it can generate details that wouldn't be possible with traditional wall generation methods. + ![walls-small-detect-thin-off](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/walls/walls-small-detect-thin-off.png?raw=true) + ![walls-small-detect-thin-on](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/walls/walls-small-detect-thin-on.png?raw=true) +- In large prints, it can generate defects more easily due to the reduced wall thickness. + ![walls-big-detect-thin-off-on](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/walls/walls-big-detect-thin-off-on.png?raw=true) diff --git a/doc/printer_settings/Auxiliary-fan.md b/doc/printer_settings/Auxiliary-fan.md index 95d1ec0158..b273ca1383 100644 --- a/doc/printer_settings/Auxiliary-fan.md +++ b/doc/printer_settings/Auxiliary-fan.md @@ -1,30 +1,40 @@ # Auxiliary Fan -OrcaSlicer use `M106 P2` command to control auxiliary cooling fan. +OrcaSlicer uses `M106 P#` / `M107 P#` to control any fans managed by the slicer. -If you are using Klipper, you can define a `M106` macro to control the both normal part cooling fan and auxiliary fan and exhaust fan. -Below is a reference configuration for Klipper. +- `P0`: part cooling fan (default layer fan) +- `P1` (if present): an additional fan +- `P2`: often used as Aux / CPAP / Booster +- `P3` (and higher): sometimes Exhaust / Enclosure, etc. -> [!NOTE] -> Don't forget to change the pin name to the actual pin name you are using in the configuration +With Klipper you can create macros that translate both the OrcaSlicer numeric fan index `P` and **human‑readable names** for your physical fans. This keeps compatibility with generated G‑code (M106 P0 / M106 P2 …) while letting you address fans by name internally. + +> [!WARNING] +> Adjust pin names and parameters (power, cycle_time, etc.) to match your hardware. + +- [Simple option (indexes only → fan0, fan2, fan3)](#simple-option-indexes-only--fan0-fan2-fan3) +- [Advanced option (Index ⇄ Name mapping)](#advanced-option-index--name-mapping) + - [Quick customization](#quick-customization) + - [Usage](#usage) + +## Simple option (indexes only → fan0, fan2, fan3) + +This is the original basic example where the `P` index is concatenated (`fan0`, `fan2`, `fan3`). Use it if you don't need custom names: ```ini -# instead of using [fan], we define the default part cooling fan with [fan_generic] here -# this is the default part cooling fan +# Part cooling fan [fan_generic fan0] pin: PA7 cycle_time: 0.01 hardware_pwm: false -# this is the auxiliary fan -# comment out it if you don't have auxiliary fan +# Auxiliary fan (comment out if you don't have it) [fan_generic fan2] pin: PA8 cycle_time: 0.01 hardware_pwm: false -# this is the exhaust fan -# comment out it if you don't have exhaust fan +# Exhaust / enclosure fan (comment out if you don't have it) [fan_generic fan3] pin: PA9 cycle_time: 0.01 @@ -35,4 +45,97 @@ gcode: {% set fan = 'fan' + (params.P|int if params.P is defined else 0)|string %} {% set speed = (params.S|float / 255 if params.S is defined else 1.0) %} SET_FAN_SPEED FAN={fan} SPEED={speed} + +[gcode_macro M107] +gcode: + {% set fan = 'fan' + (params.P|int if params.P is defined else 0)|string %} + {% if params.P is defined %} + SET_FAN_SPEED FAN={fan} SPEED=0 + {% else %} + # No P -> turn off typical defined fans + SET_FAN_SPEED FAN=fan0 SPEED=0 + SET_FAN_SPEED FAN=fan2 SPEED=0 + SET_FAN_SPEED FAN=fan3 SPEED=0 + {% endif %} ``` + +## Advanced option (Index ⇄ Name mapping) + +Lets you use descriptive names like `CPAP`, `EXHAUST`, etc. Useful if you re‑wire or repurpose fans without changing slicer output. Just keep `fan_map` updated. + +```ini +# Example with friendly names + comments showing OrcaSlicer index + +[fan_generic CPAP] # fan 0 OrcaSlicer +pin: PB7 +max_power: 0.8 +shutdown_speed: 0 +kick_start_time: 0.100 +cycle_time: 0.005 +hardware_pwm: False +off_below: 0.10 + +[fan_generic EXHAUST] # fan 3 OrcaSlicer +pin: PE5 +#max_power: +#shutdown_speed: +cycle_time: 0.01 +hardware_pwm: False +#kick_start_time: +off_below: 0.2 + +# If you had another (e.g. P2) add here: +# [fan_generic AUX] +# pin: PXn + +[gcode_macro M106] +description: "Set fan speed (Orca compatible)" +gcode: + {% set fan_map = { + 0: "CPAP", # Orca P0 → CPAP blower + 3: "EXHAUST", # Orca P3 → Exhaust + # 2: "AUX", # Uncomment if you define AUX + } %} + {% set p = params.P|int if 'P' in params else 0 %} + {% set fan = fan_map[p] if p in fan_map else fan_map[0] %} + {% set speed = (params.S|float / 255 if 'S' in params else 1.0) %} + SET_FAN_SPEED FAN={fan} SPEED={speed} + +[gcode_macro M107] +description: "Turn off fans. No P = all, P# = specific" +gcode: + {% set fan_map = { + 0: "CPAP", + 3: "EXHAUST", + # 2: "AUX", + } %} + {% if 'P' in params %} + {% set p = params.P|int %} + {% if p in fan_map %} + SET_FAN_SPEED FAN={fan_map[p]} SPEED=0 + {% else %} + RESPOND PREFIX="warn" MSG="Unknown fan index P{{p}}" + {% endif %} + {% else %} + # No P -> turn off all mapped fans + {% for f in fan_map.values() %} + SET_FAN_SPEED FAN={f} SPEED=0 + {% endfor %} + {% endif %} +``` + +### Quick customization + +1. Add / remove entries in `fan_map` to reflect the indexes the slicer may use. +2. Keep comments like `# fan X OrcaSlicer` next to each `[fan_generic]` for easy correlation. +3. Tune `max_power`, `off_below`, `cycle_time` according to fan type (CPAP blower vs axial exhaust). + +### Usage + +- From OrcaSlicer: `M106 P0 S255` (100% CPAP), `M106 P3 S128` (~50% EXHAUST). +- Turn one off: `M107 P3`. Turn all off: `M107`. +- You can still manually use `SET_FAN_SPEED FAN=CPAP SPEED=0.7` in the Klipper console. + +--- + +Pick the variant that best fits your workflow; the advanced version provides extra clarity and flexibility while remaining fully compatible with standard OrcaSlicer G-code output. diff --git a/doc/printer_settings/adaptive-bed-mesh.md b/doc/printer_settings/adaptive-bed-mesh.md index 4607d63f94..2f8f7f3928 100644 --- a/doc/printer_settings/adaptive-bed-mesh.md +++ b/doc/printer_settings/adaptive-bed-mesh.md @@ -1,14 +1,14 @@ # Adaptive Bed Mesh Support -Orca Slicer introduces comprehensive support for adaptive bed meshing across a variety of firmware, including Marlin, Klipper, and RepRapFirmware (RRF). +OrcaSlicer introduces comprehensive support for adaptive bed meshing across a variety of firmware, including Marlin, Klipper, and RepRapFirmware (RRF). This feature allows users to seamlessly integrate adaptive bed mesh commands within the Machine Start G-code. -The implementation is designed to be straightforward, requiring no additional plugins or alterations to firmware settings, thereby enhancing user experience and print quality directly from Orca Slicer. +The implementation is designed to be straightforward, requiring no additional plugins or alterations to firmware settings, thereby enhancing user experience and print quality directly from OrcaSlicer. ![ABM-PrinterConfig](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/images/Adaptative-Bed-Mesh/ABM-PrinterConfig.png?raw=true) -## Settings in Orca Slicer +## Settings in OrcaSlicer `Bed mesh min`: This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (-99999, -99999), which means there are no limits, thus allowing probing across the entire bed. @@ -19,7 +19,7 @@ The implementation is designed to be straightforward, requiring no additional pl `Mesh margin`: This option determines the additional distance by which the adaptive bed mesh area should be expanded in the XY directions. > [!NOTE] -> Klipper users: Orca Slicer will adjust adaptive bed mesh area according to the margin. It is recommended to set the margin to 0 in Klipper config or pass 0 when calling BED_MESH_CALIBRATE command(please refer to the example below). +> Klipper users: OrcaSlicer will adjust adaptive bed mesh area according to the margin. It is recommended to set the margin to 0 in Klipper config or pass 0 when calling BED_MESH_CALIBRATE command(please refer to the example below). ## Available g-code variables for Adaptive Bed Mesh Command @@ -31,7 +31,7 @@ The implementation is designed to be straightforward, requiring no additional pl `ALGORITHM`: Identifies the algorithm used for adaptive bed mesh interpolation. This variable is useful for Klipper users. If bed_mesh_probe_count is less than 4, the algorithm is set to `lagrange`. Otherwise, it is set to `bicubic`. -## Example of Adaptive Bed Mesh usage in Orca Slicer +## Example of Adaptive Bed Mesh usage in OrcaSlicer ### Marlin diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 9932c5f5f5..c5088b7740 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2094,9 +2094,9 @@ void TabPrint::build() optgroup->append_single_option_line("support_line_width","quality_settings_line_width"); optgroup = page->new_optgroup(L("Seam"), L"param_seam"); - optgroup->append_single_option_line("seam_position", "quality_settings_seam"); - optgroup->append_single_option_line("staggered_inner_seams", "quality_settings_seam"); - optgroup->append_single_option_line("seam_gap","quality_settings_seam"); + optgroup->append_single_option_line("seam_position", "quality_settings_seam#seam-position"); + optgroup->append_single_option_line("staggered_inner_seams", "quality_settings_seam#staggered-inner-seams"); + optgroup->append_single_option_line("seam_gap","quality_settings_seam#seam-gap"); optgroup->append_single_option_line("seam_slope_type", "quality_settings_seam#scarf-joint-seam"); optgroup->append_single_option_line("seam_slope_conditional", "quality_settings_seam#scarf-joint-seam"); optgroup->append_single_option_line("scarf_angle_threshold", "quality_settings_seam#scarf-joint-seam"); @@ -2118,10 +2118,10 @@ void TabPrint::build() optgroup->append_single_option_line("slice_closing_radius", "quality_settings_precision#slice-gap-closing-radius"); optgroup->append_single_option_line("resolution", "quality_settings_precision#resolution"); optgroup->append_single_option_line("enable_arc_fitting", "quality_settings_precision#arc-fitting"); - optgroup->append_single_option_line("xy_hole_compensation", "quality_settings_precision#xy-compensation"); - optgroup->append_single_option_line("xy_contour_compensation", "quality_settings_precision#xy-compensation"); - optgroup->append_single_option_line("elefant_foot_compensation", "quality_settings_precision#elefant-foot-compensation"); - optgroup->append_single_option_line("elefant_foot_compensation_layers", "quality_settings_precision#elefant-foot-compensation"); + optgroup->append_single_option_line("xy_hole_compensation", "quality_settings_precision#x-y-compensation"); + optgroup->append_single_option_line("xy_contour_compensation", "quality_settings_precision#x-y-compensation"); + optgroup->append_single_option_line("elefant_foot_compensation", "quality_settings_precision#elephant-foot-compensation"); + optgroup->append_single_option_line("elefant_foot_compensation_layers", "quality_settings_precision#elephant-foot-compensation"); optgroup->append_single_option_line("precise_outer_wall", "quality_settings_precision#precise-wall"); optgroup->append_single_option_line("precise_z_height", "quality_settings_precision#precise-z-height"); optgroup->append_single_option_line("hole_to_polyhole", "quality_settings_precision#polyholes"); @@ -2132,7 +2132,7 @@ void TabPrint::build() optgroup->append_single_option_line("ironing_type", "quality_settings_ironing#type"); optgroup->append_single_option_line("ironing_pattern", "quality_settings_ironing#pattern"); optgroup->append_single_option_line("ironing_flow", "quality_settings_ironing#flow"); - optgroup->append_single_option_line("ironing_spacing", "quality_settings_ironing#spacing"); + optgroup->append_single_option_line("ironing_spacing", "quality_settings_ironing#line-spacing"); optgroup->append_single_option_line("ironing_inset", "quality_settings_ironing#inset"); optgroup->append_single_option_line("ironing_angle", "quality_settings_ironing#angle"); @@ -2190,17 +2190,17 @@ void TabPrint::build() page = add_options_page(L("Strength"), "custom-gcode_strength"); // ORCA: icon only visible on placeholders optgroup = page->new_optgroup(L("Walls"), L"param_wall"); - optgroup->append_single_option_line("wall_loops", "strength_settings_walls#wall-loop"); + optgroup->append_single_option_line("wall_loops", "strength_settings_walls#wall-loops"); optgroup->append_single_option_line("alternate_extra_wall", "strength_settings_walls#alternate-extra-wall"); optgroup->append_single_option_line("detect_thin_wall", "strength_settings_walls#detect-thin-wall"); optgroup = page->new_optgroup(L("Top/bottom shells"), L"param_shell"); - optgroup->append_single_option_line("top_shell_layers", "strength_settings_top_bottom_shells#shells-layers"); + optgroup->append_single_option_line("top_shell_layers", "strength_settings_top_bottom_shells#shell-layers"); optgroup->append_single_option_line("top_shell_thickness", "strength_settings_top_bottom_shells#shell-thickness"); optgroup->append_single_option_line("top_surface_density", "strength_settings_top_bottom_shells#surface-density"); optgroup->append_single_option_line("top_surface_pattern", "strength_settings_top_bottom_shells#surface-pattern"); - optgroup->append_single_option_line("bottom_shell_layers", "strength_settings_top_bottom_shells#shells-layers"); + optgroup->append_single_option_line("bottom_shell_layers", "strength_settings_top_bottom_shells#shell-layers"); optgroup->append_single_option_line("bottom_shell_thickness", "strength_settings_top_bottom_shells#shell-thickness"); optgroup->append_single_option_line("bottom_surface_density", "strength_settings_top_bottom_shells#surface-density"); optgroup->append_single_option_line("bottom_surface_pattern", "strength_settings_top_bottom_shells#surface-pattern"); @@ -2208,27 +2208,26 @@ void TabPrint::build() optgroup = page->new_optgroup(L("Infill"), L"param_infill"); optgroup->append_single_option_line("sparse_infill_density", "strength_settings_infill#sparse-infill-density"); - optgroup->append_single_option_line("fill_multiline", "strength_settings_infill##fill-multiline"); + optgroup->append_single_option_line("fill_multiline", "strength_settings_infill#fill-multiline"); optgroup->append_single_option_line("sparse_infill_pattern", "strength_settings_infill#sparse-infill-pattern"); optgroup->append_single_option_line("infill_direction", "strength_settings_infill#direction"); optgroup->append_single_option_line("sparse_infill_rotate_template", "strength_settings_infill#rotation"); - optgroup->append_single_option_line("skin_infill_density", "strength_settings_infill#locked-zag"); - optgroup->append_single_option_line("skeleton_infill_density", "strength_settings_infill#locked-zag"); - optgroup->append_single_option_line("infill_lock_depth", "strength_settings_infill#locked-zag"); - optgroup->append_single_option_line("skin_infill_depth", "strength_settings_infill#locked-zag"); - optgroup->append_single_option_line("skin_infill_line_width", "strength_settings_infill#locked-zag"); - optgroup->append_single_option_line("skeleton_infill_line_width", "strength_settings_infill#locked-zag"); - optgroup->append_single_option_line("symmetric_infill_y_axis", "strength_settings_infill#zig-zag"); - optgroup->append_single_option_line("infill_shift_step", "strength_settings_infill#cross-hatch"); - - optgroup->append_single_option_line("lateral_lattice_angle_1", "strength_settings_infill#2d-lattice"); - optgroup->append_single_option_line("lateral_lattice_angle_2", "strength_settings_infill#2d-lattice"); - optgroup->append_single_option_line("infill_overhang_angle", "strength_settings_infill#2d-honeycomb"); + optgroup->append_single_option_line("skin_infill_density", "strength_settings_patterns#locked-zag"); + optgroup->append_single_option_line("skeleton_infill_density", "strength_settings_patterns#locked-zag"); + optgroup->append_single_option_line("infill_lock_depth", "strength_settings_patterns#locked-zag"); + optgroup->append_single_option_line("skin_infill_depth", "strength_settings_patterns#locked-zag"); + optgroup->append_single_option_line("skin_infill_line_width", "strength_settings_patterns#locked-zag"); + optgroup->append_single_option_line("skeleton_infill_line_width", "strength_settings_patterns#locked-zag"); + optgroup->append_single_option_line("symmetric_infill_y_axis", "strength_settings_patterns#zig-zag"); + optgroup->append_single_option_line("infill_shift_step", "strength_settings_patterns#cross-hatch"); + optgroup->append_single_option_line("lateral_lattice_angle_1", "strength_settings_patterns#lateral-lattice"); + optgroup->append_single_option_line("lateral_lattice_angle_2", "strength_settings_patterns#lateral-lattice"); + optgroup->append_single_option_line("infill_overhang_angle", "strength_settings_patterns#lateral-honeycomb"); optgroup->append_single_option_line("infill_anchor_max", "strength_settings_infill#anchor"); optgroup->append_single_option_line("infill_anchor", "strength_settings_infill#anchor"); optgroup->append_single_option_line("internal_solid_infill_pattern", "strength_settings_infill#internal-solid-infill"); - optgroup->append_single_option_line("solid_infill_direction", "strength_settings_infill"); - optgroup->append_single_option_line("solid_infill_rotate_template", "strength_settings_infill"); + optgroup->append_single_option_line("solid_infill_direction", "strength_settings_infill#direction"); + optgroup->append_single_option_line("solid_infill_rotate_template", "strength_settings_infill#rotation"); optgroup->append_single_option_line("gap_fill_target", "strength_settings_infill#apply-gap-fill"); optgroup->append_single_option_line("filter_out_gap_fill", "strength_settings_infill#filter-out-tiny-gaps"); optgroup->append_single_option_line("infill_wall_overlap", "strength_settings_infill#infill-wall-overlap"); @@ -2654,10 +2653,10 @@ void TabPrintModel::build() auto page = add_options_page(L("Frequent"), "empty"); auto optgroup = page->new_optgroup(""); - optgroup->append_single_option_line("layer_height"); - optgroup->append_single_option_line("sparse_infill_density"); - optgroup->append_single_option_line("wall_loops"); - optgroup->append_single_option_line("enable_support", "support"); + optgroup->append_single_option_line("layer_height", "quality_settings_layer_height"); + optgroup->append_single_option_line("sparse_infill_density", "strength_settings_infill#sparse-infill-density"); + optgroup->append_single_option_line("wall_loops", "strength_settings_walls"); + optgroup->append_single_option_line("enable_support", "support_settings_support"); m_pages.pop_back(); m_pages.insert(m_pages.begin(), page); @@ -3531,7 +3530,7 @@ void TabFilament::build() //}; //optgroup->append_line(line); optgroup = page->new_optgroup(L("Cooling for specific layer"), L"param_cooling_specific_layer"); - optgroup->append_single_option_line("close_fan_the_first_x_layers", "auto-cooling"); + optgroup->append_single_option_line("close_fan_the_first_x_layers"); optgroup->append_single_option_line("full_fan_speed_layer"); optgroup = page->new_optgroup(L("Part cooling fan"), L"param_cooling_part_fan"); @@ -3546,13 +3545,13 @@ void TabFilament::build() line.append_option(optgroup->get_option("slow_down_layer_time")); optgroup->append_line(line); optgroup->append_single_option_line("reduce_fan_stop_start_freq"); - optgroup->append_single_option_line("slow_down_for_layer_cooling", "auto-cooling"); + optgroup->append_single_option_line("slow_down_for_layer_cooling"); optgroup->append_single_option_line("dont_slow_down_outer_wall"); optgroup->append_single_option_line("slow_down_min_speed"); - optgroup->append_single_option_line("enable_overhang_bridge_fan", "auto-cooling"); - optgroup->append_single_option_line("overhang_fan_threshold", "auto-cooling"); - optgroup->append_single_option_line("overhang_fan_speed", "auto-cooling"); + optgroup->append_single_option_line("enable_overhang_bridge_fan"); + optgroup->append_single_option_line("overhang_fan_threshold"); + optgroup->append_single_option_line("overhang_fan_speed"); optgroup->append_single_option_line("internal_bridge_fan_speed"); // ORCA: Add support for separate internal bridge fan speed control optgroup->append_single_option_line("support_material_interface_fan_speed"); optgroup->append_single_option_line("ironing_fan_speed"); // ORCA: Add support for ironing fan speed control @@ -3895,8 +3894,8 @@ void TabPrinter::build_fff() optgroup->append_single_option_line("disable_m73"); option = optgroup->get_option("thumbnails"); option.opt.full_width = true; - optgroup->append_single_option_line(option, "thumbnails"); - // optgroup->append_single_option_line("thumbnails_format", "thumbnails"); + optgroup->append_single_option_line(option); + // optgroup->append_single_option_line("thumbnails_format"); optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) { wxTheApp->CallAfter([this, opt_key, value]() { if (opt_key == "thumbnails" && m_config->has("thumbnails_format")) {