diff --git a/README.md b/README.md
index 85707b244f..56be5e40ee 100644
--- a/README.md
+++ b/README.md
@@ -1,103 +1,128 @@
-
Orca Slicer
[](https://github.com/SoftFever/OrcaSlicer/actions/workflows/build_all.yml)
-
Orca Slicer is an open source slicer for FDM printers.
-## Follow Us
-Stay connected with us:
+Orca Slicer is an open source Next-Gen Slicing Software for Precision 3D Prints.
+Optimize your prints with ultra-fast slicing, intelligent support generation, and seamless printer compatibility—engineered for perfection.
-[](https://twitter.com/real_OrcaSlicer)
+## Official links and community
-Join our Discord community here:
-
-
- 🚨🚨🚨Important Security Alert🚨🚨🚨
+#### Official Website:
+orcaslicer.com
-The only official platforms for OrcaSlicer are **our GitHub project page**, **orcaslicer.com**, the **official Discord channel**, and the **official Twitter/X account**.
+#### Github Repository:
+
-Please be aware that "**orcaslicer.net**", "**orcaslicer.co**" or "**orca-slicer.com**" are NOT an official website for OrcaSlicer and may be potentially malicious. These sites appear to use AI-generated content, lacking genuine context and seems to exist solely to profit from advertisements. Worse, it may redirect download links to harmful sources. For your safety, avoid downloading OrcaSlicer from this site as the links may be compromised.
+#### Follow us:
+
-If you see the above sites in your searches, report them as spam or unsafe to the search engine. This small action will assist everyone.
+#### Join our Discord community:
+
-We deeply value our OrcaSlicer community and appreciate all the social groups that support us. However, it is crucial to address the risk posed by any group that falsely claims to be official or misleads its members. If you encounter such a group or are part of one, please assist by encouraging the group owner to add a clear disclaimer or by alerting its members.
-
-
-
-Thank you for your vigilance and support in keeping our community safe!
+> [!CAUTION]
+> There are multiple unofficial and potentially malicious websites pretending to be related to OrcaSlicer. These sites may redirect you to dangerous downloads or contain misleading information.
+>
+> If you come across any of these in search results, please report them as unsafe or spam to help keep the community secure.
# Main features
-- Auto-calibration for all printers
-- Sandwich (inner-outer-inner) mode - An improved version of the `External Perimeters First` mode
-- [Precise wall](https://github.com/SoftFever/OrcaSlicer/wiki/Precise-wall)
-- Polyholes conversion support: [SuperSlicer Wiki: Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes)
-- Klipper support
-- More granular controls
-- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/)
+
+- **[Advanced Calibration Tools](https://github.com/SoftFever/OrcaSlicer/wiki/Calibration)**
+ Comprehensive suite: temperature towers, flow rate, retraction & more for optimal performance.
+- **[Precise Wall](https://github.com/SoftFever/OrcaSlicer/wiki/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 and [SuperSlicer Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes) Support**
+ Use varied infill patterns and accurate hole shapes for improved clarity.
+- **Overhang and Support Optimization**
+ Modify geometry for printable overhangs with precise support placement.
+- **Granular Controls and Customization**
+ Fine-tune print speed, layer height, pressure, and temperature with precision.
+- **Network Printer Support**
+ Seamless integration with Klipper, PrusaLink, and OctoPrint for remote control.
+- **Mouse Ear Brims & Adaptive Bed Mesh**
+ Automatic brims and adaptive mesh calibration ensure consistent adhesion.
+- **User-Friendly Interface**
+ Intuitive drag-and-drop design with pre-made profiles for popular printers.
+- **Open-Source & Community Driven**
+ Regular updates fueled by continuous community contributions.
+- **Wide Printer Compatibility**
+ Supports a broad range of printers: Bambu Lab, Prusa, Creality, Voron, and more.
+- Additional features can be found in the [change notes](https://github.com/SoftFever/OrcaSlicer/releases/)
# Wiki
The wiki below aims to provide a detailed explanation of the slicer settings, including how to maximize their use and how to calibrate and set up your printer.
Please note that the wiki is a work in progress. We appreciate your patience as we continue to develop and improve it!
-**[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)**
+**[Access the wiki here](https://github.com/SoftFever/OrcaSlicer/wiki)**
# Download
-### Stable Release
+## 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.
-### Nightly Builds
+## 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.
# How to install
-**Windows**:
-1. Download the installer for your preferred version from the [releases page](https://github.com/SoftFever/OrcaSlicer/releases).
- - *For convenience there is also a portable build available.*
- - *If you have troubles to run the build, you might need to install following runtimes:*
- - [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
- - [Details of this runtime](https://aka.ms/webview2)
- - [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
- - [vcredist2019_x64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
- - [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
- - This file may already be available on your computer if you've installed visual studio. Check the following location: `%VCINSTALLDIR%Redist\MSVC\v142`
+## 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.*
+
+ Troubleshooting
+
+ - *If you have troubles to run the build, you might need to install following runtimes:*
+ - [MicrosoftEdgeWebView2RuntimeInstallerX64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/MicrosoftEdgeWebView2RuntimeInstallerX64.exe)
+ - [Details of this runtime](https://aka.ms/webview2)
+ - [Alternative Download Link Hosted by Microsoft](https://go.microsoft.com/fwlink/p/?LinkId=2124703)
+ - [vcredist2019_x64](https://github.com/SoftFever/OrcaSlicer/releases/download/v1.0.10-sf2/vcredist2019_x64.exe)
+ - [Alternative Download Link Hosted by Microsoft](https://aka.ms/vs/17/release/vc_redist.x64.exe)
+ - 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:
+```shell
+winget install --id=SoftFever.OrcaSlicer --e
+```
+
+## Mac:
+1. Download the DMG for your computer: `arm64` version for Apple Silicon and `x86_64` for Intel CPU.
+2. Drag OrcaSlicer.app to Application folder.
+3. *If you want to run a build from a PR, you also need to follow the instructions below:*
+
+ Quarantine
-**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:*
-
- Option 1 (You only need to do this once. After that the app can be opened normally.):
- Step 1: Hold _cmd_ and right click the app, from the context menu choose **Open**.
- - Step 2: A warning window will pop up, click _Open_
-
- - Option 2:
- Execute this command in terminal: `xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app`
- ```console
- softfever@mac:~$ xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app
+ - Step 2: A warning window will pop up, click _Open_
+
+ - Option 2:
+ Execute this command in terminal:
+ ```shell
+ xattr -dr com.apple.quarantine /Applications/OrcaSlicer.app`
```
- - Option 3:
+ - Option 3:
- Step 1: open the app, a warning window will pop up
- 
- - Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
- 
+ 
+ - Step 2: in `System Settings` -> `Privacy & Security`, click `Open Anyway`:
+ 
-
-**Linux (Ubuntu)**:
- 1. If you run into trouble executing it, try this command in the terminal:
+
+## 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.
-# 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]
@@ -107,53 +132,49 @@ resolution: 0.1
```
# Supports
-**Orca Slicer** 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.
+**Orca Slicer** 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:
+## Sponsors:
-### Backers:
-**Ko-fi supporters**: [Backers list](https://github.com/user-attachments/files/16147016/Supporters_638561417699952499.csv)
-
-## Support me
-
-
-
-
-[](https://paypal.me/softfever3d)
+## 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)
-
+Orca Slicer'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.
+**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.
+**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.
+**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.
+**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.
diff --git a/doc/Auxiliary-fan.md b/doc/Auxiliary-fan.md
index 1177248d46..83f028e935 100644
--- a/doc/Auxiliary-fan.md
+++ b/doc/Auxiliary-fan.md
@@ -1,10 +1,14 @@
+# Auxiliary Fan
+
OrcaSlicer use `M106 P2` command to control auxiliary cooling fan.
-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.
-*Note: Don't forget to change the pin name to the actual pin name you are using in the configuration*
+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.
-```
+> [!NOTE]
+> Don't forget to change the pin name to the actual pin name you are using in the configuration
+
+```ini
# instead of using [fan], we define the default part cooling fan with [fan_generic] here
# this is the default part cooling fan
[fan_generic fan0]
@@ -31,5 +35,4 @@ 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}
-
-```
+```
\ No newline at end of file
diff --git a/doc/Calibration.md b/doc/Calibration.md
deleted file mode 100644
index bf1556d671..0000000000
--- a/doc/Calibration.md
+++ /dev/null
@@ -1,343 +0,0 @@
-- [Flow rate](#flow-rate)
-- [Pressure Advance](#pressure-advance)
- - [Line method](#line-method)
- - [Pattern method](#pattern-method)
- - [Tower method](#tower-method)
-- [Temp tower](#temp-tower)
-- [Retraction test](#retraction-test)
-- [Orca Tolerance Test](#orca-tolerance-test)
-- [Advanced Calibration](#advanced-calibration)
- - [Max Volumetric speed](#max-volumetric-speed)
- - [Input Shaping](#input-shaping)
- - [Klipper](#klipper)
- - [Resonance Compensation](#resonance-compensation)
- - [Marlin](#marlin)
- - [ZV Input Shaping](#zv-input-shaping)
- - [Fixed-Time Motion](#fixed-time-motion)
- - [Junction Deviation](#junction-deviation)
- - [VFA](#vfa)
-
-> [!IMPORTANT]
-> After completing the calibration process, remember to create a new project in order to exit the calibration mode.
-
-# Flow rate
-> [!WARNING]
-> For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option.
->
-> 
-
-> [!IMPORTANT]
-> PASS 1 and PASS 2 follow the older flow ratio formula `FlowRatio_old*(100 + modifier)/100`. YOLO (Recommended) and YOLO (perfectist version) use a new system that is very simple `FlowRatio_old±modifier`.
-
-
-
-Calibrating the flow rate involves a two-step process.
-Steps
-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.
-4. Examine the blocks and determine which one has the smoothest top surface.
-
-
-
-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.
-
-
-
-
-
-# Pressure Advance
-
-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.
-
-> [!WARNING]
-> For Marlin: Linear advance must be enabled in firmware (M900). **Not all printers have it enabled by default.**
-
-> [!WARNING]
-> For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option when printings.
->
-> 
-
-### Line method
-
-The line method is quick and straightforward to test. However, its accuracy highly depends on your first layer quality. It is suggested to turn on the bed mesh leveling for this test.
-Steps:
- 1. Select the printer, filament, and process you would like to use for the test.
- 2. Print the project and check the result. You can select the value of the most even line and update your PA value in the filament settings.
- 3. In this test, a PA value of `0.016` appears to be optimal.
-
-
-
-
-
-
-
-### Pattern method
-
-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.
-
-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.
-
-1. Single test \
-
-2. Batch mode testing (multiple tests on a sinle plate) \
-
-
-Once test generated, one or more small rectangular prisms could be found on the plate, one for each test case. This object serves a few purposes:
-
-1. The test pattern itself is added in as custom G-Code at each layer, same as you could do by hand actually. The rectangular prism gives us the layers in which to insert that G-Code. This also means that **you'll see the full test pattern when you move to the Preview pane**:
-
-2. The prism acts as a handle, enabling you to move the test pattern wherever you'd like on the plate by moving the prism
-3. Each test object is pre-configured with target parameters which are reflected in the objects name. However, test parameters may be adjusted for each prism individually by referring to the object list pane:
-
-
-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:
-
-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
-3. In terms of speed, the pattern only uses the `First layer speed -> First layer` and `Other layers speed -> Outer wall` speeds
-4. The infill pattern beneath the numbers cannot be changed becuase it's not actually an infill pattern pulled from the settings. All of the pattern G-Code is custom written, so that "infill" is, effectively, hand-drawn and so not processed through the usual channels that would enable Orca to recognize it as infill
-
-### Tower method
-
-The tower method may take a bit more time to complete, but it does not rely on the quality of the first layer.
-The PA value for this test will be increased by 0.002 for every 1 mm increase in height. (**NOTE** 0.02 for Bowden)
-Steps:
- 1. Select the printer, filament, and process you would like to use for the test.
- 2. Examine each corner of the print and mark the height that yields the best overall result.
- 3. I selected a height of 8 mm for this case, so the pressure advance value should be calculated as `PressureAdvanceStart+(PressureAdvanceStep x measured)` example: `0+(0.002 x 8) = 0.016`.
-
-
-
-
-# Temp tower
-
-Temp tower is a straightforward test. The temp tower is a vertical tower with multiple blocks, each printed at a different temperature. Once the print is complete, we can examine each block of the tower and determine the optimal temperature for the filament. The optimal temperature is the one that produces the highest quality print with the least amount of issues, such as stringing, layer adhesion, warping (overhang), and bridging.
-
-
-# Retraction test
-
-This test generates a retraction tower automatically. The retraction tower is a vertical structure with multiple notches, each printed at a different retraction length. After the print is complete, we can examine each section of the tower to determine the optimal retraction length for the filament. The optimal retraction length is the shortest one that produces the cleanest tower.
-
-In the dialog, you can select the start and end retraction length, as well as the retraction length increment step. The default values are 0mm for the start retraction length, 2mm for the end retraction length, and 0.1mm for the step. These values are suitable for most direct drive extruders. However, for Bowden extruders, you may want to increase the start and end retraction lengths to 1mm and 6mm, respectively, and set the step to 0.2mm.
-
-**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.
-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.
-
-
-# Orca Tolerance Test
-This tolerance test is specifically designed to assess the dimensional accuracy of your printer and filament. The model comprises a base and a hexagon tester. The base contains six hexagon hole, each with a different tolerance: 0.0mm, 0.05mm, 0.1mm, 0.2mm, 0.3mm, and 0.4mm. The dimensions of the hexagon tester are illustrated in the image.
-
-
-You can assess the tolerance using either an M6 Allen key or the printed hexagon tester.
-
-
-
-# Advanced Calibration
-
-## Max Volumetric speed
-This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament.
-
-You will be promted to enter the settings for the test: start volumetric speed, end volumentric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer.
-
-Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well.
-
-
-
-Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings.
-
-
-
-You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filmanet.
-
-
-
-> [!NOTE]
-> You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.
-
-## Input Shaping
-
-During high-speed movements, vibrations can cause a phenomenon called "ringing," where periodic ripples appear on the print surface. Input Shaping provides an effective solution by counteracting these vibrations, improving print quality and reducing wear on components without needing to significantly lower print speeds.
-
-### Klipper
-
-### Resonance Compensation
-
-The Klipper Resonance Compensation is a set of Input Shaping modes that can be used to reduce ringing and improve print quality.
-Ussualy the recommended values modes are ``MZV`` or ``EI`` for Delta printers.
-
-1. Pre-requisites:
- 1. In OrcaSlicer, set:
- 1. Acceleration high enough to trigger ringing (e.g., 2000 mm/s²).
- 2. Speed high enough to trigger ringing (e.g., 200 mm/s).
- > [!NOTE]
- > These settings depend on your printer's motion ability and the filament's max volumetric speed. If you can't reach speeds that cause ringing, try increasing the filament's max volumetric speed (avoid materials below 10 mm³/s).
- 3. Jerk [Klipper Square Corner Velocity](https://www.klipper3d.org/Kinematics.html?h=square+corner+velocity#look-ahead) to 5 or a high value (e.g., 20).
- 2. In printer settigs:
- 1. Set the Shaper Type to ``MZV`` or ``EI``.
- ```
- SET_INPUT_SHAPER SHAPER_TYPE=MZV
- ```
- 2. Disable [Minimun Cruise Ratio](https://www.klipper3d.org/Kinematics.html#minimum-cruise-ratio) with:
- ```
- SET_VELOCITY_LIMIT MINIMUM_CRUISE_RATIO=0
- ```
- 3. Use an opaque, high-gloss filament to make the ringing more visible.
-2. Print the Input Shaping Frequency test with a range of frequencies.
-
- 
-
- 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
-
- 
- 
-
- 2. If not a clear result, you can measure a X and Y min and max acceptable heights and repeat the test with that min and max value.
-
- **Note**: There is a chance you will need to set higher than 60Hz frequencies. Some printers with very rigid frames and excellent mechanics may exhibit frequencies exceeding 100Hz.
-3. Print the Damping test setting your X and Y frequency to the value you found in the previous step.
-
- 
-
- 1. Measure the X and Y heights and read the damping set at that point in Orca Slicer.
-
- 
- 
-
- **Note**: Not all Resonance Compensation modes support damping
-4. Restore your 3D Printer settings to avoid keep using high acceleration and jerk values.
-5. Save the settings
- 1. You need to go to the printer settings and set the X and Y frequency and damp to the value you found in the previous step.
-
-### Marlin
-
-#### ZV Input Shaping
-
-ZV Input Shaping introduces an anti-vibration signal into the stepper motion for the X and Y axes. It works by splitting the step count into two halves: the first at half the frequency and the second as an "echo," delayed by half the ringing interval. This simple approach effectively reduces vibrations, improving print quality and allowing for higher speeds.
-
-1. Pre-requisites:
- 1. In OrcaSlicer, set:
- 1. Acceleration high enough to trigger ringing (e.g., 2000 mm/s²).
- 2. Speed high enough to trigger ringing (e.g., 200 mm/s).
- > [!NOTE]
- > These settings depend on your printer's motion ability and the filament's max volumetric speed. If you can't reach speeds that cause ringing, try increasing the filament's max volumetric speed (avoid materials below 10 mm³/s).
- 4. Jerk
- 1. If using [Classic Jerk](https://marlinfw.org/docs/configuration/configuration.html#jerk-) use a high value (e.g., 20).
- 2. If using [Junction Deviation](https://marlinfw.org/docs/features/junction_deviation.html) (new Marlin default mode) this test will use 0.25 (high enough to most printers).
- 2. Use an opaque, high-gloss filament to make the ringing more visible.
-2. Print the Input Shaping Frequency test with a range of frequencies.
-
- 
-
- 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
-
- 
- 
-
- 2. If not a clear result, you can measure a X and Y min and max acceptable heights and repeat the test with that min and max value.
-
- **Note**: There is a chance you will need to set higher than 60Hz frequencies. Some printers with very rigid frames and excellent mechanics may exhibit frequencies exceeding 100Hz.
-3. Print the Damping test setting your X and Y frequency to the value you found in the previous step.
-
- 
-
- 1. Measure the X and Y heights and read the damping set at that point in Orca Slicer.
-
- 
- 
-
-4. Restore your 3D Printer settings to avoid keep using high acceleration and jerk values.
- 1. Reboot your printer.
- 2. Use the following G-code to restore your printer settings:
- ```gcode
- M501
- ```
-5. Save the settings
- 1. You need to go to the printer settings and set the X and Y frequency and damp to the value you found in the previous step.
- 2. Use the following G-code to set the frequency:
- ```gcode
- M593 X F#Xfrequency D#XDamping
- M593 Y F#Yfrequency D#YDamping
- M500
- ```
- Example
- ```gcode
- M593 X F37.25 D0.16
- M593 Y F37.5 D0.06
- M500
- ```
-
-#### Fixed-Time Motion
-
-TODO This calibration test is currently under development. See the [Marlin documentation](https://marlinfw.org/docs/gcode/M493.html) for more information.
-
-### Junction Deviation
-
-Junction Deviation is the default method for controlling cornering speed in MarlinFW 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.
-
-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`.
- 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.
-
- 
-
- 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
-
- 
- 
-
- 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.
- 
-
- 4. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
-
- 
- 
-3. Save the settings
- 1. Set your Maximun Junction Deviation value in [Printer settings/Motion ability/Jerk limitation].
- 2. Use the following G-code to set the mm:
- ```gcode
- M205 J#JunctionDeviationValue
- M500
- ```
- Example
- ```gcode
- M205 J0.012
- M500
- ```
- 3. Recompile your MarlinFW
- 1. In Configuration.h uncomment and set:
- ```cpp
- #define JUNCTION_DEVIATION_MM 0.012 // (mm) Distance from real junction edge
- ```
- 2. Check Classic Jerk is disabled (commented).
- ```cpp
- //#define CLASSIC_JERK
- ```
-
-## VFA
-
-Vertical Fine Artifacts (VFA) are small artifacts that can occur on the surface of a 3D print, particularly in areas where there are sharp corners or changes in direction. These artifacts can be caused by a variety of factors, including mechanical vibrations, resonance, and other factors that can affect the quality of the print.
-Because of the nature of these artifacts the methods to reduce them can be mechanical such as changing motors, belts and pulleys or with advanced calibrations such as Jerk/[Juction Deviation](#junction-deviation) corrections or [Input Shaping](#input-shaping).
-
-
-***
-*Credits:*
-- *The Flowrate test and retraction test is inspired by [SuperSlicer](https://github.com/supermerill/SuperSlicer).*
-- *The PA Line method is inspired by [K-factor Calibration Pattern](https://marlinfw.org/tools/lin_advance/k-factor.html).*
-- *The PA Tower method is inspired by [Klipper](https://www.klipper3d.org/Pressure_Advance.html).*
-- *The temp tower model is remixed from [Smart compact temperature calibration tower](https://www.thingiverse.com/thing:2729076).*
-- *The max flowrate test was inspired by Stefan (CNC Kitchen), and the model used in the test is a remix of his [Extrusion Test Structure](https://www.printables.com/model/342075-extrusion-test-structure).*
-- *ZV Input Shaping is inspired by [Marlin Input Shaping](https://marlinfw.org/docs/features/input_shaping.html) and [Ringing Tower 3D STL](https://marlinfw.org/assets/stl/ringing_tower.stl).*
-- *ChatGPT* ;)
diff --git a/doc/Chamber-temperature.md b/doc/Chamber-temperature.md
index ea268532bf..1c8a2bb9eb 100644
--- a/doc/Chamber-temperature.md
+++ b/doc/Chamber-temperature.md
@@ -1,23 +1,36 @@
-OrcaSlicer use `M141/M191` command to control active chamber heater.
+# Chamber Temperature Control
-If `Activate temperature control` is checked, OrcaSlicer will insert `M191` command at the beginning of the gcode(before `Machine G-code`).
-
-*Note: If the machine is equipped with an auxiliary fan, OrcaSlicer will automatically activate the fan during the heating period to help circulate air in the chamber.*
+OrcaSlicer use `M141/M191` command to control active chamber heater.
+If `Activate temperature control` is checked, OrcaSlicer will insert `M191` command at the beginning of the gcode(before `Machine G-code`).
-There are two chamber temperature variables available that we can use in `Machine G-code` to control the chamber temperature, if you prefer:
-To access the chamber temperature set in the first filament, use:
-`M191 S{chamber_temperature[0]}`
-To use the overall chamber temperature, which is the highest chamber temperature set across all filaments, use:
-`M191 S{overall_chamber_temperature}`
+
+> [!NOTE]
+> If the machine is equipped with an auxiliary fan, OrcaSlicer will automatically activate the fan during the heating period to help circulate air in the chamber.
---------------------------Klipper--------------------------
-If you are using Klipper, you can define these macros to control the active chamber heater.
-Bellow is a reference configuration for Klipper.
-*Note: Don't forget to change the pin name/values to the actual values you are using in the configuration*
+## Using Chamber Temperature Variables in Machine G-code
-```
+You can use chamber temperature variables in your `Machine G-code` to control the chamber temperature manually, if desired:
+
+- To set the chamber temperature to the value specified for the first filament:
+ ```gcode
+ M191 S{chamber_temperature[0]}
+ ```
+- To set the chamber temperature to the highest value specified across all filaments:
+ ```gcode
+ M191 S{overall_chamber_temperature}
+ ```
+
+## Klipper
+
+If you are using Klipper, you can define these macros to control the active chamber heater.
+Bellow is a reference configuration for Klipper.
+
+> [!Important]
+> Don't forget to change the pin name/values to the actual values you are using in the configuration.
+
+```gcode
[heater_generic chamber_heater]
heater_pin:PB10
max_power:1.0
@@ -25,7 +38,7 @@ max_power:1.0
sensor_type:NTC 100K MGB18-104F39050L32
sensor_pin:PA1
control = pid
-pid_Kp = 63.418
+pid_Kp = 63.418
pid_ki = 0.960
pid_kd = 1244.716
min_temp:0
@@ -48,5 +61,4 @@ gcode:
TEMPERATURE_WAIT SENSOR="heater_generic chamber_heater" MINIMUM={s-1} MAXIMUM={s+1}
M117 Chamber at target temperature
{% endif %}
-
```
\ No newline at end of file
diff --git a/doc/Home.md b/doc/Home.md
index b6ad80ab11..5e15f7b902 100644
--- a/doc/Home.md
+++ b/doc/Home.md
@@ -1,13 +1,15 @@
# 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.
+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.
The Wiki is work in progress so bear with us while we get it up and running!
## Print Settings, Tips and Tricks (Work In Progress)
+
The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results.
### Quality Settings
+
- [Layer Height Settings](quality_settings_layer_height)
- [Line Width Settings](quality_settings_line_width)
- [Seam Settings](quality_settings_seam)
@@ -15,12 +17,15 @@ The below sections provide a detailed settings explanation as well as tips and t
- [STL Transformation](stl-transformation)
### Speed Settings
+
- [Extrusion rate smoothing](extrusion-rate-smoothing)
### Multi material
+
- [Single Extruder Multimaterial](semm)
### Printer Settings:
+
- [Air filtration/Exhaust fan handling](air-filtration)
- [Auxiliary fan handling](Auxiliary-fan)
- [Chamber temperature control](chamber-temperature)
@@ -29,13 +34,23 @@ The below sections provide a detailed settings explanation as well as tips and t
- [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient)
## Printer Calibration
-The guide below takes you through the key calibration tests in Orca - flow rate, pressure advance, print temperature, retraction, tolerances and maximum volumetric speed
-- [Calibration Guide](./Calibration)
-- [Adaptive Pressure Advance Guide](adaptive-pressure-advance)
+
+The [Calibration Guide](./print_settings/calibration/Calibration.md) takes you through the key calibration tests in Orca - flow rate, pressure advance, print temperature, retraction, tolerances, etc.
+
+- [Flow Rate](print_settings/calibration/flow-rate-calib.md)
+- [Pressure Advance](print_settings/calibration/pressure-advance-calib.md)
+- [Temperature](print_settings/calibration/temp-calib.md)
+- [Retraction](print_settings/calibration/retraction-calib.md)
+- [Tolerance](print_settings/calibration/tolerance-calib.md)
+- Advanced:
+ - [Volumetric Speed](print_settings/calibration/volumetric-speed-calib.md)
+ - [Adaptive Pressure Advance Guide](print_settings/calibration/adaptive-pressure-advance-calib.md)
+ - [Input Shaping](print_settings/calibration/input-shaping-calib.md)
+ - [Cornering (Jerk & Junction Deviation)](print_settings/calibration/cornering-calib.md)
## Developer Section
+
- [How to build Orca Slicer](./How-to-build)
- [Localization and translation guide](Localization_guide)
- [Developer Reference](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Home.md)
-- [How to create profiles](./How-to-create-profiles)
-- [How to validate profiles](./How-to-validate-profiles)
\ No newline at end of file
+- [How to create profiles](./How-to-create-profiles)
\ No newline at end of file
diff --git a/doc/How-to-build.md b/doc/How-to-build.md
index c9fd78aef9..392e47b7f3 100644
--- a/doc/How-to-build.md
+++ b/doc/How-to-build.md
@@ -1,39 +1,79 @@
-# How to Compile
+# How to Build
## Windows 64-bit
+This guide is for building your Visual Studio 2022 solution for OrcaSlicer on Windows 64-bit.
+
### Tools Required
-- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) or Visual Studio 2019
+
+- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) or Visual Studio 2019
+ ```shell
+ winget install --id=Microsoft.VisualStudio.2022.Professional -e
+ ```
- [CMake (version 3.31)](https://cmake.org/) — **⚠️ version 3.31.x is mandatory**
+ ```shell
+ winget install --id=Kitware.CMake -v "3.31.6" -e
+ ```
- [Strawberry Perl](https://strawberryperl.com/)
+ ```shell
+ winget install --id=StrawberryPerl.StrawberryPerl -e
+ ```
- [Git](https://git-scm.com/)
+ ```shell
+ winget install --id=Git.Git -e
+ ```
+- [git-lfs](https://git-lfs.com/)
+ ```shell
+ winget install --id=GitHub.GitLFS -e
+ ```
+
+> [!Tip]
+> GitHub Desktop (optional): A GUI for Git and Git LFS, which already includes both tools.
+> ```shell
+> winget install --id=GitHub.GitHubDesktop -e
+> ```
### Instructions
+
1. Clone the repository:
- ```sh
- git clone https://github.com/SoftFever/OrcaSlicer
- ```
+ - If using GitHub Desktop clone the repository from the GUI.
+ - If using the command line:
+ 1. Clone the repository:
+ ```shell
+ git clone https://github.com/SoftFever/OrcaSlicer
+ ```
+ 2. Run lfs to download tools on Windows:
+ ```shell
+ git lfs pull
+ ```
2. Open the appropriate command prompt:
- For Visual Studio 2019:
Open **x64 Native Tools Command Prompt for VS 2019** and run:
- ```sh
+ ```shell
build_release.bat
```
- For Visual Studio 2022:
Open **x64 Native Tools Command Prompt for VS 2022** and run:
- ```sh
+ ```shell
build_release_vs2022.bat
```
+3. If successful, you will find the VS 2022 solution file in:
+ ```shell
+ build\OrcaSlicer.sln
+ ```
-**⚠️ Note 1:** Make sure that CMake version 3.31.x is actually being used. Run `cmake --version` and verify it returns a **3.31.x** version.
-If you see an older version (e.g. **3.29), it's likely due to another copy in your system's PATH (e.g. from Strawberry Perl).
-You can run where cmake to check the active paths and rearrange your System Environment Variables > PATH, ensuring the correct CMake (e.g. C:\Program Files\CMake\bin) appears before others like C:\Strawberry\c\bin.
+> [!IMPORTANT]
+> Make sure that CMake version 3.31.x is actually being used. Run `cmake --version` and verify it returns a **3.31.x** version.
+> If you see an older version (e.g. 3.29), it's likely due to another copy in your system's PATH (e.g. from Strawberry Perl).
+> You can run where cmake to check the active paths and rearrange your System Environment Variables > PATH, ensuring the correct CMake (e.g. C:\Program Files\CMake\bin) appears before others like C:\Strawberry\c\bin.
-**⚠️ Note 2:** ⚠️ Note: If the build fails, try deleting the `build/` and `deps/build/` directories to clear any cached build data. Rebuilding after a clean-up is usually sufficient to resolve most issues.
+> [!NOTE]
+> If the build fails, try deleting the `build/` and `deps/build/` directories to clear any cached build data. Rebuilding after a clean-up is usually sufficient to resolve most issues.
## macOS 64-bit
### Tools Required
+
- Xcode
- CMake (version 3.31.x is mandatory)
- Git
@@ -43,48 +83,55 @@ You can run where cmake to check the active paths and rearrange your System Envi
- autoconf
- texinfo
-You can install most dependencies via Homebrew:
-```sh
-brew install git gettext libtool automake autoconf texinfo
-```
+> [!Tip]
+> You can install most of them by running:
+> ```shell
+> brew install gettext libtool automake autoconf texinfo
+> ```
-Homebrew currently only offers the latest version of CMake (e.g. **4.x**), which is not compatible. To install the required version **3.31.x**, follow these steps:
+Homebrew currently only offers the latest version of CMake (e.g. **4.X**), which is not compatible. To install the required version **3.31.X**, follow these steps:
1. Download CMake **3.31.7** from: [https://cmake.org/download/](https://cmake.org/download/)
2. Install the application (drag it to `/Applications`).
3. Add the following line to your shell configuration file (`~/.zshrc` or `~/.bash_profile`):
+
```sh
export PATH="/Applications/CMake.app/Contents/bin:$PATH"
```
+
4. Restart the terminal and check the version:
+
```sh
cmake --version
```
+
5. Make sure it reports a **3.31.x** version.
-
-**⚠️ Note 1:** If you've recently upgraded Xcode, be sure to open Xcode at least once and install the required macOS build support.
+> [!IMPORTANT]
+> If you've recently upgraded Xcode, be sure to open Xcode at least once and install the required macOS build support.
### Instructions
+
1. Clone the repository:
- ```sh
+ ```shell
git clone https://github.com/SoftFever/OrcaSlicer
cd OrcaSlicer
```
2. Build the application:
- ```sh
+ ```shell
./build_release_macos.sh
```
3. Open the application:
- ```sh
- open build/arm64/OrcaSlicer/OrcaSlicer.app
+ ```shell
+ open build/arm64/OrcaSlicer/OrcaSlicer.app
```
### Debugging in Xcode
+
To build and debug directly in Xcode:
1. Open the Xcode project:
- ```sh
+ ```shell
open build/arm64/OrcaSlicer.xcodeproj
```
2. In the menu bar:
@@ -99,23 +146,28 @@ To build and debug directly in Xcode:
### Using Docker (Recommended)
#### Dependencies
+
- Docker
- Git
#### Instructions
-```sh
-git clone https://github.com/SoftFever/OrcaSlicer
-cd OrcaSlicer
-./DockerBuild.sh
-./DockerRun.sh
+
+```shell
+git clone https://github.com/SoftFever/OrcaSlicer && cd OrcaSlicer && ./DockerBuild.sh && ./DockerRun.sh
```
-To troubleshoot common Docker-related errors, refer to the comments in `DockerRun.sh`.
+> [!Note]
+> To troubleshoot common Docker-related errors, refer to the comments in
+> ```shell
+> DockerRun.sh
+> ```
## Ubuntu
### Dependencies
+
All required dependencies will be installed automatically by the provided shell script, including:
+
- libmspack-dev
- libgstreamerd-3-dev
- libsecret-1-dev
@@ -134,7 +186,8 @@ All required dependencies will be installed automatically by the provided shell
- texinfo
### Instructions
-```sh
+
+```shell
sudo ./BuildLinux.sh -u # Install dependencies
./BuildLinux.sh -dsi # Build OrcaSlicer
-```
+```
\ No newline at end of file
diff --git a/doc/How-to-create-profiles.md b/doc/How-to-create-profiles.md
index 4255c97642..e820cfe5bc 100644
--- a/doc/How-to-create-profiles.md
+++ b/doc/How-to-create-profiles.md
@@ -1,10 +1,13 @@
# Guide: Develop Profiles for OrcaSlicer
## Introduction
+
This guide will help you develop profiles for OrcaSlicer.
## High-level Overview
+
OrcaSlicer uses JSON files to store profiles. There are four types of profiles:
+
1. Printer model (type `machine_model`). Example: `Orca 3D Fuse1.json`
2. Printer variant (type `machine`). Example: `Orca 3D Fuse1 0.2 nozzle.json`
3. Filament (type `filament`). Example: `Generic PLA @Orca 3D Fuse1@.json`
@@ -15,6 +18,7 @@ Additionally, there is an overall meta file for each vendor (`Orca 3D.json`).
For easier understanding, let's consider a scenario with a printer manufacturer called `Orca 3D`. The manufacturer offers one printer model called `Fuse 1`, which supports 0.2/0.4/0.6/0.8mm nozzles and common market filaments.
In this case:
+
- Vendor profile: `Orca 3D`
- Printer profile: `Orca 3D Fuse1`
- Printer variant profile: `Orca 3D Fuse1 0.4 nozzle`
@@ -23,6 +27,7 @@ In this case:
The profile name should be same as the filename without the `.json` extension in principal.
Naming conventions:
+
1. Vendor profile: `vendor_name.json`
2. Printer profile: `vendor_name` + `printer_name` + `.json`
3. Printer variant profile: `vendor_name` + `printer_variant_name` + `.json` (where `printer_variant_name` typically includes `printer_name` + `nozzle_diameter`)
@@ -33,39 +38,43 @@ Naming conventions:
Profiles should be structured in the following way under the OrcaSlicer installation directory:
-```
+```plaintext
resources\profiles\
- - Orca 3D.json
- - Orca 3D\
- - machine\
- - Orca 3D Fuse1.json
- - Orca 3D Fuse1 0.2 nozzle.json
- - Orca 3D Fuse1 0.4 nozzle.json
- - process\
- - 0.10mm Standard @Orca 3D Fuse1 0.2.json
- - 0.20mm Standard @Orca 3D Fuse1 0.4.json
- - filament\
- - Generic PLA @Orca 3D Fuse1@.json
+ ├── Orca 3D.json
+ └── Orca 3D\
+ ├── machine\
+ │ ├── Orca 3D Fuse1.json
+ │ ├── Orca 3D Fuse1 0.2 nozzle.json
+ │ └── Orca 3D Fuse1 0.4 nozzle.json
+ ├── process\
+ │ ├── 0.10mm Standard @Orca 3D Fuse1 0.2.json
+ │ └── 0.20mm Standard @Orca 3D Fuse1 0.4.json
+ └── filament\
+ └── Generic PLA @Orca 3D Fuse1@.json
```
-**⚠️ NOTE 1**: Use short vendor names in filenames to avoid excessive length.
+> [!TIP]
+> Use short vendor names in filenames to avoid excessive length.
-**⚠️ NOTE 2**: Filament profiles are **optional**. Create them only if the vendor has specifically tuned profiles for the given printer. See [Filament profiles](#filament-profiles) for details.
+> [!NOTE]
+> Filament profiles are **optional**. Create them only if the vendor has specifically tuned profiles for the given printer. See [Filament profiles](#filament-profiles) for details.
Template files for profiles are available in:
-```
+```shell
OrcaSlicer\resources\profiles_template\Template
```
These templates can be used as a starting point for new printer, filament, and process profiles.
## Filament Profiles
+
OrcaSlicer features a global filament library called `OrcaFilamentLibrary`, which is automatically available for all printers. It includes generic filaments like `Generic PLA @System` and `Generic ABS @System` etc.
-Printer vendors can override specific filaments in the global library for certain printer models by creating new filament profiles.
+Printer vendors can override specific filaments in the global library for certain printer models by creating new filament profiles.
Relationship diagram:
+
```mermaid
graph TD;
OrcaFilamentLibrary-->Orca_3D_filament;
@@ -73,9 +82,11 @@ graph TD;
OrcaFilamentLibrary-->Vendor_B_filament;
```
-**NOTE**: Create new filament profiles only if you have truly specifically tuned the filament for the given printer. Otherwise, use the global library. The global library has a better chance to receive optimizations and updates from OrcaSlicer contributors, which will benefit users of all printers.
+> [!Important]
+> Create new filament profiles only if you have truly specifically tuned the filament for the given printer. Otherwise, use the global library. The global library has a better chance to receive optimizations and updates from OrcaSlicer contributors, which will benefit users of all printers.
### Adding Filament Profiles to the Global Library
+
In this section, we will discuss how to add a new filament profile into the global library.
If you want to add a new generic profile into the global library, you need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it.
The following sample JSON file shows how to create a new generic filament profile `Generic PLA-GF @System` in the global library.
@@ -117,11 +128,13 @@ The following sample JSON file shows how to create a new generic filament profil
}
```
-3. The last step is to validate the newly added filament profiles.
+3. The last step is to validate the newly added filament profiles see [Validate Profiles](#validate-profiles).
-**⚠️ NOTE 1**: If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
+> [!NOTE]
+> If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
### Adding Filament Profiles to Printer Vendor Library
+
In this section, we will discuss how to add a new filament profile for a certain vendor.
If you want to add a new filament profile, whether it's a brand new profile or a specialized version of a global filament profile for a given printer, you need to create a new file in the `resources\profiles\vendor_name\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it.
Below is a sample JSON file showing how to create a specialized `Generic ABS` filament profile for the ToolChanger printer.
@@ -180,22 +193,23 @@ Please note that here we must leave the compatible_printers field non-empty, unl
}
```
-**⚠️ NOTE 1**: If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
+> [!NOTE]
+> If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility.
## Process Profiles
Process profiles define print quality and behavior. They follow a structure similar to filament profiles:
-* A common base file, e.g., `fdm_process_common.json`, acts as the parent.
-* Vendor-specific process profiles should inherit from the base using the `inherits` field.
-* Profiles are stored under:
+- A common base file, e.g., `fdm_process_common.json`, acts as the parent.
+- Vendor-specific process profiles should inherit from the base using the `inherits` field.
+- Profiles are stored under:
-```
+```shell
resources\profiles\vendor_name\process\
```
-* **There are no global process profiles**.
-* Each process profile includes a `"compatible_printers"` field with an array of compatible printer variant names.
+- **There are no global process profiles**.
+- Each process profile includes a `"compatible_printers"` field with an array of compatible printer variant names.
Example:
@@ -214,17 +228,17 @@ Example:
## Printer Model Profiles
-* Printer model profiles (type `machine_model`) describe the general printer information.
-* Example fields: `nozzle_diameter`, `bed_model`, `bed_texture`, `model_id`, etc.
-* Stored in:
+- Printer model profiles (type `machine_model`) describe the general printer information.
+- Example fields: `nozzle_diameter`, `bed_model`, `bed_texture`, `model_id`, etc.
+- Stored in:
-```
+```shell
resources\profiles\vendor_name\machine\
```
-* Each vendor's folder may contain an image named:
+- Each vendor's folder may contain an image named:
-```
+```shell
[machine_model_list.name]_cover.png
```
@@ -248,10 +262,10 @@ Example model profile:
## Printer Variant Profiles
-* Printer variants (type `machine`) define specific nozzle configurations and mechanical details.
-* Each variant must inherit from a common base like `fdm_machine_common.json`.
-* Must list the compatible nozzle diameter in the `nozzle_diameter` array.
-* Example fields include `printer_model`, `printer_variant`, `default_print_profile`, `printable_area`, etc.
+- Printer variants (type `machine`) define specific nozzle configurations and mechanical details.
+- Each variant must inherit from a common base like `fdm_machine_common.json`.
+- Must list the compatible nozzle diameter in the `nozzle_diameter` array.
+- Example fields include `printer_model`, `printer_variant`, `default_print_profile`, `printable_area`, etc.
Example variant profile:
@@ -275,8 +289,8 @@ Example variant profile:
## Models
-* The `model` directory under the vendor folder is intended to behave similarly to `machine` profiles.
-* Used for additional printer-related 3D models or definitions, stored at:
+- The `model` directory under the vendor folder is intended to behave similarly to `machine` profiles.
+- Used for additional printer-related 3D models or definitions, stored at:
```
resources\profiles\vendor_name\model\
@@ -325,19 +339,21 @@ Example:
You can validate your profiles using both the **OrcaSlicer profile validator** and the **Python validation script**. These tools are designed to check different aspects of the profiles, so both should be executed and pass without errors to ensure full compatibility.
-**✅ Recommendation**: Always run **both** the OrcaSlicer validator and the Python script to ensure all aspects of the profiles are valid.
+> [!NOTE]
+> **✅ Recommendation**: Always run **both** the OrcaSlicer validator and the Python script to ensure all aspects of the profiles are valid.
### 1. OrcaSlicer Profile Validator
You can run OrcaSlicer to verify if the filament you just added is available and usable. You can also use the [Orca profile validator](https://github.com/SoftFever/Orca_tools/releases/tag/1) tool to help debug any errors.
-**⚠️ NOTE 1**: You need to delete the `%appdata%/OrcaSlicer/system` folder to force OrcaSlicer to reload your latest changes.
+> [!IMPORTANT]
+> You need to delete the `%appdata%/OrcaSlicer/system` folder to force OrcaSlicer to reload your lastest changes.
The process is the same if you want to add a new brand filament profile into the global library. You need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament\brand_name` folder. The only difference is that you should put the file into the brand's own subfolder.
#### Usage
-```
+```shell
-h [ --help ] help
-p [ --path ] arg profile folder
-v [ --vendor ] arg Vendor name. Optional, all profiles present in the folder will be validated if not specified
@@ -346,13 +362,13 @@ The process is the same if you want to add a new brand filament profile into the
#### Example
-```
+```shell
./OrcaSlicer_profile_validator -p ~/codes/OrcaSlicer/resources/profiles -l 2 -v Custom
```
#### Sample result with errors
-```
+```shell
PS D:\codes\OrcaSlicer> ."D:/codes/OrcaSlicer/build/src/Release/OrcaSlicer_profile_validator.exe" --path d:\codes\OrcaSlicer\resources\profiles -l 2 -v Custom
[2024-02-28 21:23:06.102138] [0x0000a4e8] [error] Slic3r::ConfigBase::load_from_json: parse d:\codes\OrcaSlicer\resources\profiles/Custom/machine/fdm_klipper_common.json got a nlohmann::detail::parse_error, reason = [json.exception.parse_error.101] parse error at line 9, column 38: syntax error while parsing object - unexpected string literal; expected '}'
...
@@ -361,12 +377,13 @@ Validation failed
#### Sample result with success
-```
+```shell
PS D:\codes\OrcaSlicer\build\src\RelWithDebInfo> ."D:/codes/OrcaSlicer/build/src/Release/OrcaSlicer_profile_validator.exe" --path d:\codes\OrcaSlicer\resources\profiles -l 2 -v Custom
Validation completed successfully
```
-**⚠️ NOTE 2**: Use `OrcaSlicer_profile_validator` on Ubuntu and `OrcaSlicer_profile_validator.exe` on Windows.
+> [!WARNING]
+> Use `OrcaSlicer_profile_validator` on Ubuntu and `OrcaSlicer_profile_validator.exe` on Windows.
---
@@ -380,7 +397,7 @@ In addition to the Orca validator, you should run the `orca_extra_profile_check.
#### Example command
-```bash
+```shell
python ./orca_extra_profile_check.py
```
@@ -392,7 +409,7 @@ You can also enable or disable specific checks:
#### Sample usage with all checks enabled
-```bash
+```shell
python ./orca_extra_profile_check.py --vendor="vendor_name" --check-filaments --check-materials
```
diff --git a/doc/Localization_guide.md b/doc/Localization_guide.md
index 5949de03db..ffc347db8c 100644
--- a/doc/Localization_guide.md
+++ b/doc/Localization_guide.md
@@ -2,26 +2,28 @@
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.
-Those can be downloaded here:
-- https://sourceforge.net/directory/os:windows/?q=gnu+gettext GNUgettext package contains a set of tools to extract strings from the source code and to create the translation Catalog.
-- https://poedit.net PoEdit provides good interface for the translators.
+Those can be downloaded here:
+
+- https://sourceforge.net/directory/os:windows/?q=gnu+gettext GNUgettext package contains a set of tools to extract strings from the source code and to create the translation Catalog.
+- https://poedit.net PoEdit provides good interface for the translators.
After GNUgettext is installed, it is recommended to add the path to gettext/bin to PATH variable.
Full manual for GNUgettext can be seen here: http://www.gnu.org/software/gettext/manual/gettext.html
-
### Scenario 1. How do I add a translation or fix an existing translation
+
1. Get PO-file 'OrcaSlicer_xx.pot' from corresponding sub-folder here:
-https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
+ https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
2. Open this file in PoEdit as "Edit a translation"
3. Apply your corrections to the translation
4. Push changed OrcaSlicer_xx.po into the original folder
5. copy OrcaSlicer_xx.mo into resources/i18n/xx and rename it to OrcaSlicer.mo, then push the changed file.
### Scenario 2. How do I add a new language support
+
1. Get file OrcaSlicer.pot here :
-https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
+ https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n
2. Open it in PoEdit for "Create new translation"
3. Select Translation Language (for example French).
4. As a result you will have fr.po - the file containing translation to French.
@@ -30,24 +32,28 @@ Notice. When the translation is complete you need to:
- Click "Save file" button. OrcaSlicer_fr.mo will be created immediately
- Bambu_Studio_fr.po needs to be copied into the sub-folder fr of https://github.com/softfever/OrcaSlicer/tree/master/localization/i18n, and be pushed
- 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).
+( 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
+
Each string resource in Orca Slicer available for translation needs to be explicitly marked using L() macro like this:
+
```C++
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
-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.
+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.
2. Create template file(*.POT) with GNUgettext command:
- ```
- xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o OrcaSlicer.pot -f list.txt
+
+ ```shell
+ xgettext --keyword=L --add-comments=TRN --from-code=UTF-8 --debug -o OrcaSlicer.pot -f list.txt
```
Use flag `--from-code=UTF-8` to specify that the source strings are in UTF-8 encoding
@@ -56,38 +62,37 @@ https://github.com/softfever/OrcaSlicer/blob/master/localization/i18n/list.txt.
3. Create PO- and MO-files for your project as described above.
4. To merge old PO-file with strings from created new POT-file use command:
+
+ ```shell
+ msgmerge -N -o new.po old.po new.pot
```
- msgmerge -N -o new.po old.po new.pot
- ```
+
Use option `-N` to not using fuzzy matching when an exact match is not found.
5. To concatenate old PO-file with strings from new PO-file use command:
- ```
- msgcat -o new.po old.po
+
+ ```shell
+ msgcat -o new.po old.po
```
6. Create an English translation catalog with command:
- ```
- msgen -o new.po old.po
+ ```shell
+ msgen -o new.po old.po
```
Notice, in this Catalog it will be totally same strings for initial text and translated.
When you have Catalog to translation open POT or PO file in PoEdit and start translating.
-
## General guidelines for Orca Slicer 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).
-- 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 Orca Slicer.mo, and you can run Orca Slicer (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.
- 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:
-
-
- If you decide to use autocorrect or any batch processing tool, the output requires very careful proofreading. It is very easy to make it do changes that break things big time.
- **Any formatting parts of the phrases must remain unchanged.** For example, you should not change `%1%` to `%1 %`, you should not change `%%` to `%` (for percent sign) and similar. This will lead to application crashes.
@@ -101,4 +106,3 @@ When you have Catalog to translation open POT or PO file in PoEdit and start tra
- If the phrase doesn't have a dot at the end, don't add it. And if it does, then don't forget to :)
- It is useful to stick to the same terminology in the application (especially with basic terms such as "filament" and similar). Stay consistent. Otherwise it will confuse users.
-
diff --git a/doc/Precise-wall.md b/doc/Precise-wall.md
index 5e8bd9329c..af722bf4e3 100644
--- a/doc/Precise-wall.md
+++ b/doc/Precise-wall.md
@@ -1,13 +1,19 @@
+# Precise Wall
+
The 'Precise Wall' is a distinctive feature introduced by OrcaSlicer, aimed at improving the dimensional accuracy of prints and minimizing layer inconsistencies by slightly increasing the spacing between the outer wall and the inner wall.
-Below is a technical explanation of how this feature works.
+## Technical explanation
+
+Below is a technical explanation of how this feature works.
+
First, it's important to understand some basic concepts like flow, extrusion width, and space. Slic3r has an excellent document that covers these topics in detail. You can refer to this article: [link to article](https://manual.slic3r.org/advanced/flow-math).
-Now, let's dive into the specifics. Slic3r and its forks, such as PrusaSlicer, SuperSlicer, and OrcaSlicer, assume that the extrusion path has an oval shape, which accounts for the overlaps. For example, if we set the wall width to 0.4mm and the layer height to 0.2mm, the combined thickness of two walls laid side by side is 0.714mm instead of 0.8mm due to the overlapping.
-
+Now, let's dive into the specifics. Slic3r and its forks, such as PrusaSlicer, SuperSlicer, and OrcaSlicer, assume that the extrusion path has an oval shape, which accounts for the overlaps. For example, if we set the wall width to 0.4mm and the layer height to 0.2mm, the combined thickness of two walls laid side by side is 0.714mm instead of 0.8mm due to the overlapping.
+
+
+
This approach enhances the strength of 3D-printed parts. However, it does have some side effects. For instance, when the inner-outer wall order is used, the outer wall can be pushed outside, leading to potential size inaccuracy and more layer inconsistency.
-It's important to keep in mind that this approach to handling flow is specific to Slic3r and it's forks. Other slicing software, such as Cura, assumes that the extrusion path is rectangular and, therefore, does not include overlapping. Two 0.4 mm walls will result in a 0.8 mm shell thickness in Cura
-
-OrcaSlicer adheres to Slic3r's approach to handling flow. To address the downsides mentioned earlier, OrcaSlicer introduced the 'Precise Wall' feature. When this feature is enabled in OrcaSlicer, the overlap between the outer wall and its adjacent inner wall is set to zero. This ensures that the overall strength of the printed part is unaffected, while the size accuracy and layer consistency are improved.
+It's important to keep in mind that this approach to handling flow is specific to Slic3r and its forks. Other slicing software, such as Cura, assumes that the extrusion path is rectangular and, therefore, does not include overlapping. Two 0.4 mm walls will result in a 0.8 mm shell thickness in Cura.
+OrcaSlicer adheres to Slic3r's approach to handling flow. To address the downsides mentioned earlier, OrcaSlicer introduced the 'Precise Wall' feature. When this feature is enabled in OrcaSlicer, the overlap between the outer wall and its adjacent inner wall is set to zero. This ensures that the overall strength of the printed part is unaffected, while the size accuracy and layer consistency are improved.
\ No newline at end of file
diff --git a/doc/Print-settings.md b/doc/Print-settings.md
index 5c31ca4eb9..1971ef0c57 100644
--- a/doc/Print-settings.md
+++ b/doc/Print-settings.md
@@ -1,4 +1,4 @@
-Print settings:
+# Print settings
* [Seam](seam)
* [Axiliary fan](auxiliary-fan)
diff --git a/doc/Seam.md b/doc/Seam.md
index a11d7297c0..e2dc6ce961 100644
--- a/doc/Seam.md
+++ b/doc/Seam.md
@@ -1,19 +1,30 @@
-WIP...
+# Seam
### Scarf joint seam
+
WIP...
### Seam gap
+

### Role-based wipe speed(auto)
+
+WIP...
+
### Wipe speed
+
+WIP...
+
### Wipe on loop(inward movement)
+

Use outer wall speed and acceleration instead of travel speed and acceleration.
Added an option to disable this feature
+
### Support Cura style outer wall wipe(100% retract before wipe)
+


diff --git a/doc/adaptive-bed-mesh.md b/doc/adaptive-bed-mesh.md
index a711eaff0c..e3595196d7 100644
--- a/doc/adaptive-bed-mesh.md
+++ b/doc/adaptive-bed-mesh.md
@@ -1,44 +1,57 @@
# Adaptive Bed Mesh Support
-Orca Slicer 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.
+
+Orca Slicer 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.
-
-
+
## Settings in Orca Slicer:
+
`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.
`Bed mesh max`: This option sets the max 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.
`Probe point distance`: This option sets the preferred distance between probe points (grid size) for the X and Y directions, with the default being 50mm for both X and Y.
-`Mesh margin`: This option determines the additional distance by which the adaptive bed mesh area should be expanded in the XY directions. Note for 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).
+`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).
+
+## Available g-code variables for Adaptive Bed Mesh Command
-## Available g-code variables for Adaptive Bed Mesh Command
`bed_mesh_probe_count`: Represents the probe count in the X and Y directions. This value is calculated based on the size of the adaptive bed mesh area and the distance between probe points.
`adaptive_bed_mesh_min`: Specifies the minimum coordinates of the adaptive bed mesh area, defining the starting point of the mesh.
`adaptive_bed_mesh_max`: Determines the maximum coordinates of the adaptive bed mesh area, indicating the endpoint of the mesh.
-`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`.
+`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 Orca Slicer:
### Marlin:
-```
+
+```gcode
; Marlin don't support speicify the probe count yet, so we only specify the probe area
G29 L{adaptive_bed_mesh_min[0]} R{adaptive_bed_mesh_max[0]} F{adaptive_bed_mesh_min[1]} B{adaptive_bed_mesh_max[1]} T V4
```
+
### Klipper:
-```
+
+```gcode
; Always pass `ADAPTIVE_MARGIN=0` because Orca has already handled `adaptive_bed_mesh_margin` internally
; Make sure to set ADAPTIVE to 0 otherwise Klipper will use it's own adaptive bed mesh logic
BED_MESH_CALIBRATE mesh_min={adaptive_bed_mesh_min[0]},{adaptive_bed_mesh_min[1]} mesh_max={adaptive_bed_mesh_max[0]},{adaptive_bed_mesh_max[1]} ALGORITHM=[bed_mesh_algo] PROBE_COUNT={bed_mesh_probe_count[0]},{bed_mesh_probe_count[1]} ADAPTIVE=0 ADAPTIVE_MARGIN=0
```
+
### RRF:
+
+```gcode
+M557 X{adaptive_bed_mesh_min[0]}:{adaptive_bed_mesh_max[0]} Y{adaptive_bed_mesh_min[1]}:{adaptive_bed_mesh_max[1]} P{bed_mesh_probe_count[0]}:{bed_mesh_probe_count[1]}
```
-M557 X{adaptive_bed_mesh_min[0]}:{adaptive_bed_mesh_max[0]} Y{adaptive_bed_mesh_min[1]}:{adaptive_bed_mesh_max[1]} P{bed_mesh_probe_count[0]}:{bed_mesh_probe_count[1]}
-```
-
+
+
\ No newline at end of file
diff --git a/doc/adaptive-pressure-advance.md b/doc/adaptive-pressure-advance.md
index 6a589d6f1c..2853c8cfc2 100644
--- a/doc/adaptive-pressure-advance.md
+++ b/doc/adaptive-pressure-advance.md
@@ -15,10 +15,9 @@ This feature introduces the below options under the filament settings:
-
## Pre-Requisites
-This feature has been tested with Klipper-based printers. While it may work with Marlin or Bambu lab printers, it is currently untested with them. It shouldn’t adversely affect the machine; however, the quality results from enabling it are not validated.
+This feature has been tested with Klipper-based printers. While it may work with Marlin or Bambu lab printers, it is currently untested with them. It shouldn’t adversely affect the machine; however, the quality results from enabling it are not validated.
**Older versions of Klipper used to stutter when pressure advance was changed while the toolhead was in motion. This has been fixed with the latest Klipper firmware releases. Therefore, make sure your Klipper installation is updated to the latest version before enabling this feature, in order to avoid any adverse quality impacts.**
@@ -32,15 +31,15 @@ Following experimentation, it has been noticed that the optimal pressure advance
2. The larger the layer height (hence the higher the volumetric flow rate requested from the toolhead).
3. The higher the print acceleration is.
-What this means is that we never get ideal PA values for each print feature, especially when they vary drastically in speed and acceleration. We can tune PA for a faster print speed (flow) but compromise on corner sharpness for slower speeds or tune PA for corner sharpness and deal with slight corner-perimeter separation in faster speeds. The same goes for accelerations as well as different layer heights.
+What this means is that we never get ideal PA values for each print feature, especially when they vary drastically in speed and acceleration. We can tune PA for a faster print speed (flow) but compromise on corner sharpness for slower speeds or tune PA for corner sharpness and deal with slight corner-perimeter separation in faster speeds. The same goes for accelerations as well as different layer heights.
-This compromise usually means that we settle for tuning an "in-between" PA value between slower external features and faster internal features so we don't get gaps, but also not get too much bulging in external perimeters.
+This compromise usually means that we settle for tuning an "in-between" PA value between slower external features and faster internal features so we don't get gaps, but also not get too much bulging in external perimeters.
**However, what this also means is that if you are printing with a single layer height, single speed, and acceleration, there is no need to enable this feature.**
-Adaptive pressure advance aims to address this limitation by implementing a completely different method of setting pressure advance. **Following a set of PA calibration tests done at different flow rates (speeds and layer heights) and accelerations, a pressure advance model is calculated by the slicer.** Then that model is used to emit the best fit PA for any arbitrary feature flow rate (speed) and acceleration used in the print process.
+Adaptive pressure advance aims to address this limitation by implementing a completely different method of setting pressure advance. **Following a set of PA calibration tests done at different flow rates (speeds and layer heights) and accelerations, a pressure advance model is calculated by the slicer.** Then that model is used to emit the best fit PA for any arbitrary feature flow rate (speed) and acceleration used in the print process.
-In addition, it means that you only need to tune this feature once and print across different layer heights with good PA performance.
+In addition, it means that you only need to tune this feature once and print across different layer heights with good PA performance.
Finally, if during calibration you notice that there is little to no variance between the PA tests, this feature is redundant for you. **From experiments, high flow nozzles fitted on high-speed core XY printers appear to benefit the most from this feature as they print with a larger range of flow rates and at a larger range of accelerations.**
@@ -55,7 +54,6 @@ Solid infill should have no gaps, pinholes, or separation from the perimeters.
Compared to with this feature disabled, where the internal solid infill and external-internal perimeters show signs of separation and under extrusion, when PA is tuned for optimal external perimeter performance as shown below.

-
## How to calibrate the adaptive pressure advance model
### Defining the calibration sets
@@ -65,9 +63,9 @@ Firstly, it is important to understand your printer speed and acceleration limit
1. **Upper acceleration range:** Do not attempt to calibrate adaptive PA for an acceleration that is larger than what the Klipper input shaper calibration tool recommends for your selected shaper. For example, if Klipper recommends an EI shaper with 4k maximum acceleration for your slowest axis (usually the Y axis), don’t calibrate adaptive PA beyond that value. This is because after 4k the input shaper smoothing is magnified and the perimeter separations that appear like PA issues are caused by the input shaper smoothing the shape of the corner. Basically, you’d be attempting to compensate for an input shaper artefact with PA.
2. **Upper print speed range:** The Ellis PA pattern test has been proven to be the most efficient and effective test to run to calibrate adaptive PA. It is fast and allows for a reasonably accurate and easy-to-read PA value. However, the size of the line segments is quite small, which means that for the faster print speeds and slower accelerations, the toolhead will not be able to reach the full flow rate that we are calibrating against. It is therefore generally not recommended to attempt calibration with a print speed of higher than ~200-250mm/sec and accelerations slower than 1k in the PA pattern test. If your lowest acceleration is higher than 1k, then proportionally higher maximum print speeds can be used.
-**Remember:** With the calibration process, we aim to create a PA – Flow Rate – Acceleration profile for the toolhead. As we cannot directly control flow rate, we use print speed as a proxy (higher speed -> higher flow).
+**Remember:** With the calibration process, we aim to create a PA – Flow Rate – Acceleration profile for the toolhead. As we cannot directly control flow rate, we use print speed as a proxy (higher speed -> higher flow).
-With the above in mind, let’s create a worked example to identify the optimal number of PA tests to calibrate the adaptive PA model.
+With the above in mind, let’s create a worked example to identify the optimal number of PA tests to calibrate the adaptive PA model.
**The below starting points are recommended for the majority of Core XY printers:**
@@ -95,18 +93,19 @@ For this example, let’s assume that the baseline number of tests is adequate f
We, therefore, need to run 12 PA tests as below:
**Speed – Acceleration**
- 1. 50 – 1k
- 2. 100 – 1k
- 3. 150 – 1k
- 4. 200 – 1k
- 5. 50 – 2k
- 6. 100 – 2k
- 7. 150 – 2k
- 8. 200 – 2k
- 9. 50 – 4k
- 10. 100 – 4k
- 11. 150 – 4k
- 12. 200 – 4k
+
+1. 50 – 1k
+2. 100 – 1k
+3. 150 – 1k
+4. 200 – 1k
+5. 50 – 2k
+6. 100 – 2k
+7. 150 – 2k
+8. 200 – 2k
+9. 50 – 4k
+10. 100 – 4k
+11. 150 – 4k
+12. 200 – 4k
### Identifying the flow rates from the print speed
@@ -118,20 +117,18 @@ Test parameters needed to build adaptive PA table are printed on the test sample
Test sample above was done with acceleration 12000 mm/s² and flow rate 27.13 mm³/s
-
#### OrcaSlicer 2.1.0 and older.
As mentioned earlier, **the print speed is used as a proxy to vary the extrusion flow rate**. Once your PA test is set up, change the gcode preview to “flow” and move the horizontal slider over one of the herringbone patterns and take note of the flow rate for different speeds.

-
### Running the tests
#### General tips
-It is recommended that the PA step is set to a small value, to allow you to make meaningful distinctions between the different tests – **therefore a PA step value of 0.001 is recommended. **
+It is recommended that the PA step is set to a small value, to allow you to make meaningful distinctions between the different tests – **therefore a PA step value of 0.001 is recommended. **
-**Set the end PA to a value high enough to start showing perimeter separation for the lowest flow (print speed) and acceleration test.** For example, for a Voron 350 using Revo HF, the maximum value was set to 0.05 as that was sufficient to show perimeter separation even at the slowest flow rates and accelerations.
+**Set the end PA to a value high enough to start showing perimeter separation for the lowest flow (print speed) and acceleration test.** For example, for a Voron 350 using Revo HF, the maximum value was set to 0.05 as that was sufficient to show perimeter separation even at the slowest flow rates and accelerations.
**If the test is too big to fit on the build plate, increase your starting PA value or the PA step value accordingly until the test can fit.** If the lowest value becomes too high and there is no ideal PA present in the test, focus on increasing the PA step value to reduce the number of herringbones printed (hence the size of the print).
@@ -154,9 +151,9 @@ Setup your PA test as usual from the calibration menu in Orca slicer. Once setup
-Now input your identified print speeds and accelerations in the fields above and run the PA tests.
+Now input your identified print speeds and accelerations in the fields above and run the PA tests.
-**IMPORTANT:** Make sure your acceleration values are all the same in all text boxes. Same for the print speed values and Jerk (XY) values. Make sure your Jerk value is set to the external perimeter jerk used in your print profiles.
+**IMPORTANT:** Make sure your acceleration values are all the same in all text boxes. Same for the print speed values and Jerk (XY) values. Make sure your Jerk value is set to the external perimeter jerk used in your print profiles.
#### Test results processing
@@ -164,7 +161,7 @@ Now run the tests and note the optimal PA value, the flow, and the acceleration.
-Concatenate the PA value, the flow value, and the acceleration value into the final comma-separated sets to create the values entered in the model as shown above.
+Concatenate the PA value, the flow value, and the acceleration value into the final comma-separated sets to create the values entered in the model as shown above.
**You’re now done! The PA profile is created and calibrated!**
@@ -172,33 +169,32 @@ Remember to paste the values in the adaptive pressure advance measurements text
-
### Tips
#### Model input:
-The adaptive PA model built into the slicer is flexible enough to allow for as many or as few increments of flow and acceleration as you want. Ideally, you want at a minimum 3x data points for acceleration and flow in order to create a meaningful model.
+The adaptive PA model built into the slicer is flexible enough to allow for as many or as few increments of flow and acceleration as you want. Ideally, you want at a minimum 3x data points for acceleration and flow in order to create a meaningful model.
-However, if you don’t want to calibrate for flow, just run the acceleration tests and leave flow the same for each test (in which case you’ll input only 3 rows in the model text box). In this case, flow will be ignored when the model is used.
+However, if you don’t want to calibrate for flow, just run the acceleration tests and leave flow the same for each test (in which case you’ll input only 3 rows in the model text box). In this case, flow will be ignored when the model is used.
-Similarly for acceleration – in the above example you’ll input only 4 rows in the model text box, in which case acceleration will be ignored when the model is used.
+Similarly for acceleration – in the above example you’ll input only 4 rows in the model text box, in which case acceleration will be ignored when the model is used.
**However, make sure a triplet of values is always provided – PA value, Flow, Acceleration.**
#### Identifying the right PA:
-Higher acceleration and higher flow rate PA tests are easier to identify the optimal PA as the range of “good” values is much narrower. It’s evident where the PA is too large, as gaps start to appear in the corner and where PA is too low, as the corner starts bulging.
+Higher acceleration and higher flow rate PA tests are easier to identify the optimal PA as the range of “good” values is much narrower. It’s evident where the PA is too large, as gaps start to appear in the corner and where PA is too low, as the corner starts bulging.
However, the lower the flow rate and accelerations are, the range of good values is much wider. Having examined the PA tests even under a microscope, what is evident, is that if you can’t distinguish a value as being evidently better than another (i.e. sharper corner with no gaps) with the naked eye, then both values are correct. In which case, if you can’t find any meaningful difference, simply use the optimal values from the higher flow rates.
-- **Too high PA**
+- **Too high PA**

-- **Too low PA**
+- **Too low PA**

-- **Optimal PA**
+- **Optimal PA**
-
+
\ No newline at end of file
diff --git a/doc/air-filtration.md b/doc/air-filtration.md
index 4ab0868174..0fb06cee34 100644
--- a/doc/air-filtration.md
+++ b/doc/air-filtration.md
@@ -1,10 +1,15 @@
+# Air Filtration/Exhaust Fan Control in OrcaSlicer
+
OrcaSlicer use `M106 P3` command to control air-filtration/exhaust fan.
-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.
-*Note: Don't forget to change the pin name to the actual pin name you are using in the configuration*
+If you are using Klipper, you can define a `M106` macro to control both the normal part cooling fan, auxiliary fan, and exhaust fan.
-```
+Below is a reference configuration for Klipper.
+
+> [!NOTE]
+> Don't forget to change the pin name to the actual pin name you are using in the configuration.
+
+```ini
# instead of using [fan], we define the default part cooling fan with [fan_generic] here
# this is the default part cooling fan
[fan_generic fan0]
@@ -31,5 +36,4 @@ 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}
-
-```
+```
\ No newline at end of file
diff --git a/doc/bed-types.md b/doc/bed-types.md
index 77d5f93d9d..6cb357fbd7 100644
--- a/doc/bed-types.md
+++ b/doc/bed-types.md
@@ -2,15 +2,15 @@
You can enable it in printer settings.
+Once enabled, you can select the bed type in the drop-down menu, corresponding bed temperature will be set automatically.
+You can set the bed temperature for each bed type in the filament settings as demonstrated in the following image.
-Once enabled, you can select the bed type in the drop-down menu, corresponding bed temperature will be set automatically.
-You can set the bed temperature for each bed type in the filament settings as demonstrated in the following image.
-
+
+Orca also support `curr_bed_type` variable in custom G-code.
+For example, the following sample G-codes can detect the selected bed type and adjust the G-code offset accordingly for Klipper:
-Orca also support `curr_bed_type` variable in custom G-code.
-For example, the following sample G-codes can detect the selected bed type and adjust the G-code offset accordingly for Klipper:
-```
+```c++
{if curr_bed_type=="Textured PEI Plate"}
SET_GCODE_OFFSET Z=-0.05
{else}
@@ -19,7 +19,8 @@ For example, the following sample G-codes can detect the selected bed type and a
```
available bed types are:
-```
+
+```c++
"Cool Plate"
"Engineering Plate"
"High Temp Plate"
diff --git a/doc/developer-reference/Preset-and-bundle.md b/doc/developer-reference/Preset-and-bundle.md
index 4e0b00d186..883fee45d4 100644
--- a/doc/developer-reference/Preset-and-bundle.md
+++ b/doc/developer-reference/Preset-and-bundle.md
@@ -4,7 +4,8 @@ This page deals with the explanation for 3 classes in the code.
As the name might suggest this class deals with presets for various things. It defines an enum `Type` which basically tells you what kind of data the present contains. Below are a few explained and there corresponding UI elements
-#### Note: There is a lot of outdated and legacy code in the code base.
+> [!Warning]
+> There is a lot of outdated and legacy code in the code base.
- `TYPE_PRINT`: Refers to a process preset. It's called 'Print' probably due to some legacy code.
@@ -30,7 +31,8 @@ This is a bundle containing a few types of `PresetCollection`. One bundle has pr
each one of these contains a collection of processes, filaments and printers respectively.\
-#### Note: Printers, filaments and processes in the bundle don't all have to be compatible with each other. In fact all the saved presets are stored in one `PresetBundle`. The `PresetBundle` is loaded on start up. The list of filaments and processes shown for a particular printer is a subset of `filaments` and `prints` `PresetCollection`s.
+> [!IMPORTANT]
+> Printers, filaments and processes in the bundle don't all have to be compatible with each other. In fact all the saved presets are stored in one `PresetBundle`. The `PresetBundle` is loaded on start up. The list of filaments and processes shown for a particular printer is a subset of `filaments` and `prints` `PresetCollection`s.
## [`PresetCollection`](../../src/libslic3r/Preset.hpp)
diff --git a/doc/images/Tolerance/FilamentShrinkageCompensation.png b/doc/images/Tolerance/FilamentShrinkageCompensation.png
new file mode 100644
index 0000000000..8da497eca0
Binary files /dev/null and b/doc/images/Tolerance/FilamentShrinkageCompensation.png differ
diff --git a/doc/images/OrcaToleranceTes_m6.jpg b/doc/images/Tolerance/OrcaToleranceTes_m6.jpg
similarity index 100%
rename from doc/images/OrcaToleranceTes_m6.jpg
rename to doc/images/Tolerance/OrcaToleranceTes_m6.jpg
diff --git a/doc/images/OrcaToleranceTest_print.jpg b/doc/images/Tolerance/OrcaToleranceTest_print.jpg
similarity index 100%
rename from doc/images/OrcaToleranceTest_print.jpg
rename to doc/images/Tolerance/OrcaToleranceTest_print.jpg
diff --git a/doc/images/Tolerance/QualityPrecision.png b/doc/images/Tolerance/QualityPrecision.png
new file mode 100644
index 0000000000..7b763ea67c
Binary files /dev/null and b/doc/images/Tolerance/QualityPrecision.png differ
diff --git a/doc/images/tolerance_hole.jpg b/doc/images/Tolerance/tolerance_hole.jpg
similarity index 100%
rename from doc/images/tolerance_hole.jpg
rename to doc/images/Tolerance/tolerance_hole.jpg
diff --git a/doc/images/calibration.png b/doc/images/calibration.png
new file mode 100644
index 0000000000..2823664ebd
Binary files /dev/null and b/doc/images/calibration.png differ
diff --git a/doc/images/flowcalibration_update_flowrate.jpg b/doc/images/flowcalibration_update_flowrate.jpg
deleted file mode 100644
index f52250be42..0000000000
Binary files a/doc/images/flowcalibration_update_flowrate.jpg and /dev/null differ
diff --git a/doc/images/flowcalibration_update_flowrate.png b/doc/images/flowcalibration_update_flowrate.png
new file mode 100644
index 0000000000..6ac5024733
Binary files /dev/null and b/doc/images/flowcalibration_update_flowrate.png differ
diff --git a/doc/images/pa/pressure_advance_enable.png b/doc/images/pa/pressure_advance_enable.png
new file mode 100644
index 0000000000..478061d9f6
Binary files /dev/null and b/doc/images/pa/pressure_advance_enable.png differ
diff --git a/doc/images/retraction_test_print.jpg b/doc/images/retraction_test_print.jpg
index b60eff8c91..716496f483 100644
Binary files a/doc/images/retraction_test_print.jpg and b/doc/images/retraction_test_print.jpg differ
diff --git a/doc/pellet-flow-coefficient.md b/doc/pellet-flow-coefficient.md
index 8e91312ad6..0f318b404f 100644
--- a/doc/pellet-flow-coefficient.md
+++ b/doc/pellet-flow-coefficient.md
@@ -1,3 +1,5 @@
+# Pellet Flow Coefficient
+
Large format printers with print volumes in the order of 1m^3 generally use pellets for printing.
The overall tech is very similar to FDM printing.
It is FDM printing, but instead of filaments, it uses pellets.
@@ -15,9 +17,11 @@ for your own pellets for a particular printer model.
We are translating the pellet_flow_coefficient into filament_diameter so that everything works just like it
does already with very minor adjustments.
-filament_diameter = sqrt( (4 \* pellet_flow_coefficient) / PI )
+```math
+\text{filament\_diameter} = \sqrt{\frac{4 \times \text{pellet\_flow\_coefficient}}{\pi}}
+```
sqrt just makes the relationship between flow_coefficient and volume linear.
higher packing density -> more material extruded by single turn -> higher pellet_flow_coefficient -> treated as if a filament of larger diameter is being used
-All other calculations remain the same for slicing.
+All other calculations remain the same for slicing.
\ No newline at end of file
diff --git a/doc/precise-z-height.md b/doc/precise-z-height.md
index d7905e8baf..f013a5d161 100644
--- a/doc/precise-z-height.md
+++ b/doc/precise-z-height.md
@@ -1,6 +1,9 @@
+# Precise Z Height Adjustment
+
This feature ensures the accurate Z height of the model after slicing, even if the model height is not a multiple of the layer height.
-For example, slicing a 20mm x 20mm x 20.1mm cube with a layer height of 0.2mm would typically result in a final height of 20.2mm due to the layer height increments.
+For example, slicing a 20mm x 20mm x 20.1mm cube with a layer height of 0.2mm would typically result in a final height of 20.2mm due to the layer height increments.
By enabling this parameter, the layer height of the last five layers is adjusted so that the final sliced height matches the actual object height, resulting in an accurate 20.1mm (as shown in the picture).
+

diff --git a/doc/print_settings/calibration/Calibration.md b/doc/print_settings/calibration/Calibration.md
new file mode 100644
index 0000000000..ec662e722b
--- /dev/null
+++ b/doc/print_settings/calibration/Calibration.md
@@ -0,0 +1,65 @@
+# Calibration Guide
+
+This guide offers a structured and comprehensive overview of the calibration process for Orca Slicer.
+
+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.
+
+
+
+> [!IMPORTANT]
+> After completing the calibration process, remember to create a new project in order to exit the calibration mode.
+
+The recommended order for calibration is as follows:
+
+1. **[Temperature](temp-calib.md)**: Start by calibrating the temperature of the nozzle and the bed. This is crucial as it affects the viscosity of the filament, which in turn influences how well it flows through the nozzle and adheres to the print bed.
+
+
+
+2. **[Flow](flow-rate-calib.md)**: Calibrate the flow rate to ensure that the correct amount of filament is being extruded. This is important for achieving accurate dimensions and good layer adhesion.
+
+
+
+3. **[Pressure Advance](pressure-advance-calib.md)**: Calibrate the pressure advance settings to improve print quality and reduce artifacts caused by pressure fluctuations in the nozzle.
+
+ - **[Adaptative Pressure Advance](adaptive-pressure-advance-calib.md)**: This is an advanced calibration technique that can be used to further optimize the pressure advance settings for different print speeds and geometries.
+
+
+
+4. **[Retraction](retraction-calib.md)**: Calibrate the retraction settings to minimize stringing and improve print quality. Doing this after Flow and
+
+
+
+5. **[Tolerance](tolerance-calib.md)**: Calibrate the tolerances of your printer to ensure that it can accurately reproduce the dimensions of the model being printed. This is important for achieving a good fit between parts and for ensuring that the final print meets the desired specifications.
+
+
+
+6. **[Max Volumetric Speed](volumetric-speed-calib.md)**: Calibrate the maximum volumetric speed of the filament. This is important for ensuring that the printer can handle the flow rate of the filament without causing issues such as under-extrusion or over-extrusion.
+
+
+
+7. **[Cornering](cornering-calib.md)**: Calibrate the Jerk/Junction Deviation settings to improve print quality and reduce artifacts caused by sharp corners and changes in direction.
+
+
+
+8. **[Input Shaping](input-shaping-calib.md)**: This is an advanced calibration technique that can be used to reduce ringing and improve print quality by compensating for mechanical vibrations in the printer.
+
+
+
+### VFA
+
+Vertical Fine Artifacts (VFA) are small artifacts that can occur on the surface of a 3D print, particularly in areas where there are sharp corners or changes in direction. These artifacts can be caused by a variety of factors, including mechanical vibrations, resonance, and other factors that can affect the quality of the print.
+Because of the nature of these artifacts the methods to reduce them can be mechanical such as changing motors, belts and pulleys or with advanced calibrations such as Jerk/[Juction Deviation](#junction-deviation) corrections or [Input Shaping](#input-shaping).
+
+---
+
+_Credits:_
+
+- _The Flowrate test and retraction test is inspired by [SuperSlicer](https://github.com/supermerill/SuperSlicer)._
+- _The PA Line method is inspired by [K-factor Calibration Pattern](https://marlinfw.org/tools/lin_advance/k-factor.html)._
+- _The PA Tower method is inspired by [Klipper](https://www.klipper3d.org/Pressure_Advance.html)._
+- _The temp tower model is remixed from [Smart compact temperature calibration tower](https://www.thingiverse.com/thing:2729076)._
+- _The max flowrate test was inspired by Stefan (CNC Kitchen), and the model used in the test is a remix of his [Extrusion Test Structure](https://www.printables.com/model/342075-extrusion-test-structure)._
+- _ZV Input Shaping is inspired by [Marlin Input Shaping](https://marlinfw.org/docs/features/input_shaping.html) and [Ringing Tower 3D STL](https://marlinfw.org/assets/stl/ringing_tower.stl)._
+- _ChatGPT_ ;)
\ No newline at end of file
diff --git a/doc/print_settings/calibration/adaptive-pressure-advance-calib.md b/doc/print_settings/calibration/adaptive-pressure-advance-calib.md
new file mode 100644
index 0000000000..5223355c47
--- /dev/null
+++ b/doc/print_settings/calibration/adaptive-pressure-advance-calib.md
@@ -0,0 +1,201 @@
+# Adaptive Pressure Advance
+
+This feature aims to dynamically adjust the printer’s pressure advance to better match the conditions the toolhead is facing during a print. Specifically, to more closely align to the ideal values as flow rate, acceleration, and bridges are encountered.
+This wiki page aims to explain how this feature works, the prerequisites required to get the most out of it as well as how to calibrate it and set it up.
+
+## Settings Overview
+
+This feature introduces the below options under the filament settings:
+
+1. **Enable adaptive pressure advance:** This is the on/off setting switch for adaptive pressure advance.
+2. **Enable adaptive pressure advance for overhangs:** Enable adaptive PA for overhangs as well as when flow changes within the same feature. This is an experimental option because if the PA profile is not set accurately, it will cause uniformity issues on the external surfaces before and after overhangs. It is recommended to start with this option switched off and enable it after the core adaptive pressure advance feature is calibrated correctly.
+3. **Pressure advance for bridges:** Sets the desired pressure advance value for bridges. Set it to 0 to disable this feature. Experiments have shown that a lower PA value when printing bridges helps reduce the appearance of slight under extrusion immediately after a bridge, which is caused by the pressure drop in the nozzle when printing in the air. Therefore, a lower pressure advance value helps counteract this. A good starting point is approximately half your usual PA value.
+4. **Adaptive pressure advance measurements:** This field contains the calibration values used to generate the pressure advance profile for the nozzle/printer. Input sets of pressure advance (PA) values and the corresponding volumetric flow speeds and accelerations they were measured at, separated by a comma. Add one set of values per line. More information on how to calibrate the model follows in the sections below.
+5. **Pressure advance:** The old field is still needed and is required to be populated with a PA value. A “good enough” median PA value should be entered here, as this will act as a fallback value when performing tool changes, printing a purge/wipe tower for multi-color prints as well as a fallback in case the model fails to identify an appropriate value (unlikely but it’s the ultimate backstop).
+
+
+
+## Pre-Requisites
+
+This feature has been tested with Klipper-based printers. While it may work with Marlin or Bambu lab printers, it is currently untested with them. It shouldn’t adversely affect the machine; however, the quality results from enabling it are not validated.
+
+**Older versions of Klipper used to stutter when pressure advance was changed while the toolhead was in motion. This has been fixed with the latest Klipper firmware releases. Therefore, make sure your Klipper installation is updated to the latest version before enabling this feature, in order to avoid any adverse quality impacts.**
+
+Klipper firmware released after July 11th, 2024 (version greater than approximately v0.12.0-267) contains the above fix and is compatible with adaptive pressure advance. If you are upgrading from an older version, make sure you update both your Klipper installation as well as reflash the printer MCU’s (main board and toolhead board if present).
+
+## Use case (what to expect)
+
+Following experimentation, it has been noticed that the optimal pressure advance value is less:
+
+1. The faster you print (hence the higher the volumetric flow rate requested from the toolhead).
+2. The larger the layer height (hence the higher the volumetric flow rate requested from the toolhead).
+3. The higher the print acceleration is.
+
+What this means is that we never get ideal PA values for each print feature, especially when they vary drastically in speed and acceleration. We can tune PA for a faster print speed (flow) but compromise on corner sharpness for slower speeds or tune PA for corner sharpness and deal with slight corner-perimeter separation in faster speeds. The same goes for accelerations as well as different layer heights.
+
+This compromise usually means that we settle for tuning an "in-between" PA value between slower external features and faster internal features so we don't get gaps, but also not get too much bulging in external perimeters.
+
+**However, what this also means is that if you are printing with a single layer height, single speed, and acceleration, there is no need to enable this feature.**
+
+Adaptive pressure advance aims to address this limitation by implementing a completely different method of setting pressure advance. **Following a set of PA calibration tests done at different flow rates (speeds and layer heights) and accelerations, a pressure advance model is calculated by the slicer.** Then that model is used to emit the best fit PA for any arbitrary feature flow rate (speed) and acceleration used in the print process.
+
+In addition, it means that you only need to tune this feature once and print across different layer heights with good PA performance.
+
+Finally, if during calibration you notice that there is little to no variance between the PA tests, this feature is redundant for you. **From experiments, high flow nozzles fitted on high-speed core XY printers appear to benefit the most from this feature as they print with a larger range of flow rates and at a larger range of accelerations.**
+
+### Expected results:
+
+With this feature enabled there should be absolutely no bulge in the corners, just the smooth rounding caused by the square corner velocity of your printer.
+
+In addition, seams should appear smooth with no bulging or under extrusion.
+
+Solid infill should have no gaps, pinholes, or separation from the perimeters.
+
+Compared to with this feature disabled, where the internal solid infill and external-internal perimeters show signs of separation and under extrusion, when PA is tuned for optimal external perimeter performance as shown below.
+
+
+## How to calibrate the adaptive pressure advance model
+
+### Defining the calibration sets
+
+Firstly, it is important to understand your printer speed and acceleration limits in order to set meaningful boundaries for the calibrations:
+
+1. **Upper acceleration range:** Do not attempt to calibrate adaptive PA for an acceleration that is larger than what the Klipper input shaper calibration tool recommends for your selected shaper. For example, if Klipper recommends an EI shaper with 4k maximum acceleration for your slowest axis (usually the Y axis), don’t calibrate adaptive PA beyond that value. This is because after 4k the input shaper smoothing is magnified and the perimeter separations that appear like PA issues are caused by the input shaper smoothing the shape of the corner. Basically, you’d be attempting to compensate for an input shaper artefact with PA.
+2. **Upper print speed range:** The Ellis PA pattern test has been proven to be the most efficient and effective test to run to calibrate adaptive PA. It is fast and allows for a reasonably accurate and easy-to-read PA value. However, the size of the line segments is quite small, which means that for the faster print speeds and slower accelerations, the toolhead will not be able to reach the full flow rate that we are calibrating against. It is therefore generally not recommended to attempt calibration with a print speed of higher than ~200-250mm/sec and accelerations slower than 1k in the PA pattern test. If your lowest acceleration is higher than 1k, then proportionally higher maximum print speeds can be used.
+
+**Remember:** With the calibration process, we aim to create a PA – Flow Rate – Acceleration profile for the toolhead. As we cannot directly control flow rate, we use print speed as a proxy (higher speed -> higher flow).
+
+With the above in mind, let’s create a worked example to identify the optimal number of PA tests to calibrate the adaptive PA model.
+
+**The below starting points are recommended for the majority of Core XY printers:**
+
+1. **Accelerations:** 1k, 2k, 4k
+2. **Print speeds:** 50mm/sec, 100mm/sec, 150mm/sec, 200mm/sec.
+
+**That means we need to run 3x4 = 12 PA tests and identify the optimal PA for them.**
+
+Finally, if the maximum acceleration given by input shaper is materially higher than 4k, run a set of tests with the higher accelerations. For example, if input shaper allows a 6k value, run PA tests as below:
+
+1. **Accelerations:** 1k, 2k, 4k, 6k
+2. **Print speeds:** 50mm/sec, 100mm/sec, 150mm/sec, 200mm/sec.
+
+Similarly, if the maximum value recommended is 12k, run PA tests as below:
+
+1. **Accelerations:** 1k, 2k, 4k, 8k, 12k
+2. **Print speeds:** 50mm/sec, 100mm/sec, 150mm/sec, 200mm/sec.
+
+So, at worst case you will need to run 5x4 = 20 PA tests if your printer acceleration is on the upper end! In essence, you want enough granularity of data points to create a meaningful model while also not overdoing it with the number of tests. So, doubling the speed and acceleration is a good compromise to arrive at the optimal number of tests.
+For this example, let’s assume that the baseline number of tests is adequate for your printer:
+
+1. **Accelerations:** 1k, 2k, 4k
+2. **Print speeds:** 50mm/sec, 100mm/sec, 150mm/sec, 200mm/sec.
+
+We, therefore, need to run 12 PA tests as below:
+
+**Speed – Acceleration**
+
+1. 50 – 1k
+2. 100 – 1k
+3. 150 – 1k
+4. 200 – 1k
+5. 50 – 2k
+6. 100 – 2k
+7. 150 – 2k
+8. 200 – 2k
+9. 50 – 4k
+10. 100 – 4k
+11. 150 – 4k
+12. 200 – 4k
+
+### Identifying the flow rates from the print speed
+
+#### OrcaSlicer 2.2.0 and later
+
+Test parameters needed to build adaptive PA table are printed on the test sample:
+
+
+
+Test sample above was done with acceleration 12000 mm/s² and flow rate 27.13 mm³/s
+
+#### OrcaSlicer 2.1.0 and older.
+
+As mentioned earlier, **the print speed is used as a proxy to vary the extrusion flow rate**. Once your PA test is set up, change the gcode preview to “flow” and move the horizontal slider over one of the herringbone patterns and take note of the flow rate for different speeds.
+
+
+### Running the tests
+
+#### General tips
+
+It is recommended that the PA step is set to a small value, to allow you to make meaningful distinctions between the different tests – **therefore a PA step value of 0.001 is recommended. **
+
+**Set the end PA to a value high enough to start showing perimeter separation for the lowest flow (print speed) and acceleration test.** For example, for a Voron 350 using Revo HF, the maximum value was set to 0.05 as that was sufficient to show perimeter separation even at the slowest flow rates and accelerations.
+
+**If the test is too big to fit on the build plate, increase your starting PA value or the PA step value accordingly until the test can fit.** If the lowest value becomes too high and there is no ideal PA present in the test, focus on increasing the PA step value to reduce the number of herringbones printed (hence the size of the print).
+
+
+
+#### OrcaSlicer 2.3.0 and newer
+
+PA pattern calibration configuration window have been changed to simplify test setup. Now all is needed is to fill list of accelerations and speeds into relevant fields of the calibration window:
+
+
+
+Test patterns generated for each acceleration-speed pair and all parameters are set accordingly. No additional actions needed from user side. Just slice and print all plates generated.
+
+Refer to [Calibration Guide](./Calibration) for more details on batch mode calibration.
+
+#### 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:
+
+
+
+
+
+Now input your identified print speeds and accelerations in the fields above and run the PA tests.
+
+**IMPORTANT:** Make sure your acceleration values are all the same in all text boxes. Same for the print speed values and Jerk (XY) values. Make sure your Jerk value is set to the external perimeter jerk used in your print profiles.
+
+#### Test results processing
+
+Now run the tests and note the optimal PA value, the flow, and the acceleration. You should produce a table like this:
+
+
+
+Concatenate the PA value, the flow value, and the acceleration value into the final comma-separated sets to create the values entered in the model as shown above.
+
+**You’re now done! The PA profile is created and calibrated!**
+
+Remember to paste the values in the adaptive pressure advance measurements text box as shown below, and save your filament profile.
+
+
+
+### Tips
+
+#### Model input:
+
+The adaptive PA model built into the slicer is flexible enough to allow for as many or as few increments of flow and acceleration as you want. Ideally, you want at a minimum 3x data points for acceleration and flow in order to create a meaningful model.
+
+However, if you don’t want to calibrate for flow, just run the acceleration tests and leave flow the same for each test (in which case you’ll input only 3 rows in the model text box). In this case, flow will be ignored when the model is used.
+
+Similarly for acceleration – in the above example you’ll input only 4 rows in the model text box, in which case acceleration will be ignored when the model is used.
+
+**However, make sure a triplet of values is always provided – PA value, Flow, Acceleration.**
+
+#### Identifying the right PA:
+
+Higher acceleration and higher flow rate PA tests are easier to identify the optimal PA as the range of “good” values is much narrower. It’s evident where the PA is too large, as gaps start to appear in the corner and where PA is too low, as the corner starts bulging.
+
+However, the lower the flow rate and accelerations are, the range of good values is much wider. Having examined the PA tests even under a microscope, what is evident, is that if you can’t distinguish a value as being evidently better than another (i.e. sharper corner with no gaps) with the naked eye, then both values are correct. In which case, if you can’t find any meaningful difference, simply use the optimal values from the higher flow rates.
+
+- **Too high PA**
+
+
+
+- **Too low PA**
+
+
+
+- **Optimal PA**
+
+
diff --git a/doc/print_settings/calibration/cornering-calib.md b/doc/print_settings/calibration/cornering-calib.md
new file mode 100644
index 0000000000..8d1d3b4cef
--- /dev/null
+++ b/doc/print_settings/calibration/cornering-calib.md
@@ -0,0 +1,60 @@
+# 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.
+
+## Jerk
+
+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.
+
+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`.
+ 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.
+
+ 
+
+ 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
+
+ 
+ 
+
+ 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.
+
+ 
+
+ 4. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
+
+ 
+ 
+
+3. Save the settings
+ 1. Set your Maximun Junction Deviation value in [Printer settings/Motion ability/Jerk limitation].
+ 2. Use the following G-code to set the mm:
+ ```gcode
+ M205 J#JunctionDeviationValue
+ M500
+ ```
+ Example
+ ```gcode
+ M205 J0.012
+ M500
+ ```
+ 3. Recompile your MarlinFW
+ 1. In Configuration.h uncomment and set:
+ ```cpp
+ #define JUNCTION_DEVIATION_MM 0.012 // (mm) Distance from real junction edge
+ ```
+ 2. Check Classic Jerk is disabled (commented).
+ ```cpp
+ //#define CLASSIC_JERK
+ ```
\ No newline at end of file
diff --git a/doc/print_settings/calibration/flow-rate-calib.md b/doc/print_settings/calibration/flow-rate-calib.md
new file mode 100644
index 0000000000..bfee55d1e7
--- /dev/null
+++ b/doc/print_settings/calibration/flow-rate-calib.md
@@ -0,0 +1,33 @@
+# 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. If the flow ratio is too low, under-extrusion may occur, leading to gaps, weak layers, and poor structural integrity. On the other hand, a flow ratio that is too high can cause over-extrusion, resulting in excess material, rough surfaces, and dimensional inaccuracies.
+
+> [!WARNING]
+> For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option.
+
+> 
+
+> [!IMPORTANT]
+> PASS 1 and PASS 2 follow the older flow ratio formula `FlowRatio_old*(100 + modifier)/100`. YOLO (Recommended) and YOLO (perfectist version) use a new system that is very simple `FlowRatio_old±modifier`.
+
+
+
+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.
+4. Examine the blocks and determine which one has the smoothest top surface.
+ 
+ 
+
+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.
+
+
+
+
+
+> [!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).
\ No newline at end of file
diff --git a/doc/print_settings/calibration/input-shaping-calib.md b/doc/print_settings/calibration/input-shaping-calib.md
new file mode 100644
index 0000000000..9edab25fe1
--- /dev/null
+++ b/doc/print_settings/calibration/input-shaping-calib.md
@@ -0,0 +1,125 @@
+# Input Shaping
+
+During high-speed movements, vibrations can cause a phenomenon called "ringing," where periodic ripples appear on the print surface. Input Shaping provides an effective solution by counteracting these vibrations, improving print quality and reducing wear on components without needing to significantly lower print speeds.
+
+- [Klipper](#klipper)
+- [Marlin](#marlin)
+
+## Klipper
+
+### Resonance Compensation
+
+The Klipper Resonance Compensation is a set of Input Shaping modes that can be used to reduce ringing and improve print quality.
+Ussualy the recommended values modes are `MZV` or `EI` for Delta printers.
+
+1. Pre-requisites:
+ 1. 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).
+
+ > [!NOTE]
+ > These settings depend on your printer's motion ability and the filament's max volumetric speed. If you can't reach speeds that cause ringing, try increasing the filament's max volumetric speed (avoid materials below 10 mm³/s).
+ 3. Jerk [Klipper Square Corner Velocity](https://www.klipper3d.org/Kinematics.html?h=square+corner+velocity#look-ahead) to 5 or a high value (e.g., 20).
+ 2. In printer settigs:
+ 1. Set the Shaper Type to `MZV` or `EI`.
+ ```gcode
+ SET_INPUT_SHAPER SHAPER_TYPE=MZV
+ ```
+ 2. Disable [Minimun Cruise Ratio](https://www.klipper3d.org/Kinematics.html#minimum-cruise-ratio) with:
+ ```gcode
+ SET_VELOCITY_LIMIT MINIMUM_CRUISE_RATIO=0
+ ```
+ 3. Use an opaque, high-gloss filament to make the ringing more visible.
+2. Print the Input Shaping Frequency test with a range of frequencies.
+
+ 
+
+ 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
+
+ 
+ 
+
+ 2. If not a clear result, you can measure a X and Y min and max acceptable heights and repeat the test with that min and max value.
+
+ > [!Warning]
+ > There is a chance you will need to set higher than 60Hz frequencies. Some printers with very rigid frames and excellent mechanics may exhibit frequencies exceeding 100Hz.
+
+3. Print the Damping test setting your X and Y frequency to the value you found in the previous step.
+
+ 
+
+ 1. Measure the X and Y heights and read the damping set at that point in Orca Slicer.
+
+ 
+ 
+
+ > [!Important]
+ > Not all Resonance Compensation modes support damping.
+
+4. Restore your 3D Printer settings to avoid keep using high acceleration and jerk values.
+5. Save the settings
+ 1. You need to go to the printer settings and set the X and Y frequency and damp to the value you found in the previous step.
+
+## Marlin
+
+### ZV Input Shaping
+
+ZV Input Shaping introduces an anti-vibration signal into the stepper motion for the X and Y axes. It works by splitting the step count into two halves: the first at half the frequency and the second as an "echo," delayed by half the ringing interval. This simple approach effectively reduces vibrations, improving print quality and allowing for higher speeds.
+
+1. Pre-requisites:
+ 1. 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).
+ > [!NOTE]
+ > These settings depend on your printer's motion ability and the filament's max volumetric speed. If you can't reach speeds that cause ringing, try increasing the filament's max volumetric speed (avoid materials below 10 mm³/s).
+ 3. Jerk
+ 1. If using [Classic Jerk](https://marlinfw.org/docs/configuration/configuration.html#jerk-) use a high value (e.g., 20).
+ 2. If using [Junction Deviation](https://marlinfw.org/docs/features/junction_deviation.html) (new Marlin default mode) this test will use 0.25 (high enough to most printers).
+ 2. Use an opaque, high-gloss filament to make the ringing more visible.
+2. Print the Input Shaping Frequency test with a range of frequencies.
+
+ 
+
+ 1. Measure the X and Y heights and read the frequency set at that point in Orca Slicer.
+
+ 
+ 
+
+ 2. If not a clear result, you can measure a X and Y min and max acceptable heights and repeat the test with that min and max value.
+
+ > [!Warning]
+ > There is a chance you will need to set higher than 60Hz frequencies. Some printers with very rigid frames and excellent mechanics may exhibit frequencies exceeding 100Hz.
+
+3. Print the Damping test setting your X and Y frequency to the value you found in the previous step.
+
+ 
+
+ 1. Measure the X and Y heights and read the damping set at that point in Orca Slicer.
+
+ 
+ 
+
+4. Restore your 3D Printer settings to avoid keep using high acceleration and jerk values.
+ 1. Reboot your printer.
+ 2. Use the following G-code to restore your printer settings:
+ ```gcode
+ M501
+ ```
+5. Save the settings
+ 1. You need to go to the printer settings and set the X and Y frequency and damp to the value you found in the previous step.
+ 2. Use the following G-code to set the frequency:
+ ```gcode
+ M593 X F#Xfrequency D#XDamping
+ M593 Y F#Yfrequency D#YDamping
+ M500
+ ```
+ Example
+ ```gcode
+ M593 X F37.25 D0.16
+ M593 Y F37.5 D0.06
+ M500
+ ```
+
+### Fixed-Time Motion
+
+TODO This calibration test is currently under development. See the [Marlin documentation](https://marlinfw.org/docs/gcode/M493.html) for more information.
diff --git a/doc/print_settings/calibration/pressure-advance-calib.md b/doc/print_settings/calibration/pressure-advance-calib.md
new file mode 100644
index 0000000000..2da6b98347
--- /dev/null
+++ b/doc/print_settings/calibration/pressure-advance-calib.md
@@ -0,0 +1,77 @@
+# Pressure Advance
+
+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.
+
+> [!NOTE]
+> [Adaptive Pressure Advance Guide](print_settings/calibration/adaptive-pressure-advance-calib.md)
+
+> [!WARNING]
+> For Marlin: Linear advance must be enabled in firmware (M900). **Not all printers have it enabled by default.**
+
+> [!WARNING]
+> For Bambulab X1/X1C users, make sure you do not select the 'Flow calibration' option when printings.
+>
+> 
+
+## Line method
+
+The line method is quick and straightforward to test. However, its accuracy highly depends on your first layer quality. It is suggested to turn on the bed mesh leveling for this test.
+Steps:
+
+1. Select the printer, filament, and process you would like to use for the test.
+2. Print the project and check the result. You can select the value of the most even line and update your PA value in the filament settings.
+3. In this test, a PA value of `0.016` appears to be optimal.
+ 
+
+
+
+ 
+
+ 
+## Pattern method
+
+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.
+
+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.
+
+1. Single test \
+ 
+2. Batch mode testing (multiple tests on a sinle plate) \
+ 
+
+Once test generated, one or more small rectangular prisms could be found on the plate, one for each test case. This object serves a few purposes:
+
+1. The test pattern itself is added in as custom G-Code at each layer, same as you could do by hand actually. The rectangular prism gives us the layers in which to insert that G-Code. This also means that **you'll see the full test pattern when you move to the Preview pane**:
+
+
+
+1. The prism acts as a handle, enabling you to move the test pattern wherever you'd like on the plate by moving the prism
+2. Each test object is pre-configured with target parameters which are reflected in the objects name. However, test parameters may be adjusted for each prism individually by referring to the object list pane:
+
+
+
+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:
+
+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
+3. In terms of speed, the pattern only uses the `First layer speed -> First layer` and `Other layers speed -> Outer wall` speeds
+4. The infill pattern beneath the numbers cannot be changed becuase it's not actually an infill pattern pulled from the settings. All of the pattern G-Code is custom written, so that "infill" is, effectively, hand-drawn and so not processed through the usual channels that would enable Orca to recognize it as infill
+
+## Tower method
+
+The tower method may take a bit more time to complete, but it does not rely on the quality of the first layer.
+The PA value for this test will be increased by 0.002 for every 1 mm increase in height. (**NOTE** 0.02 for Bowden)
+
+1. Select the printer, filament, and process you would like to use for the test.
+2. Examine each corner of the print and mark the height that yields the best overall result.
+3. I selected a height of 8 mm for this case, so the pressure advance value should be calculated as `PressureAdvanceStart+(PressureAdvanceStep x measured)` example: `0+(0.002 x 8) = 0.016`.
+ 
+
+
+
+> [!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).
\ No newline at end of file
diff --git a/doc/print_settings/calibration/retraction-calib.md b/doc/print_settings/calibration/retraction-calib.md
new file mode 100644
index 0000000000..ce4fa84411
--- /dev/null
+++ b/doc/print_settings/calibration/retraction-calib.md
@@ -0,0 +1,20 @@
+# Retraction test
+
+Retraction is the process of pulling the filament back into the nozzle to prevent oozing and stringing during non-print moves. If the retraction length is too short, it may not effectively prevent oozing, while if it's too long, it can lead to clogs or under-extrusion. Filaments like PETG and TPU are more prone to stringing, so they may require longer retraction lengths compared to PLA or ABS.
+
+This test generates a retraction tower automatically. The retraction tower is a vertical structure with multiple notches, each printed at a different retraction length. After the print is complete, we can examine each section of the tower to determine the optimal retraction length for the filament. The optimal retraction length is the shortest one that produces the cleanest tower.
+
+
+
+
+
+In the dialog, you can select the start and end retraction length, as well as the retraction length increment step. The default values are 0mm for the start retraction length, 2mm for the end retraction length, and 0.1mm for the step. These values are suitable for most direct drive extruders. However, for Bowden extruders, you may want to increase the start and end retraction lengths to 1mm and 6mm, respectively, and set the step to 0.2mm.
+
+
+
+> [!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.
+> 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]
+> @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).
\ No newline at end of file
diff --git a/doc/print_settings/calibration/temp-calib.md b/doc/print_settings/calibration/temp-calib.md
new file mode 100644
index 0000000000..52ad44b4fd
--- /dev/null
+++ b/doc/print_settings/calibration/temp-calib.md
@@ -0,0 +1,29 @@
+# Temp Calibration
+
+In FDM 3D printing, the temperature is a critical factor that affects the quality of the print.
+There is no other calibration that can have such a big impact on the print quality as temperature calibration.
+
+## Nozzle Temp tower
+
+Nozzle temperature is one of the most important settings to calibrate for a successful print. The temperature of the nozzle affects the viscosity of the filament, which in turn affects how well it flows through the nozzle and adheres to the print bed. If the temperature is too low, the filament may not flow properly, leading to under-extrusion, poor layer adhesion and stringing. If the temperature is too high, the filament may degrade, over-extrude and produce stringing.
+
+
+
+Temp tower is a straightforward test. The temp tower is a vertical tower with multiple blocks, each printed at a different temperature. Once the print is complete, we can examine each block of the tower and determine the optimal temperature for the filament. The optimal temperature is the one that produces the highest quality print with the least amount of issues, such as stringing, layer adhesion, warping (overhang), and bridging.
+
+
+
+## Bed temperature
+
+Bed temperature is another important setting to calibrate for a successful print. The bed temperature affects the adhesion of the filament to the print bed, which in turn affects the overall quality of the print. If the bed temperature is too low, the filament may not adhere properly to the print bed, leading to warping and poor layer adhesion. If the bed temperature is too high, the filament may become too soft and lose its shape, leading to over-extrusion and poor layer adhesion.
+
+This setting doesn't have a specific test, but it is recommended to start with the recommended bed temperature for the filament and adjust it based on the filament manufacturer's recommendations.
+
+## Chamber temperature
+
+Chamber temperature can affect the print quality, especially for high-temperature filaments. A heated chamber can help to maintain a consistent temperature throughout the print, reducing the risk of warping and improving layer adhesion. However, it is important to monitor the chamber temperature to ensure that it does not exceed the recommended temperature for the filament being used.
+
+See: [Chamber temperature printer settings](../../Chamber-temperature.md)
+
+> [!NOTE]
+> Low temperature Filaments like PLA can clog the nozzle if the chamber temperature is too high.
\ No newline at end of file
diff --git a/doc/print_settings/calibration/tolerance-calib.md b/doc/print_settings/calibration/tolerance-calib.md
new file mode 100644
index 0000000000..a024546944
--- /dev/null
+++ b/doc/print_settings/calibration/tolerance-calib.md
@@ -0,0 +1,31 @@
+# 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:
+
+- Filament Compensation:
+
+ - Shrinkage (XY)
+
+ 
+
+- Process Compensation:
+
+ - X-Y hole compensation
+ - X-Y contour compensation
+ - Precise wall
+ - Precise Z height
+
+ 
+
+## Orca Tolerance Test
+
+This calibration test is designed to evaluate the dimensional accuracy of your printer and filament. The model consists of a base with six hexagonal holes, each with a different tolerance: 0.0 mm, 0.05 mm, 0.1 mm, 0.2 mm, 0.3 mm, and 0.4 mm, as well as a hexagon-shaped tester.
+
+
+
+You can check the tolerance using either an M6 Allen key or the included printed hexagon tester.
+Use calipers to measure both the holes and the inner tester. Based on your results, you can fine-tune the X-Y hole compensation and X-Y contour compensation settings. Repeat the process until you achieve the desired precision.
+
+
+
\ No newline at end of file
diff --git a/doc/print_settings/calibration/volumetric-speed-calib.md b/doc/print_settings/calibration/volumetric-speed-calib.md
new file mode 100644
index 0000000000..c80324adb9
--- /dev/null
+++ b/doc/print_settings/calibration/volumetric-speed-calib.md
@@ -0,0 +1,23 @@
+# Max Volumetric speed
+
+This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament.
+
+You will be promted to enter the settings for the test: start volumetric speed, end volumentric speed, and step. It is recommended to use the default values (5mm³/s start, 20mm³/s end, with a step of 0.5), unless you already have an idea of the lower or upper limit for your filament. Select "OK", slice the plate, and send it to the printer.
+
+Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well.
+
+
+
+Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings.
+
+
+
+You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filmanet.
+
+
+
+> [!NOTE]
+> You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.
+
+> [!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).
\ No newline at end of file
diff --git a/doc/print_settings/quality/quality_settings_layer_height.md b/doc/print_settings/quality/quality_settings_layer_height.md
index 350738f379..c645c71100 100644
--- a/doc/print_settings/quality/quality_settings_layer_height.md
+++ b/doc/print_settings/quality/quality_settings_layer_height.md
@@ -3,9 +3,10 @@
This setting controls how tall each printed layer will be. Typically, a smaller layer height produces a better-looking part with less jagged edges, especially around curved sections (like the top of a sphere). However, lower layer heights mean more layers to print, proportionally increasing print time.
### Tips:
+
1. **The optimal layer height depends on the size of your nozzle**. The set layer height must not be taller than 80% of the diameter of the nozzle, else there is little "squish" between the printed layer and the layer below, leading to weaker parts.
-2. While technically there is no limit to how small a layer height one can use, **typically most printers struggle to print reliably with a layer height that is smaller than 20% of the nozzle diameter**. This is because with smaller layer heights, less material is extruded per mm and, at some point, the tolerances of the extruder system result in variations in the flow to such an extent that visible artifacts occur, especially if printing at high speeds.
+2. While technically there is no limit to how small a layer height one can use, **typically most printers struggle to print reliably with a layer height that is smaller than 20% of the nozzle diameter**. This is because with smaller layer heights, less material is extruded per mm and, at some point, the tolerances of the extruder system result in variations in the flow to such an extent that visible artifacts occur, especially if printing at high speeds.
For example, it is not uncommon to see "fish scale" type patterns on external walls when printing with a 0.4 mm nozzle at 0.08 mm layer height at speeds of 200mm/sec+. If you observe that pattern, simply increase your layer height to 30% of your nozzle height and/or slow down the print speed considerably.
@@ -14,4 +15,5 @@ For example, it is not uncommon to see "fish scale" type patterns on external wa
This setting controls how tall the first layer of the print will be. Typically, this is set to 50% of the nozzle width for optimal bed adhesion.
### Tip:
-A thicker first layer is more forgiving to slight variations to the evenness of the build surface, resulting in a more uniform, visually, first layer. Set it to 0.25mm for a 0.4mm nozzle, for example, if your build surface is uneven or your printer has a slightly inconsistent z offset between print runs. However, as a rule of thumb, try not to exceed 65% of the nozzle width so as to not compromise bed adhesion too much.
+
+A thicker first layer is more forgiving to slight variations to the evenness of the build surface, resulting in a more uniform, visually, first layer. Set it to 0.25mm for a 0.4mm nozzle, for example, if your build surface is uneven or your printer has a slightly inconsistent z offset between print runs. However, as a rule of thumb, try not to exceed 65% of the nozzle width so as to not compromise bed adhesion too much.
\ No newline at end of file
diff --git a/doc/print_settings/quality/quality_settings_line_width.md b/doc/print_settings/quality/quality_settings_line_width.md
index ae4ae05233..37d1d0c26d 100644
--- a/doc/print_settings/quality/quality_settings_line_width.md
+++ b/doc/print_settings/quality/quality_settings_line_width.md
@@ -3,23 +3,23 @@
These settings control how wide the extruded lines are.
- **Default**: The default line width in mm or as a percentage of the nozzle size.
-
+
- **First Layer**: The line width of the first layer. Typically, this is wider than the rest of the print, to promote better bed adhesion. See tips below for why.
-
+
- **Outer Wall**: The line width in mm or as a percentage of the nozzle size used when printing the model’s external wall perimeters.
-
+
- **Inner Wall**: The line width in mm or as a percentage of the nozzle size used when printing the model’s internal wall perimeters.
-
+
- **Top Surface**: The line width in mm or as a percentage of the nozzle size used when printing the model’s top surface.
-
+
- **Sparse Infill**: The line width in mm or as a percentage of the nozzle size used when printing the model’s sparse infill.
-
+
- **Internal Solid Infill**: The line width in mm or as a percentage of the nozzle size used when printing the model’s internal solid infill.
-
+
- **Support**: The line width in mm or as a percentage of the nozzle size used when printing the model’s support structures.
-
## Tips:
+
1. **Typically, the line width will be anything from 100% up to 150% of the nozzle width**. Due to the way the slicer’s flow math works, a 100% line width will attempt to extrude slightly “smaller” than the nozzle size and when squished onto the layer below will match the nozzle orifice. You can read more on the flow math here: [Flow Math](https://manual.slic3r.org/advanced/flow-math).
2. **For most cases, the minimum acceptable recommended line width is 105% of the nozzle diameter**, typically reserved for the outer walls, where greater precision is required. A wider line is less precise than a thinner line.
@@ -40,4 +40,4 @@ These settings control how wide the extruded lines are.
10. **For supports, using 100% or less line width will make the supports weaker** by reducing their layer adhesion, making them easier to remove.
-11. **If your printer is limited mechanically, try to maintain the material flow as consistent as possible between critical features of your model**, to ease the load on the extruder having to adapt its flow between them. This is especially useful for printers that do not use pressure advance/linear advance and if your extruder is not as capable mechanically. You can do that by adjusting the line widths and speeds to reduce the variation between critical features (e.g., external and internal wall flow). For example, print them at the same speed and the same line width, or print the external perimeter slightly wider and slightly slower than the internal perimeter. Material flow can be visualized in the sliced model – flow drop down.
+11. **If your printer is limited mechanically, try to maintain the material flow as consistent as possible between critical features of your model**, to ease the load on the extruder having to adapt its flow between them. This is especially useful for printers that do not use pressure advance/linear advance and if your extruder is not as capable mechanically. You can do that by adjusting the line widths and speeds to reduce the variation between critical features (e.g., external and internal wall flow). For example, print them at the same speed and the same line width, or print the external perimeter slightly wider and slightly slower than the internal perimeter. Material flow can be visualized in the sliced model – flow drop down.
\ No newline at end of file
diff --git a/doc/print_settings/quality/quality_settings_seam.md b/doc/print_settings/quality/quality_settings_seam.md
index 7777be8ff6..3dc983aae7 100644
--- a/doc/print_settings/quality/quality_settings_seam.md
+++ b/doc/print_settings/quality/quality_settings_seam.md
@@ -2,12 +2,13 @@
Unless printed in spiral vase mode, every layer needs to begin somewhere and end somewhere. That start and end of the extrusion is what results in what visually looks like a seam on the perimeters. This section contains options to control the visual appearance of a seam.
-- **Seam Position**: Controls the placement of the seam.
+- **Seam Position**: Controls the placement of the seam.
+
1. **Aligned**: Will attempt to align the seam to a hidden internal facet of the model.
2. **Nearest**: Will place the seam at the nearest starting point compared to where the nozzle stopped printing in the previous layer.
3. **Back**: Will align the seam in a (mostly) straight line at the rear of the model.
4. **Random**: Will randomize the placement of the seam between layers.
-
+
Typically, aligned or back work the best, especially in combination with seam painting. However, as seams create weak points and slight surface "bulges" or "divots," random seam placement may be optimal for parts that need higher strength as that weak point is spread to different locations between layers (e.g., a pin meant to fit through a hole).
- **Staggered Inner Seams**: As the seam location forms a weak point in the print (it's a discontinuity in the extrusion process after all!), staggering the seam on the internal perimeters can help reduce stress points. This setting moves the start of the internal wall's seam around across layers as well as away from the external perimeter seam. This way, the internal and external seams don't all align at the same point and between them across layers, distributing those weak points further away from the seam location, hence making the part stronger. It can also help improve the water tightness of your model.
@@ -27,12 +28,14 @@ Unless printed in spiral vase mode, every layer needs to begin somewhere and end
This is useful when printing with Outer/Inner or Inner/Outer/Inner wall print order, as in these modes, it is more likely an external perimeter is printed immediately after a de-retraction move, which would cause slight extrusion variance at the start of a seam.
## Tips:
+
With seams being inevitable when 3D printing using FFF, there are two distinct approaches on how to deal with them:
1. **Try and hide the seam as much as possible**: This can be done by enabling scarf seam, which works very well, especially with simple models with limited overhang regions.
2. **Try and make the seam as "clean" and "distinct" as possible**: This can be done by tuning the seam gap and enabling role-based wipe speed, wipe on loops, and wipe before the external loop.
## Troubleshooting Seam Performance:
+
The section below will focus on troubleshooting traditional seams. For scarf seam troubleshooting, refer to the guide linked above.
There are several factors that influence how clean the seam of your model is, with the biggest one being extrusion control after a travel move. As a seam defines the start and end of an extrusion, it is critical that:
@@ -44,8 +47,8 @@ However, due to mechanical and material tolerances, as well as the very nature o

-
### Troubleshooting the Start of a Seam:
+
Imagine the scenario where the toolhead finishes printing a layer line on one side of the bed, retracts, travels the whole distance of the bed to de-retract, and starts printing another part. Compare this to the scenario where the toolhead finishes printing an internal perimeter and only travels a few mm to start printing an external perimeter, without even retracting or de-retracting.
The first scenario has much more opportunity for the filament to ooze outside the nozzle, resulting in a small blob forming at the start of the seam or, conversely, if too much material has leaked, a gap/under extrusion at the start of the seam.
@@ -65,6 +68,7 @@ So this is a trade-off between print speed and print quality. From experimental
In addition, larger nozzle diameters allow for more opportunity for material to leak compared to smaller diameter nozzles. A 0.2/0.25 mm nozzle will have significantly better seam performance than a 0.4, and that will have much better performance than a 0.6mm nozzle and so forth.
### Troubleshooting the End of a Seam:
+
The end of a seam is much easier to get right, as the extrusion system is already at a pressure equilibrium while printing. It just needs to stop extruding at the right time and consistently.
**If you are getting bulges at the seam**, the extruder is not stopping at the right time. The first thing to tune would be **pressure advance** – too low of a PA will result in the nozzle still being pressurized when finishing the print move, hence leaving a wider line at the end as it stops printing.
@@ -76,6 +80,7 @@ Furthermore, the printer mechanics have tolerances – the print head may be req
Finally, the techniques of **wiping can help improve the visual continuity and consistency of a seam** (please note, these settings do not make the seam less visible, but rather make them more consistent!). Wiping on loops with a consistent speed helps tuck in the end of the seam, hiding the effects of retraction from view.
### The Role of Wall Ordering in Seam Appearance:
+
The order of wall printing plays a significant role in the appearance of a seam. **Starting to print the external perimeter first after a long travel move will always result in more visible artifacts compared to printing the internal perimeters first and traveling just a few mm to print the external perimeter.**
-For optimal seam performance, printing with **inner-outer-inner wall order is typically best, followed by inner-outer**. It reduces the amount of traveling performed prior to printing the external perimeter and ensures the nozzle is having as consistent pressure as possible, compared to printing outer-inner.
+For optimal seam performance, printing with **inner-outer-inner wall order is typically best, followed by inner-outer**. It reduces the amount of traveling performed prior to printing the external perimeter and ensures the nozzle is having as consistent pressure as possible, compared to printing outer-inner.
\ No newline at end of file
diff --git a/doc/print_settings/speed/extrusion-rate-smoothing.md b/doc/print_settings/speed/extrusion-rate-smoothing.md
index 3407e45fdf..ded05250e7 100644
--- a/doc/print_settings/speed/extrusion-rate-smoothing.md
+++ b/doc/print_settings/speed/extrusion-rate-smoothing.md
@@ -1,31 +1,30 @@
-Extrusion rate smoothing
+# Extrusion rate smoothing
-Extrusion rate smoothing (ERS), also known as pressure equalizer in Prusa Slicer, aims to **limit the rate of extrusion volume change to be below a user set threshold (the ERS value).** It aims to assist the printer firmware internal motion planners, pressure advance in achieving the desired nozzle flow and reducing deviations against the ideal flow.
+Extrusion rate smoothing (ERS), also known as pressure equalizer in Prusa Slicer, aims to **limit the rate of extrusion volume change to be below a user set threshold (the ERS value).** It aims to assist the printer firmware internal motion planners, pressure advance in achieving the desired nozzle flow and reducing deviations against the ideal flow.
-This happens by reducing the stresses put on the extrusion system as well as reducing the absolute deviations from the ideal extrusion flow caused by pressure advance smooth time.
+This happens by reducing the stresses put on the extrusion system as well as reducing the absolute deviations from the ideal extrusion flow caused by pressure advance smooth time.
This feature is especially helpful when printing at high accelerations and large flow rates as the deviations are larger in these cases.

-Theory
+## Theory
-Enabling this feature creates a small **speed "ramp"** by slowing down and ramping up print speeds prior to and after the features causing a sudden change in extrusion flow rate needs, such as overhangs and overhang perimeters.
+Enabling this feature creates a small **speed "ramp"** by slowing down and ramping up print speeds prior to and after the features causing a sudden change in extrusion flow rate needs, such as overhangs and overhang perimeters.
This works by breaking down the printed line segments into smaller "chunks", proportional to the ERS segment length, and reduces the print speed of these segments so that the **requested extrusion volumetric flow rate change is less than or equal to the ERS threshold**.
-In summary, **it takes the "edge" off rapid extrusion changes caused by acceleration/deceleration as these are now spread over a longer distance and time.** Therefore, it can reduce wall artefacts that show when the print speeds change suddenly. These artefacts are occuring because the extruder and firmware cannot perfectly adhere to the requested by the slicer flow rates, especially when the extrusion rate is changing rapidly.
+In summary, **it takes the "edge" off rapid extrusion changes caused by acceleration/deceleration as these are now spread over a longer distance and time.** Therefore, it can reduce wall artefacts that show when the print speeds change suddenly. These artefacts are occuring because the extruder and firmware cannot perfectly adhere to the requested by the slicer flow rates, especially when the extrusion rate is changing rapidly.
**The example below shows the artefact that is mitigated by ERS.**

-The bulging visible above is due to the extruder not being able to respond fast enough against the required speed change when printing with high accelerations and high speeds and requested to slow down for an overhang.
+The bulging visible above is due to the extruder not being able to respond fast enough against the required speed change when printing with high accelerations and high speeds and requested to slow down for an overhang.
In the above scenario, the printer (Bambu Lab X1 Carbon) was requested to slow down from a 200mm/sec print speed to 40mm/sec at an acceleration of 5k/sec2. **The extruder could not keep up with the pressure change, resulting in a slight bump ahead at the point of speed change.**
This parameter interacts with the below printer kinematic settings and physical limits:
-
**1. The limits of the extruder system** - how fast can it change pressure in the nozzle
**2. The configured pressure advance values** - that also affect pressure changes in the nozzle
@@ -34,12 +33,11 @@ This parameter interacts with the below printer kinematic settings and physical
**4. The pressure advance smooth time (klipper)** - higher smooth time means higher deviation from ideal extrusion, hence more opportunity for this feature to be useful.
+Acceleration vs. Extrusion rate smoothing
A printer's motion system does
+not exactly follow the speed changes seen in the gcode preview screen of Orca
+slicer.
-Acceleration vs. Extrusion rate smoothing
-A printer's motion system does not exactly follow the speed changes seen in the gcode preview screen of Orca slicer.
-
-
-When a speed change is requested, the firmware look ahead planner calculates the slow down needed to achieve the target speed. The rate of slowdown is limited by the move's acceleration value.
+When a speed change is requested, the firmware look ahead planner calculates the slow down needed to achieve the target speed. The rate of slowdown is limited by the move's acceleration value.
**Lets consider an example.** Assume printing an overhang wall with **2k external wall acceleration**, were the printer is called to slow down from **200mm/sec to 40mm/sec**.
@@ -59,7 +57,7 @@ A printer printing at 200mm/sec with a 0.42 line width and 0.16 layer height wou
When the printer is extruding at 40mm/sec with the same line width and layer height as above, the flow rate is 2.43mm3/sec.
-So what we are asking the extruder to do in this example is **slow down from 12.16mm3/sec flow to 2.43mm3/sec flow in 0.08 seconds** or an extrusion change rate of 121mm3/sec2.
+So what we are asking the extruder to do in this example is **slow down from 12.16mm3/sec flow to 2.43mm3/sec flow in 0.08 seconds** or an extrusion change rate of 121mm3/sec2.
**This value is proportional to the acceleration of the printer. At 4k this value doubles, at 1k it is half and is independent of the speed of movement or starting and ending speeds.**
@@ -69,7 +67,7 @@ So, continuing with the worked example, a 2k acceleration produces an extrusion
**Therefore, the acceleration values act as a meaningfull upper limit to this setting.** An indicative set of values has been provided later in this page.
-Pressure advance vs extrusion rate smoothing
+### Pressure advance vs extrusion rate smoothing
Then we need to consider pressure advance and smooth time as factors that influence extrusion rate.
@@ -83,7 +81,7 @@ When Pressure Advance adjusts the extruder speed to compensate for the pressure
2. Increased wear on the extruder gear and filament,
3. Visible artifacts on the print surface due to non-uniform extrusion.
-The smooth time setting introduces a controlled delay over which the Pressure Advance adjustments are spread out. This results in a more gradual application or reduction of extrusion pressure, leading to smoother transitions in filament flow.
+The smooth time setting introduces a controlled delay over which the Pressure Advance adjustments are spread out. This results in a more gradual application or reduction of extrusion pressure, leading to smoother transitions in filament flow.
The trade-off is extrusion accuracy. There is a deviation between the requested extrusion amount and the actual extrusion amount due to this smoothing.
@@ -91,31 +89,34 @@ The trade-off is extrusion accuracy. There is a deviation between the requested
**2. Decreasing Smooth Time:** Makes the Pressure Advance adjustments more immediate, which can improve the responsiveness of pressure compensation but may also reintroduce abrupt changes in flow rate, potentially leading to the issues mentioned above.
-In essence, p**ressure advance smooth time creates an intentional deviation from the ideal extruder rotation** and, therefore, extrusion amount, to allow the printer's extruder to perform within its mechanical limits. Typically, this value is set to 0.04sec, which means that when Pressure Advance adjusts the extruder's flow rate to compensate for changes in pressure within the hot end, these adjustments are spread out over a period of 0.04 seconds.
+In essence, p**ressure advance smooth time creates an intentional deviation from the ideal extruder rotation** and, therefore, extrusion amount, to allow the printer's extruder to perform within its mechanical limits. Typically, this value is set to 0.04sec, which means that when Pressure Advance adjusts the extruder's flow rate to compensate for changes in pressure within the hot end, these adjustments are spread out over a period of 0.04 seconds.
There is a great example of pressure advance smooth time induced deviations [here](https://klipper.discourse.group/t/pressure-advance-smooth-time-skews-pressure-advance/13451) that is worth a read to get more insight in this trade-off.
In the worked example above, **we need to set an Extrusion Rate smoothing value enough to decrease the error introduced by pressure advance smooth time against the produced output flow.** The lower the extrusion rate smoothing value, the lower the changes in flow over time hence the lower the absolute deviation from the ideal extrusion caused by the smooth time algorithm. However, going too low will result in a material decrease in overall print speed, as the print speed will be materially reduced to achieve low extrusion deviations between features, for no real benefit after a point.
-**The best way to find what the lower beneficial limit is through experimentation.** Print an object with sharp overhangs that are slowed down because off the overhang print speed settings and observe for extrusion inconsistencies.
+**The best way to find what the lower beneficial limit is through experimentation.** Print an object with sharp overhangs that are slowed down because off the overhang print speed settings and observe for extrusion inconsistencies.
Finding the ideal Extrusion Rate smoothing value
-**Firstly, this value needs to be lower than the extrusion rate changes resulting from the acceleration profile of the printer.** As, generally, the greatest impact is in external wall finish, use your external perimeter acceleration as a point of reference.
+**Firstly, this value needs to be lower than the extrusion rate changes resulting from the acceleration profile of the printer.** As, generally, the greatest impact is in external wall finish, use your external perimeter acceleration as a point of reference.
**Below are some approximate ERS values for 0.42 line width and 0.16 layer height.**
+
1. 30mm3/sec for 0.5k acceleration
2. 60.5mm3/sec for 1k acceleration
3. 121mm3/sec2 for 2k acceleration
4. 242mm3/sec2 for 4k acceleration
**Below are some approximate ERS values for 0.42 line width and 0.20 layer height.**
+
1. 38mm3/sec for 0.5k acceleration
2. 76mm3/sec for 1k acceleration
3. 150mm3/sec2 for 2k acceleration
4. 300mm3/sec2 for 4k acceleration
**Below are some approximate ERS values for 0.45 line width and 0.16 layer height.**
+
1. 32mm3/sec for 0.5k acceleration
2. 65mm3/sec for 1k acceleration
3. 129mm3/sec2 for 2k acceleration
@@ -124,6 +125,7 @@ In the worked example above, **we need to set an Extrusion Rate smoothing value
**So, your tuning starting point needs to be an ERS value that is less than this.** A good point experiment with test prints would be **a value of 60-80%** of the above maximum values. This will give some meaningful assistance to pressure advance, reducing the deviation introduced by pressure advance smooth time. The greater the smooth time, the greater the quality benefit will be.
Therefore, for a **0.42 line width and 0.16 layer height**, the below are a recommended set of starting ERS values
+
1. 18-25mm3/sec for 0.5k acceleration
2. 35-50mm3/sec for 1k acceleration
3. 70-100mm3/sec2 for 2k acceleration
@@ -133,49 +135,48 @@ If you are printing with a 0.2 layer height, you can increase these values by 25
**The second factor is your extruder's mechanical abilities.** Direct drive extruders with a good grip on the filament typically are more responsive to extrusion rate changes. Similarly with stiff filaments. So, a Bowden printer or when printing softer material like TPU or soft PLAs like polyterra there is more opportunity for the extruder to slip or deviate from the desired extrusion amount due to mechanical grip or material deformation or just delay in propagating the pressure changes (in a Bowden setup).
-**The final factor is the deviation introduced by pressure advance smooth time**, or equivalents in closed source firmware. The higher this value the larger the extrusion deviation from ideal. If you are using a direct drive extruder, reduce this value to 0.02 in your klipper firmware before tuning ERS, as a lower value results in lower deviations to mitigate. Then proceed to experimentaly tune ERS.
+**The final factor is the deviation introduced by pressure advance smooth time**, or equivalents in closed source firmware. The higher this value the larger the extrusion deviation from ideal. If you are using a direct drive extruder, reduce this value to 0.02 in your klipper firmware before tuning ERS, as a lower value results in lower deviations to mitigate. Then proceed to experimentaly tune ERS.
**So where does that leave us?**
-Perform a test print with the above ERS settings as a starting point and adjust to your liking! If you notice budging on sharp overhangs where speed changes, like the hull of the benchy, reduce this value by 10% and try again.
+Perform a test print with the above ERS settings as a starting point and adjust to your liking! If you notice budging on sharp overhangs where speed changes, like the hull of the benchy, reduce this value by 10% and try again.
If you're not noticing any artefacts, increase by 10%, but don’t go over the maximum values recommended above because then this feature would have no effect in your print.
-A note for Bowden printers using marlin without pressure advance.
-If your printer is not equipped with pressure advance and, especially, if you are using a Bowden setup, you don’t have the benefit of pressure advance dynamically adjusting your flow.
+## A note for Bowden printers using marlin without pressure advance.
+If your printer is not equipped with pressure advance and, especially, if you are using a Bowden setup, you don’t have the benefit of pressure advance dynamically adjusting your flow.
-In this special case, ERS will be doing all the heavy lifting that pressure advance would typically perform. In this scenario a low value of 8-10mm3/sec is usually recommended, irrespective of your acceleration settings, to smooth out pressure changes in the extrusion system as much as possible without impacting print speed too much.
+In this special case, ERS will be doing all the heavy lifting that pressure advance would typically perform. In this scenario a low value of 8-10mm3/sec is usually recommended, irrespective of your acceleration settings, to smooth out pressure changes in the extrusion system as much as possible without impacting print speed too much.
+
+## A note on ERS Segment length
-A note on ERS Segment length
Ideally you want this value set to 1 to allow for the largest number of steps between each speed transition. However, this may result in a too large of a gcode, with too many commands sent to your MCU per second and it may not be able to keep up. It will also slow down the Orca slicer front end as the sliced model is more complex to render.
-
-For Klipper printers, a segment length of 1 works OK as the RPI or similar have enough computational power to handle the gcode command volume.
+For Klipper printers, a segment length of 1 works OK as the RPI or similar have enough computational power to handle the gcode command volume.
Similarly, for a Bambu lab printer, a segment length of 1 works well. **However, if you do notice your printer stuttering or stalling** (which may be the case with the lower powered P1 series printers) **or getting "Timer too close" errors** in Klipper, **increase this value to 2 or 3**. This would reduce the effectiveness of the setting but will present a more manageable load to your printer.
-Limitations
+## Limitations
-**This feature can only work where speed changes are induced by the slicer** - for example when transitioning from fast to slow print moves when printing overhangs, bridges and from printing internal features to external features and vice versa.
+**This feature can only work where speed changes are induced by the slicer** - for example when transitioning from fast to slow print moves when printing overhangs, bridges and from printing internal features to external features and vice versa.
-However, it will not affect extruder behaviour when the printer is slowing down due to firmware commands - for example when turning around corners.
+However, it will not affect extruder behaviour when the printer is slowing down due to firmware commands - for example when turning around corners.
In this case, the printer slows down and then accelerates independently of what the slicer has requested. In this case, the slicer is commanding a consistent speed; however, the printer is adjusting this to operate within its printer kinematic limits (SCV/Jerk) and accelerations. As the slicer is not aware of this slow down, it cannot apply pre-emptive extrusion rate smoothing to the feature and instead, the changes are governed by the printer firmware exclusively.
-Credits
+## 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 Prusa Slicer 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)
+**Ported to Orca:** [@igiannakas](https://github.com/igiannakas).
-**Enhanced by:** [@noisyfox](https://github.com/Noisyfox), per object pressure equalization and fixing calculation logic bugs
+**Enhanced by:** [@noisyfox](https://github.com/Noisyfox), per object pressure equalization and fixing calculation logic bugs.
-**Wiki page:** [@igiannakas](https://github.com/igiannakas)
+**Wiki page:** [@igiannakas](https://github.com/igiannakas).
-**Overall Orca owner and assurance:** [@softfever](https://github.com/SoftFever)
-
-**Community testing and feedback:** [@HakunMatat4](https://github.com/HakunMatat4), [@psiberfunk](https://github.com/psiberfunk), [@u3dreal](https://github.com/u3dreal) and more
+**Overall Orca owner and assurance:** [@softfever](https://github.com/SoftFever).
+**Community testing and feedback:** [@HakunMatat4](https://github.com/HakunMatat4), [@psiberfunk](https://github.com/psiberfunk), [@u3dreal](https://github.com/u3dreal) and more.
\ No newline at end of file
diff --git a/doc/semm.md b/doc/semm.md
index 9bff668fc9..9081d3cb8f 100644
--- a/doc/semm.md
+++ b/doc/semm.md
@@ -1,11 +1,19 @@
# Single Extruder Multimaterial Printing in OrcaSlicer
## Introduction
+
In this guide, we will explain the parameters for single extruder multimaterial printing in OrcaSlicer. The whole process and parameters are same as PrusaSlicer as OrcaSlicer is based on PrusaSlicer.
OrcaSlicer has some additional features and minor differences though. We will explain them in this guide.
+
## Prime tower
-WIP...
+
+The prime tower is a structure that is printed before the actual print to ensure that the nozzle is primed with the correct filament. It helps to prevent oozing and stringing during the print. The prime tower can be customized in various ways, such as its size, shape, and position.
+
## Ramming
-WIP...
+
+Ramming is a technique used to push the filament through the nozzle to ensure that it is primed and ready for printing. It can be adjusted in terms of speed and distance to optimize the priming process.
+
## Manual filament change
+
+Manual filament change is a feature that allows the user to change the filament during the print. This can be useful for multi-material prints or when changing colors. The user can specify the position and timing of the filament change, as well as the speed and distance of the ramming process.
WIP...
\ No newline at end of file
diff --git a/doc/stl-transformation.md b/doc/stl-transformation.md
index 58a7009c41..18884c5020 100644
--- a/doc/stl-transformation.md
+++ b/doc/stl-transformation.md
@@ -9,20 +9,21 @@ In contrast, using STEP files offers a higher-quality mesh that more accurately
## Importing STEP files
-This setting determines how STEP files are converted into STL files and is displayed during the STEP file import process.
+This setting determines how STEP files are converted into STL files and is displayed during the STEP file import process.
+
If you don't see this when opening a STEP file, check [Don't show again](#Don't-show-again) below.

### Parameters:
-The transformation uses [Linear Deflection and Angular Deflection](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html) parameters to control the mesh quality.
+The transformation uses [Linear Deflection and Angular Deflection](https://dev.opencascade.org/doc/overview/html/occt_user_guides__mesh.html) parameters to control the mesh quality.
A finer mesh will result in a more accurate representation of the original surface, but it will also increase the file size and processing time.

- - **Linear Deflection**: Specifies the maximum distance allowed between the original surface and its polygonal approximation. Lower values produce a mesh that more accurately follows the original curvature.
- - **Angular Deflection**: Defines the maximum allowable angle difference between the actual surface and its tessellated counterpart. Smaller angular deflection values yield a more precise mesh.
+- **Linear Deflection**: Specifies the maximum distance allowed between the original surface and its polygonal approximation. Lower values produce a mesh that more accurately follows the original curvature.
+- **Angular Deflection**: Defines the maximum allowable angle difference between the actual surface and its tessellated counterpart. Smaller angular deflection values yield a more precise mesh.
#### Split compound and compsolid into multiple objects:
@@ -49,8 +50,7 @@ To access the Simplify Model option, right-click on the object to simplify in th
It is recommended to enable the "Show Wireframe" option when running a simplification process to visually inspect the outcome. However, be cautious: overly aggressive simplification may lead to noticeable detail loss, increased ringing, or other printing issues.
-
### You can Simplify your model using the following options:
- **Detail Level:** Control the level of detail in the simplified model by choosing from five preset options. This setting allows for a balance between mesh fidelity and performance.
-- **Decimate Ratio:** Adjust the ratio between the original model's polygon count and that of the simplified model. For instance, a decimate ratio of 0.5 will yield a model with approximately half the original number of polygons.
+- **Decimate Ratio:** Adjust the ratio between the original model's polygon count and that of the simplified model. For instance, a decimate ratio of 0.5 will yield a model with approximately half the original number of polygons.
\ No newline at end of file