diff --git a/.github/workflows/publish_docs_to_wiki.yml b/.github/workflows/publish_docs_to_wiki.yml deleted file mode 100644 index 06a0d8f772..0000000000 --- a/.github/workflows/publish_docs_to_wiki.yml +++ /dev/null @@ -1,46 +0,0 @@ -name: Publish docs to Wiki - -# Trigger this action only if there are changes pushed to the doc/** directory under the main branch -on: - push: - paths: - - doc/** # This includes all sub folders - branches: - - main # This can be changed to any branch of your preference - - workflow_dispatch: - inputs: - logLevel: - description: 'Log level' - required: true - default: 'warning' - -env: - USER_TOKEN: ${{ secrets.GH_WIKI_PAT }} # This is the repository secret personal access token - USER_NAME: ${{ vars.BOT_USER_NAME }} # Enter the username of your (bot) account - OWNER: ${{ github.event.repository.owner.name }} # This is the repository owner - REPOSITORY_NAME: ${{ github.event.repository.name }} # This is the repository name - -jobs: - publish_docs_to_wiki: - name: Publish docs to Wiki - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v5 - - # 1. Clone the current wiki master branch to a folder named `tmp_wiki` - - name: Pull content from wiki - run: | - git config --global user.name "$USER_NAME" - git config --global user.email "$USER_NAME"@users.noreply.github.com - git clone https://"$USER_TOKEN"@github.com/SoftFever/"$REPOSITORY_NAME".wiki.git tmp_wiki - # 4. Synchronize differences between `doc` & `tmp_wiki` - # 5. Push new Wiki content - - name: Push main repo content to wiki - run: | - rsync -av --delete doc/ tmp_wiki/ --exclude .git - cd tmp_wiki - git add . - git commit -m "Updated Wiki content" - git push origin master diff --git a/doc/Home.md b/doc/Home.md deleted file mode 100644 index 2adfdffd95..0000000000 --- a/doc/Home.md +++ /dev/null @@ -1,161 +0,0 @@ -# Welcome to the OrcaSlicer WIKI! - -OrcaSlicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki page aims to provide an detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer. - -- [Printer Settings](#printer-settings) -- [Material Settings](#material-settings) -- [Process Settings](#process-settings) - - [Quality Settings](#quality-settings) - - [Strength Settings](#strength-settings) - - [Speed Settings](#speed-settings) - - [Support Settings](#support-settings) - - [Multimaterial Settings](#multimaterial-settings) - - [Others Settings](#others-settings) -- [Prepare](#prepare) -- [Calibrations](#calibrations) -- [Developer Section](#developer-section) - -> [!WARNING] -> This wiki is community-maintained. -> Some pages may be **outdated** while others may be **newer** and present only in [nightly build](https://github.com/OrcaSlicer/OrcaSlicer/releases/tag/nightly-builds) or [latest release](https://github.com/OrcaSlicer/OrcaSlicer/releases). - -> [!NOTE] -> Please consider contributing to the wiki following the [How to contribute to the wiki](How-to-wiki) guide. - -## Printer Settings - -![printer-preset](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/printer-preset.png?raw=true) - -![printer](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/printer.svg?raw=true) Settings related to the 3D printer hardware and its configuration. - -- [Air filtration/Exhaust fan handling](air-filtration) -- [Auxiliary fan handling](Auxiliary-fan) -- [Chamber temperature control](chamber-temperature) -- [Adaptive Bed Mesh](adaptive-bed-mesh) -- [Using different bed types in Orca](bed-types) - -## Material Settings - -![filament-preset](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/filament-preset.png?raw=true) - -![filament](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/filament.svg?raw=true) Settings related to the 3D printing material. - -- [Single Extruder Multimaterial](semm) -- [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient) - -## Process Settings - -![process-preset](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/process-preset.png?raw=true) - -![process](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/process.svg?raw=true) Settings related to the 3D printing process. - -### Quality Settings - -![custom-gcode_quality](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/custom-gcode_quality.svg?raw=true) Settings related to print quality and aesthetics. -![process-quality](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/process/process-quality.png?raw=true) - -- ![param_layer_height](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_layer_height.svg?raw=true) [Layer Height Settings](quality_settings_layer_height) -- ![param_line_width](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_line_width.svg?raw=true) [Line Width Settings](quality_settings_line_width) -- ![param_seam](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_seam.svg?raw=true) [Seam Settings](quality_settings_seam) -- ![param_precision](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_precision.svg?raw=true) [Precision](quality_settings_precision) -- ![param_ironing](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_ironing.svg?raw=true) [Ironing](quality_settings_ironing) -- ![param_wall_generator](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_wall_generator.svg?raw=true) [Wall generator](quality_settings_wall_generator) -- ![param_wall_surface](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_wall_surface.svg?raw=true) [Walls and surfaces](quality_settings_wall_and_surfaces) -- ![param_bridge](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_bridge.svg?raw=true) [Bridging](quality_settings_bridging) -- ![param_overhang](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_overhang.svg?raw=true) [Overhangs](quality_settings_overhangs) - -### Strength Settings - -![custom-gcode_strength](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/custom-gcode_strength.svg?raw=true) Settings related to print strength and durability. -![process-strength](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/process/process-strength.png?raw=true) - -- ![param_wall](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_wall.svg?raw=true) [Walls](strength_settings_walls) -- ![param_shell](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_shell.svg?raw=true) [Top and Bottom Shells](strength_settings_top_bottom_shells) -- ![param_infill](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_infill.svg?raw=true) [Infill](strength_settings_infill) - - ![param_concentric](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_concentric.svg?raw=true) [Fill Patterns](strength_settings_patterns) - - ![param_gcode](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_gcode.svg?raw=true) [Template Metalanguage for infill rotation](strength_settings_infill_rotation_template_metalanguage) -- ![param_advanced](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced](strength_settings_advanced) - -### Speed Settings - -![custom-gcode_speed](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/custom-gcode_speed.svg?raw=true) Settings related to print speed and movement. -![process-speed](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/process/process-speed.png?raw=true) - -- ![param_speed_first](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_speed_first.svg?raw=true) [Initial Layer Speed](speed_settings_initial_layer_speed) -- ![param_speed](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_speed.svg?raw=true) [Other Layers Speed](speed_settings_other_layers_speed) -- ![param_overhang_speed](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_overhang_speed.svg?raw=true) [Overhang Speed](speed_settings_overhang_speed) -- ![param_travel_speed](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_travel_speed.svg?raw=true) [Travel Speed](speed_settings_travel) -- ![param_acceleration](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_acceleration.svg?raw=true) [Acceleration](speed_settings_acceleration) -- ![param_jerk](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_jerk.svg?raw=true) [Jerk (XY)](speed_settings_jerk_xy) -- ![param_advanced](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced / Extrusion rate smoothing](speed_settings_advanced) - -### Support Settings - -![custom-gcode_support](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/custom-gcode_support.svg?raw=true) Settings related to support structures and their properties. -![process-support](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/process/process-support.png?raw=true) - -- ![param_support](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_support.svg?raw=true) [Support](support_settings_support) -- ![param_raft](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_raft.svg?raw=true) [Raft](support_settings_raft) -- ![param_support_filament](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_support_filament.svg?raw=true) [Support Filament](support_settings_filament) -- ![param_ironing](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_ironing.svg?raw=true) [Support Ironing](support_settings_ironing) -- ![param_advanced](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced](support_settings_advanced) -- ![param_support_tree](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_support_tree.svg?raw=true) [Tree Supports](support_settings_tree) - -### Multimaterial Settings - -![custom-gcode_multi_material](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/custom-gcode_multi_material.svg?raw=true) Settings related to multimaterial printing. -![process-multimaterial](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/process/process-multimaterial.png?raw=true) - -- ![param_tower](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_tower.svg?raw=true) [Prime Tower](multimaterial_settings_prime_tower) -- ![param_filament_for_features](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_filament_for_features.svg?raw=true) [Filament for Features](multimaterial_settings_filament_for_features) -- ![param_ooze_prevention](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_ooze_prevention.svg?raw=true) [Ooze Prevention](multimaterial_settings_ooze_prevention) -- ![param_flush](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_flush.svg?raw=true) [Flush Options](multimaterial_settings_flush_options) -- ![param_advanced](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_advanced.svg?raw=true) [Advanced](multimaterial_settings_advanced) - -### Others Settings - -![custom-gcode_other](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/custom-gcode_other.svg?raw=true) Settings related to various other print settings. -![process-others](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/process/process-others.png?raw=true) - -- ![param_skirt](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_skirt.svg?raw=true) [Skirt](others_settings_skirt) -- ![param_adhension](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_adhension.svg?raw=true) [Brim](others_settings_brim) -- ![param_special](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_special.svg?raw=true) [Special Mode](others_settings_special_mode) -- ![fuzzy_skin](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/fuzzy_skin.svg?raw=true) [Fuzzy Skin](others_settings_fuzzy_skin) -- ![param_gcode](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_gcode.svg?raw=true) [G-Code Output](others_settings_g_code_output) -- ![param_gcode](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/param_gcode.svg?raw=true) [Post Processing Scripts](others_settings_post_processing_scripts) -- ![note](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/note.svg?raw=true) [Notes](others_settings_notes) - -## Prepare - -![tab_3d_active](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/tab_3d_active.svg?raw=true) First steps to prepare your model/s for printing. - -- [STL Transformation](stl-transformation) - -## Calibrations - -![tab_calibration_active](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/tab_calibration_active.svg?raw=true) The [Calibration Guide](Calibration) outlines Orca’s key calibration tests and their suggested order of execution. - -- [Temperature](temp-calib) -- [Volumetric Speed](volumetric-speed-calib) -- [Pressure Advance](pressure-advance-calib) - - [Adaptive Pressure Advance Guide](adaptive-pressure-advance-calib) -- [Flow Rate](flow-rate-calib) -- [Retraction](retraction-calib) -- [Tolerance](tolerance-calib) -- Advanced: - - [Cornering (Jerk & Junction Deviation)](cornering-calib) - - [Input Shaping](input-shaping-calib) - - [VFA](vfa-calib) - -## Developer Section - -![im_code](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/im_code.svg?raw=true) This is a documentation from someone exploring the code and is by no means complete or even completely accurate. Please edit the parts you might find inaccurate. This is probably going to be helpful nonetheless. - -- [How to build OrcaSlicer](How-to-build) -- [How to run tests](How-to-test) -- [Localization and translation guide](Localization_guide) -- [How to create profiles](How-to-create-profiles) -- [How to contribute to the wiki](How-to-wiki) -- [Preset, PresetBundle and PresetCollection](Preset-and-bundle) -- [Plater, Sidebar, Tab, ComboBox](plater-sidebar-tab-combobox) -- [Slicing Call Hierarchy](slicing-hierarchy) diff --git a/doc/calibration/Calibration.md b/doc/calibration/Calibration.md deleted file mode 100644 index e5e62da85f..0000000000 --- a/doc/calibration/Calibration.md +++ /dev/null @@ -1,65 +0,0 @@ -# Calibration Guide - -This guide offers a structured and comprehensive overview of the calibration process for OrcaSlicer. - -It covers key aspects such as flow rate, pressure advance, temperature towers, retraction tests, and advanced calibration techniques. Each section includes step-by-step instructions and visuals to help you better understand and carry out each calibration effectively. - -To access the calibration features, you can find them in the **Calibration** section of the OrcaSlicer interface. - -![calibration](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/calibration.png?raw=true) - -> [!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):** 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. - - temp-tower - -2. **[Max Volumetric Speed](volumetric-speed-calib):** 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 like under-extrusion. - - mvf_measurement_point - -3. **[Pressure Advance](pressure-advance-calib):** Calibrate the pressure advance settings to improve print quality and reduce artifacts caused by pressure fluctuations in the nozzle. - - - **[Adaptive Pressure Advance](adaptive-pressure-advance-calib):** This is an advanced calibration technique that can be used to further optimize the pressure advance settings for different print speeds and geometries. - - pa-tower - -4. **[Flow](flow-rate-calib):** 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. - - flowcalibration-example - -5. **[Retraction](retraction-calib):** Calibrate the retraction settings to minimize stringing and improve print quality. Doing this after Flow and Pressure Advance calibration is recommended, as it ensures that the printer is already set up for optimal extrusion. - - retraction_test_print - -6. **[Cornering](cornering-calib):** Calibrate the Jerk/Junction Deviation settings to improve print quality and reduce artifacts caused by sharp corners and changes in direction. - - jd_second_print_measure - -7. **[Input Shaping](input-shaping-calib):** 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. - - IS_damp_marlin_print_measure - -8. **[VFA](vfa-calib):** A VFA speed test is available to find resonance speeds. - - vfa_test_print - ---- - -**[Tolerance](tolerance-calib):** 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. - - OrcaToleranceTes_m6 - ---- - -_Credits:_ - -- _The Flow 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)._ diff --git a/doc/calibration/adaptive-pressure-advance-calib.md b/doc/calibration/adaptive-pressure-advance-calib.md deleted file mode 100644 index 25d4fe4f6d..0000000000 --- a/doc/calibration/adaptive-pressure-advance-calib.md +++ /dev/null @@ -1,221 +0,0 @@ -# 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). -![apa-material-config](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-material-config.png?raw=true) - -## 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. - -> [!IMPORTANT] -> Versions of Klipper older than July 11th, 2024 might in some cases produce artifacts when dynamic PA is used. -> This has been fixed in Klipper stable version 0.13.0 (20250411), or in developer versions starting [from July 11th, 2024](https://github.com/Klipper3d/klipper/commit/c84d78f3f169bc5163d11b74837f9880b0b7dba4). -> If you experience issues or print quality lower than expected you might want to ensure you have a Klipper firmware which contains the fix. - -> [!TIP] -> **Advanced users**: the fix to ensure optimal quality when dynamic PA is used does not require flashing the toolhead MCU or the printer MCU, but only an update of the host Python code. If you are using a commercial printer which does not offer straightforward MCU flashing (for example, Qidi printers), you might be able to manually patch the host code yourself. - -## 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. -![apa-expected-results](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-expected-results.jpg?raw=true) - -In addition, seams should appear smooth with no bulging or under extrusion. -![apa-expected-seam](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-expected-seam.jpg?raw=true) - -Solid infill should have no gaps, pinholes, or separation from the perimeters. -![apa-expected-solid-infill](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-expected-solid-infill.jpg?raw=true) - -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. -![apa-unexpected-solid-infill](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-unexpected-solid-infill.jpg?raw=true) - -## 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 | -|-------|--------------| -| 50 | 1k | -| 100 | 1k | -| 150 | 1k | -| 200 | 1k | -| 50 | 2k | -| 100 | 2k | -| 150 | 2k | -| 200 | 2k | -| 50 | 4k | -| 100 | 4k | -| 150 | 4k | -| 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: - -![apa-test](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-test.png?raw=true) - -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. - -![apa-test210](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-test210.png?raw=true) - -### 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). - -![pa-pattern-general](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-general.png?raw=true) - -#### 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: - -![pa-pattern-batch](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch.png?raw=true) - -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 OrcaSlicer. Once setup, your PA test should look like the below: - -![apa-setup-result-speed](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-setup-result-speed.png?raw=true) - -![apa-setup-result-acceleration-jerk](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-setup-result-acceleration-jerk.png?raw=true) - -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: - -| Speed | Flow | Acceleration | PA | Model values | -|-------|-------|--------------|-------|----------------------| -| 50 | 3.84 | 1000 | 0.036 | 0.036 , 3.84 , 1000 | -| 100 | 7.68 | 1000 | 0.036 | 0.036 , 7.68 , 1000 | -| 150 | 11.51 | 1000 | 0.036 | 0.036 , 11.51 , 1000 | -| 200 | 15.35 | 1000 | 0.036 | 0.036 , 15.35 , 1000 | -| | | | | | -| 50 | 3.84 | 2000 | 0.036 | 0.036 , 3.84 , 2000 | -| 100 | 7.68 | 2000 | 0.03 | 0.03 , 7.68 , 2000 | -| 150 | 11.51 | 2000 | 0.029 | 0.029 , 11.51 , 2000 | -| 200 | 15.35 | 2000 | 0.028 | 0.028 , 15.35 , 2000 | -| | | | | | -| 50 | 3.84 | 4000 | 0.032 | 0.032 , 3.84 , 4000 | -| 100 | 7.68 | 4000 | 0.028 | 0.028 , 7.68 , 4000 | -| 150 | 11.51 | 4000 | 0.026 | 0.026 , 11.51 , 4000 | -| 200 | 15.35 | 4000 | 0.024 | 0.024 , 15.35 , 4000 | - -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. - -![apa-profile](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-profile.png?raw=true) - -### 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** -![apa-identify-too-high](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-identify-too-high.jpg?raw=true) - -- **Too low PA** -![apa-identify-too-low](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-identify-too-low.jpg?raw=true) - -- **Optimal PA** -![apa-identify-optimal](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/apa-identify-optimal.jpg?raw=true) diff --git a/doc/calibration/cornering-calib.md b/doc/calibration/cornering-calib.md deleted file mode 100644 index 923672badc..0000000000 --- a/doc/calibration/cornering-calib.md +++ /dev/null @@ -1,133 +0,0 @@ -# Cornering - -Cornering is a critical aspect of 3D printing that affects print quality and accuracy. It's how the printer handles changes in direction during movement, particularly at corners and curves. Proper cornering settings can reduce artifacts such as ringing, ghosting, and overshooting, resulting in cleaner and more precise prints. - -## Types of Cornering Settings - -> [!TIP] -> Read more in [Jerk XY](speed_settings_jerk_xy) and check [Cornering Control Types](speed_settings_jerk_xy#cornering-control-types) - -## Calibration - -This test will be set detect automatically your printer firmware type and will adapt to the specific calibration process. - -- Klipper: [square_corner_velocity](https://www.klipper3d.org/Config_Reference.html#printer) -- Marlin 2: - - [Junction Deviation](https://marlinfw.org/docs/configuration/configuration.html#junction-deviation-) if `Maximum Junction Deviation` in Printer settings/Motion ability/Jerk limitations is bigger than `0`. - - [Classic Jerk](https://marlinfw.org/docs/configuration/configuration.html#jerk-) if `Maximum Junction Deviation` is set to `0`. -- Marlin Legacy: [Classic Jerk](https://marlinfw.org/docs/configuration/configuration.html#jerk-). -- RepRap: [Maximum instantaneous speed changes](https://docs.duet3d.com/User_manual/Reference/Gcodes#m566-set-allowable-instantaneous-speed-change) - -> [!NOTE] -> This calibration example uses Junction Deviation as an example. The process is similar for Jerk calibration; just read the Jerk values instead of JD values. -> JD values are between `0.0` and `0.3` (in mm) while Jerk values are usually between `1` and `20` or higher (in mm/s). - -1. Pre-requisites: - 1. If using Marlin 2 firmware, Check if your printer has Junction Deviation enabled. Look for `Junction deviation` in the printer's advanced settings. - 2. In OrcaSlicer, set: - 1. Acceleration high enough to trigger ringing or the speed you want to check out (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 ringing more visible. -2. Open the Cornering test. - ![jd_first_menu](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_menu.png?raw=true) - 1. In this first approximation, set a wide range of Start and End values. - - If you don't see any loss of quality, increase the End value and retry. - - If you do see a loss of quality, measure the maximum height when the corners start losing sharpness and read the Cornering/Jerk/JunctionDeviation value set at that point in OrcaSlicer. - ![jd_first_print_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_print_measure.jpg?raw=true) - ![jd_first_slicer_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_first_slicer_measure.png?raw=true) - 2. Print a new calibration tower with a maximum set near the point where corners start losing sharpness. - **RECOMMENDED:** Use the *Ringing Tower* test model to more easily visualize the jerk limit. - 3. Print the second Cornering test with the new maximum value. - ![jd_second_menu](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_menu.png?raw=true) - 4. Measure the maximum height when the corners start losing sharpness and read the Cornering/Jerk/JunctionDeviation value set at that point in OrcaSlicer. - ![jd_second_print_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_print_measure.jpg?raw=true) - ![jd_second_slicer_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_second_slicer_measure.png?raw=true) -3. Save the settings - - Into your OrcaSlicer printer profile (**RECOMMENDED**): - 1. Go to Printer settings → Motion ability → Jerk limitation: - 2. Set your maximum Jerk X and Y or Junction Deviation values. - ![jd_printer_jerk_limitation](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png?raw=true) - - Directly into your printer firmware: - - Restore your 3D Printer settings to avoid keeping high acceleration and jerk values used for the test. - - - Klipper: - - Skeleton - - ```gcode - SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=#SquareCornerVelocity - ``` - - Example: - - ```gcode - SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=5.0 - ``` - - Note: You can also set `square_corner_velocity` persistently in your `printer.cfg` (restart required). - - - Marlin 2 (Junction Deviation enabled): - - Skeleton - - ```gcode - M205 J#JunctionDeviationValue - M500 - ``` - - Example: - - ```gcode - M205 J0.012 - M500 - ``` - - - To make the change permanent in firmware, set in `Configuration.h` and recompile: - - ```cpp - #define JUNCTION_DEVIATION_MM 0.012 // (mm) Distance from real junction edge - ``` - - Also ensure classic jerk is disabled if using junction deviation: - - ```cpp - //#define CLASSIC_JERK - ``` - - - Marlin Classic Jerk / Marlin Legacy: - - Skeleton — set the per-axis jerk limits using `M205` (X/Y optional depending on firmware build): - - ```gcode - M205 X#JerkX Y#JerkY - M500 - ``` - - Example: - - ```gcode - M205 X10 Y10 - M500 - ``` - - - RepRap (Duet / RepRapFirmware): - **IMPORTANT:** Set in mm/min so convert from mm/s to mm/min multiply by 60. - - Skeleton - - ```gcode - M566 X#max_instantaneous_change Y#max_instantaneous_change - M500 ; if supported by your board - ``` - - Example (Duet-style): - - ```gcode - M566 X3000 Y3000 - ``` - -> [!NOTE] -> RepRapFirmware exposes `M566` to set allowable instantaneous speed changes; some boards may persist settings with `M500` or via their web/config files. - -## Credits - -- **Junction Deviation Machine Limit** [@RF47](https://github.com/RF47) -- **Cornering Calibration** [@IanAlexis](https://github.com/IanAlexis) -- **Fast tower model** [@RF47](https://github.com/RF47) -- **SCV-V2 model** [@chrisheib](https://www.thingiverse.com/chrisheib) diff --git a/doc/calibration/flow-rate-calib.md b/doc/calibration/flow-rate-calib.md deleted file mode 100644 index 246d4bb90d..0000000000 --- a/doc/calibration/flow-rate-calib.md +++ /dev/null @@ -1,80 +0,0 @@ - -# Flow Rate Calibration - -Flow ratio determines how much filament is extruded and is crucial for high-quality prints. -A properly calibrated flow ratio ensures consistent layer adhesion and accurate dimensions. - -- Too **low** flow ratio causes under-extrusion, which leads to gaps, weak layers, and poor structural integrity. -- Too **high** flow ratio causes over-extrusion, resulting in excess material, rough surfaces, and dimensional inaccuracies. - -- [Calibration Types](#calibration-types) - - [OrcaSlicer \> 2.3.0 Archimedean chords + YOLO (Recommended)](#orcaslicer--230-archimedean-chords--yolo-recommended) - - [OrcaSlicer \<= 2.3.0 Monotonic Line + 2-Pass Calibration](#orcaslicer--230-monotonic-line--2-pass-calibration) -- [Credits](#credits) - -> [!WARNING] -> **BambuLab Printers:** Make sure you do **not** select the 'Flow calibration' option. -> ![flowrate-Bambulab-uncheck](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png?raw=true) - -> [!NOTE] -> After v2.3.0, the [Top Pattern](strength_settings_top_bottom_shells#surface-pattern) changed to [Archimedean chords](strength_settings_patterns#archimedean-chords) from [Monotonic Line](strength_settings_patterns#monotonic-line). - -## Calibration Types - -- **YOLO:** A simplified method that adjusts the flow rate in a single pass using the formula `OldFlowRatio ± modifier`. - - **Recommended:** calibration range `[-0.05, +0.05]`, flow rate step `0.01`. - - **Perfectionist:** calibration range `[-0.04, +0.035]`, flow rate step `0.005`. -- **2-Pass Calibration:** the legacy method, using two passes to determine the optimal flow rate with the formula `OldFlowRatio * (100 + modifier) / 100`. - -### OrcaSlicer > 2.3.0 Archimedean chords + YOLO (Recommended) - -This method uses the [Archimedean Chords](strength_settings_patterns#archimedean-chords) pattern for flow rate calibration with the YOLO (Recommended) approach. - -1. Select the printer and the filament you want to calibrate. - This method is based on the filament's current flow ratio, so make sure you select the correct filament before proceeding. -2. In the `Calibration` menu, under the `Flow Rate` section, select `YOLO (Recommended)`. -3. A new project with eleven blocks will be created, each with a different flow rate modifier. Slice and print the project. - ![flowcalibration-yolo](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-yolo.gif?raw=true) -4. Examine the printed blocks and identify the one with the best surface quality. Look for: - 1. The smoothest top surface. - 2. No visible gaps between the pattern arcs. - 3. Minimal or no visible line between the Inner Spiral and the Outer Arcs. - ![flowcalibration-guide](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-guide.png?raw=true) - In this example, the block with a flow modifier of `+0.01` produced the best results, despite a visible line between the Inner Spiral and the Outer Arcs; reducing the flow further begins to show gaps between the lines. - ![flowcalibration-example](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration-example.png?raw=true) -5. Update the flow ratio in the filament settings using the equation: `OldFlowRatio ± modifier`. - If your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+0.01`, the new value would be: `0.98 + 0.01 = 0.99`. - **Remember** to save the filament profile. - ![flowcalibration_update_flowrate](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowcalibration_update_flowrate.png?raw=true) - -> [!NOTE] -> The new Archimedean chords pattern uses a specific print order that prints the inner spiral last so you can check for material accumulation on the contact line at the end. - -### OrcaSlicer <= 2.3.0 Monotonic Line + 2-Pass Calibration - -This example uses the Monotonic Line pattern with the 2-Pass Calibration approach. - -![flow-calibration-monotonic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flow-calibration-monotonic.gif?raw=true) - -1. Select the printer, filament, and process you want to use for the test. -2. In the `Calibration` menu, under the `Flow Rate` section, select `Pass 1`. -3. A new project with nine blocks will be created, each with a different flow rate modifier. Slice and print the project. -4. Examine the blocks and determine which one has the smoothest top surface. - ![flowrate-pass1-monotonic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg?raw=true) - ![flowrate-0-5-monotonic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg?raw=true) -5. Update the flow ratio in the filament settings using the equation: `OldFlowRatio * (100 + modifier) / 100`. - For example, if your previous flow ratio was `0.98` and you selected the block with a flow rate modifier of `+5`, the new value would be: `0.98 × (100 + 5) / 100 = 1.029`. - **Remember** to save the filament profile. -6. Perform the `Pass 2` calibration. This process is similar to `Pass 1`, but a new project with ten blocks will be generated. The flow rate modifiers for this project will range from `-9` to `0`. -7. Repeat steps 4 and 5. For example, if your previous flow ratio was `1.029` and you selected the block with a flow rate modifier of `-6`, the new value would be: `1.029 × (100 - 6) / 100 = 0.96726`. - **Remember** to save the filament profile. - ![flowrate-pass2-monotonic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg?raw=true) - ![flowrate-6-monotonic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg?raw=true) - ![flowcalibration_update_flowrate_monotonic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/monotonic-flow-rate/flowcalibration_update_flowrate_monotonic.png?raw=true) - -> [!TIP] -> @ItsDeidara has created an HTML tool to help with these calculations. Check it out if you find the equations confusing: [Orca-Slicer-Assistant](https://github.com/ItsDeidara/Orca-Slicer-Assistant). - -## Credits - -- **[Archimedean Chords Idea](https://makerworld.com/es/models/189543-improved-flow-ratio-calibration-v3#profileId-209504)**: [Jimcorner](https://makerworld.com/es/@jimcorner) diff --git a/doc/calibration/input-shaping-calib.md b/doc/calibration/input-shaping-calib.md deleted file mode 100644 index 651559d416..0000000000 --- a/doc/calibration/input-shaping-calib.md +++ /dev/null @@ -1,131 +0,0 @@ -# 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. - -> [!IMPORTANT] -> RepRap can only set one frequency for both X and Y axes so you will need to select a frequency that works well for both axes. - -- [Types](#types) - - [Default](#default) - - [Version Table](#version-table) -- [Calibration Steps](#calibration-steps) - - [Fixed-Time Motion](#fixed-time-motion) -- [Credits](#credits) - -## Types - -It is usually recommended to use MZV, EI (specially for Delta printers) or ZV as a simple and effective solution. -Not all Input Shaping types are available in all firmware and their performance may vary depending on the firmware implementation and the printer's mechanics. - -### Default - -When "Default" is selected, the firmware's default input shaper will be used. -Every firmware and even its version may have a different default type but usually are: - -- Klipper: MZV -- Marlin: ZV -- RepRap: - - Version >= 3.4: MZV - - Version < 3.4: DAA - - Version < 3.2: DAA (without damping option) - -### Version Table - -| Type | Name | [Klipper](https://www.klipper3d.org/Resonance_Compensation.html#technical-details) | [RepRap](https://docs.duet3d.com/User_manual/Reference/Gcodes#m593-configure-input-shaping) | [Marlin 2](https://marlinfw.org/docs/features/ft_motion.html#more-complexity-zv-input-shaper) | Marlin Legacy | -|---|---|---|---|---|---| -| MZV | Modified Zero Vibration | >=0.9.0 | >=3.4 | - | - | -| ZV | Zero Vibration | >=0.9.0 | = 3.5 | >2.1.2 | - | -| ZVD | Zero Vibration Derivative | >=0.9.0 | >=3.4 | - | - | -| ZVDD | Zero Vibration Double Derivative | - | >=3.4 | - | - | -| ZVDDD | Zero Vibration Triple Derivative | - | >=3.4 | - | - | -| EI | Extra Insensitive | >=0.9.0 | - | - | - | -| 2HUMP_EI / EI2 | Two-Hump Extra Insensitive | >=0.9.0 | >=3.4 | - | - | -| 3HUMP_EI / EI3 | Three-Hump Extra Insensitive | >=0.9.0 | >=3.4 | - | - | -| [FT_MOTION](https://marlinfw.org/docs/features/ft_motion.html#fixed-time-motion-by-ulendo) | Fixed-Time Motion | - | - | >2.1.3 | - | -| DAA | Damped Anti-Resonance | - | < 3.4 | - | - | - -## Calibration Steps - -0. Pre-requisites: - 1. Use an opaque, high-gloss filament to make the ringing more visible. - 2. In OrcaSlicer, set: - 1. Acceleration high enough to trigger ringing (e.g., 20000 mm/s²). - 2. Speed high enough to trigger ringing (e.g., 200 mm/s). - -> [!IMPORTANT] -> It's recommended to use the fastest [acceleration](speed_settings_acceleration), [speed](speed_settings_other_layers_speed) and [Jerk/Junction Deviation](speed_settings_jerk_xy) your printer can handle without losing steps. -> This test **will set the values to high values** limited by your printer's motion ability and the filament's max volumetric speed (avoid materials below 10 mm³/s). - -1. Select the Test Model ´Ringing Tower´ (Recommended) or ´Fast Tower´ (Reduced version useful for printers with high ringing). -2. Select the [Input Shaper Type](#types) you want to test. Each firmware has different types available and each type has different performance. -3. Select a range of frequencies to test. The Default 15hz to 110hz range is usually a good start. -4. Select your damping. Usually, a value between 0.1 and 0.2 is a good start but you can change it to 0 and your printer will use the firmware default value (if available). - ![IS_freq_menu](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_menu.png?raw=true) - 1. Measure the X and Y heights and read the frequency set at that point in OrcaSlicer. - ![IS_freq_marlin_print_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg?raw=true) - - Marlin: - ![IS_freq_marlin_slicer_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_marlin_slicer_measure.png?raw=true) - - Klipper: - ![IS_freq_klipper_slicer_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/InputShaping/IS_freq_klipper_slicer_measure.png?raw=true) - 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. -5. Print the Damping test setting your X and Y frequency to the value you found in the previous step. - ![IS_damp_menu](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_menu.png?raw=true) - 1. Measure the X and Y heights and read the damping set at that point in OrcaSlicer. - ![IS_damp_marlin_print_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg?raw=true) - - Marlin: - ![IS_damp_marlin_slicer_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_marlin_slicer_measure.png?raw=true) - - Klipper: - ![IS_damp_klipper_slicer_measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/InputShaping/IS_damp_klipper_slicer_measure.png?raw=true) - -6. **Restore your 3D Printer settings to avoid keep using high acceleration and jerk values.** -7. Save the settings - - Into your printer firmware settings save the values you found (Type, frequency/cies and damp) - - Save it into Orca's printer profile settings in Printer settings/ Machine G-code/ Machine start G-code using the following G-code: - - Klipper: - - Skeleton - ```gcode - SET_INPUT_SHAPER SHAPER_TYPE=TYPE SHAPER_FREQ_X=#Xfrequency DAMPING_RATIO_X=#XDamping SHAPER_FREQ_Y=#Yfrequency DAMPING_RATIO_Y=#YDamping - ``` - Example - ```gcode - SET_INPUT_SHAPER SHAPER_TYPE=MZV SHAPER_FREQ_X=37.25 DAMPING_RATIO_X=0.16 SHAPER_FREQ_Y=37.5 DAMPING_RATIO_Y=0.06 - ``` - - Marlin: - - Skeleton - ```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 - ``` - - RepRap: - - Skeleton for RepRap 3.3 and later - ```gcode - M593 P#Type F#frequency S#Damping - ``` - Example RepRap 3.4 and later - ```gcode - M593 P"ZVD" F37.25 S0.16 - ``` - - Skeleton for RepRap 3.2 and earlier - ```gcode - M593 F#frequency - ``` - Example Legacy (RepRap 3.2 and earlier) - ```gcode - M593 F37.25 - ``` - -### 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. - -## Credits - -- **Input Shaping Calibration:** [@IanAlexis](https://github.com/IanAlexis) and [@RF47](https://github.com/RF47) -- **Klipper testing:** [@ShaneDelmore](https://github.com/ShaneDelmore) diff --git a/doc/calibration/pressure-advance-calib.md b/doc/calibration/pressure-advance-calib.md deleted file mode 100644 index 3bea6c8e06..0000000000 --- a/doc/calibration/pressure-advance-calib.md +++ /dev/null @@ -1,89 +0,0 @@ -# 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. - -OrcaSlicer includes three approaches for calibrating the Pressure Advance value. Each method has its own advantages and disadvantages. It is important to note that each method has two versions: one for a direct-drive extruder and one for a Bowden extruder. Make sure to select the appropriate version for your test. - -> [!WARNING] -> **Marlin Printers:** Linear Advance must be enabled in firmware (M900). -> **Not all printers have it enabled by default.** - -> [!WARNING] -> **Bambulab Printers:** make sure you do not select the 'Flow calibration' option. -> ![flowrate-Bambulab-uncheck](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png?raw=true) - -- [Calibration](#calibration) - - [Tower method](#tower-method) - - [Pattern method](#pattern-method) - - [Line method](#line-method) - -## Calibration - -You can use different methods to calibrate the Pressure Advance value, each with its own advantages and disadvantages. - -The results from these methods should be saved to the material profile. -![pressure_advance_enable](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pressure_advance_enable.png?raw=true) - -> [!TIP] -> Consider using the [Adaptive Pressure Advance](adaptive-pressure-advance-calib) method for more accurate results. -> Especially for high-speed printers. - -### 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. - -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. In this example a height of 8 mm was selected, so the Pressure Advance value should be calculated as `PressureAdvanceStart + (PressureAdvanceStep x measured)`; example: `0 + (0.002 x 8) = 0.016`. - ![pa-tower](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-tower.jpg?raw=true) - ![pa-tower-measure](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-tower-measure.jpg?raw=true) - -> [!TIP] -> @ItsDeidara has made an HTML tool to help with the calculation. Check it out if those equations give you a headache [here](https://github.com/ItsDeidara/Orca-Slicer-Assistant). - -### 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 OrcaSlicer differences to note. - -The test configuration window allows the user to generate one or more tests in a single project. Multiple tests will be placed on the plate with extra plates added if needed. - -1. Single test \ - ![pa-pattern-single](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-single.png?raw=true) -2. Batch mode testing (multiple tests on a single plate) \ - ![pa-pattern-batch](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch.png?raw=true) - -Once a test is generated, one or more small rectangular prisms will be placed on the plate, one for each test case. The prism 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. The rectangular prism provides 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:** - -![pa-pattern-batch-plater](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch-plater.png?raw=true) - -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 object's name. Test parameters may be adjusted for each prism individually via the object list pane: - -![pa-pattern-batch-objects](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-pattern-batch-objects.png?raw=true) - -Next, Ellis' generator provided the ability to adjust specific printer, filament, and print profile settings. You can make these same changes in OrcaSlicer by adjusting the settings in the Prepare pane as you would with any other print. When you initiate the calibration test, Ellis' default settings are applied. A few things to note about these settings: - -1. Ellis specified line widths as a percent of filament diameter. The Orca pattern method does the same to provide its suggested defaults, making use of Ellis' percentages in combination with your specified nozzle diameter. -2. In terms of line width, the pattern only makes use of the `Default` and `First layer` widths. -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 because 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 not processed through the usual channels that would enable Orca to recognize it as infill. - -### Line method - -The line method is quick and straightforward to test. However, its accuracy depends heavily on the quality of your first layer. It is suggested to turn on 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. Choose the value corresponding to the most even line and update your Pressure Advance value in the filament settings. -3. In this test, a Pressure Advance value of `0.016` appears to be optimal. - - ![pa-line](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-line.gif?raw=true) - - ![pa-lines](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-lines.png?raw=true) - - ![pa-line-0-016](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/pa/pa-line-0-016.png?raw=true) diff --git a/doc/calibration/retraction-calib.md b/doc/calibration/retraction-calib.md deleted file mode 100644 index a36b6a6fc1..0000000000 --- a/doc/calibration/retraction-calib.md +++ /dev/null @@ -1,20 +0,0 @@ -# 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. - -![retraction_test](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/retraction/retraction_test.gif?raw=true) - -![retraction_test_menu](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/retraction/retraction_test_menu.png?raw=true) - -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. - -![retraction_test_print](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/retraction/retraction_test_print.jpg?raw=true) - -> [!NOTE] -> When testing filaments such as PLA or ABS that have minimal oozing, the retraction settings can be highly effective. You may find that the retraction tower appears clean right from the start. In such situations, setting the retraction length to 0.2mm - 0.4mm using OrcaSlicer should suffice. -> On the other hand, if there is still a lot of stringing at the top of the tower, it is recommended to dry your filament and ensure that your nozzle is properly installed without any leaks. - -> [!TIP] -> @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). diff --git a/doc/calibration/temp-calib.md b/doc/calibration/temp-calib.md deleted file mode 100644 index 7c7f57bf17..0000000000 --- a/doc/calibration/temp-calib.md +++ /dev/null @@ -1,69 +0,0 @@ -# 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. - -- [Standard Temperature Ranges](#standard-temperature-ranges) -- [Nozzle Temp tower](#nozzle-temp-tower) -- [Bed Temperature](#bed-temperature) -- [Chamber Temperature](#chamber-temperature) - -## Standard Temperature Ranges - -| Material | [Nozzle Temp (°C)](#nozzle-temp-tower) | [Bed Temp (°C)](#bed-temperature) | [Chamber Temp (°C)](#chamber-temperature) | -|:------------:|:--------------------------------------:|:---------------------------------:|:-----------------------------------------:| -| PLA | 180-220 | 50-60 | Ambient | -| ABS | 230-250 | 90-100 | 50-70 | -| ASA | 240-260 | 90-100 | 50-70 | -| Nylon 6 | 230-260 | 90-110 | 70-100 | -| Nylon 12 | 225-260 | 90-110 | 70-100 | -| TPU | 220-245 | 40-60 | Ambient | -| PC | 270-310 | 100-120 | 80-100 | -| PC-ABS | 260-280 | 95-110 | 60-80 | -| HIPS | 220-250 | 90-110 | 50-70 | -| PP | 220-270 | 80-105 | 40-70 | -| Acetal (POM) | 210-240 | 100-130 | 70-100 | - -## 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_test](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Temp-calib/temp-tower_test.gif?raw=true) - -![temp-tower_test_menu](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Temp-calib/temp-tower_test_menu.png?raw=true) - -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. - -![temp-tower](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Temp-calib/temp-tower.jpg?raw=true) - -> [!NOTE] -> If a range of temperatures looks good, you may want to use the middle of that range as the optimal temperature. -> But if you are planning to print at higher [speeds](speed_settings_other_layers_speed)/[flow rates](volumetric-speed-calib), you may want to use the higher end of that range as the optimal temperature. - -## Bed Temperature - -Bed temperature plays a crucial role in ensuring proper filament adhesion to the build surface, which directly impacts both print success and quality. -Most materials have a relatively broad optimal range for bed temperature (typically +/-5°C). -In general, following the manufacturer’s recommendations, maintaining a clean bed (free from oils or fingerprints), ensuring a stable [chamber temperature](#chamber-temperature), and having a properly leveled bed will produce reliable results. - -- If the bed temperature is too low, the filament may fail to adhere properly, leading to warping, weak layer bonding, or complete detachment. In severe cases, the printed part may dislodge entirely and stick to the nozzle or other printer components, potentially causing mechanical damage. -- If the bed temperature is too high, the lower layers can overheat and soften excessively, resulting in deformation such as [elephant foot](quality_settings_precision#elephant-foot-compensation). - -> [!TIP] -> As a general guideline, you can use the [glass transition temperature](https://en.wikipedia.org/wiki/Glass_transition) (Tg) of the material and subtract 5–10 °C to estimate a safe upper limit for bed temperature. -> See [this article](https://magigoo.com/blog/prevent-warping-temperature-and-first-layer-adhesion-magigoo/) for a detailed explanation. - -> [!NOTE] -> For challenging prints involving materials with **high shrinkage** (e.g., nylons or polycarbonate) or geometries prone to warping, dialed-in settings are critical. -> In these cases, [chamber temperature](#chamber-temperature) becomes a **major factor** in preventing detachment and ensuring print success. - -## 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 filament's deformation temperature. - -See: [Chamber temperature printer settings](Chamber-temperature) - -> [!IMPORTANT] -> Low temperature Filaments like PLA can clog the nozzle if the chamber temperature is too high. diff --git a/doc/calibration/tolerance-calib.md b/doc/calibration/tolerance-calib.md deleted file mode 100644 index 79b538a7a4..0000000000 --- a/doc/calibration/tolerance-calib.md +++ /dev/null @@ -1,37 +0,0 @@ -# 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, OrcaSlicer provides: - -- Filament Compensation: - - - Shrinkage (XY) - - ![FilamentShrinkageCompensation](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Tolerance/FilamentShrinkageCompensation.png?raw=true) - -- Process Compensation: - - - X-Y hole compensation - - X-Y contour compensation - - Precise wall - - Precise Z height - - ![QualityPrecision](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Tolerance/QualityPrecision.png?raw=true) - -## Handy Models - -OrcaSlicer includes several handy models to help you test and calibrate your printer. -Right-click on your plate in Prepare mode and select "Add Handy Model" to access these models. -![handy-models-list](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Handy-Models/handy-models-list.png?raw=true) - -### 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. - -![tolerance_hole](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Tolerance/tolerance_hole.svg?raw=true) - -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. - -![OrcaToleranceTes_m6](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Tolerance/OrcaToleranceTes_m6.jpg?raw=true) -![OrcaToleranceTest_print](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Tolerance/OrcaToleranceTest_print.jpg?raw=true) diff --git a/doc/calibration/vfa-calib.md b/doc/calibration/vfa-calib.md deleted file mode 100644 index e646175c49..0000000000 --- a/doc/calibration/vfa-calib.md +++ /dev/null @@ -1,22 +0,0 @@ -# VFA - -Vertical Fine Artifacts (VFA) are small surface imperfections that appear on vertical walls, especially near sharp corners or sudden directional changes. These artifacts are typically caused by mechanical vibrations, motor resonance, or rapid directional shifts that impact print quality. - -- **Mechanical adjustments**, such as tuning or replacing motors, belts, or pulleys. -- **MMR (Motor Resonance Rippling)** is a common subtype of VFA caused by stepper motors vibrating at resonant frequencies, leading to periodic ripples on the surface. -- **[Jerk/Junction Deviation](cornering-calib)** settings can also contribute to VFA, as they control how the printer handles rapid changes in direction. -- **[Input Shaping](input-shaping-calib)** can help mitigate VFA by reducing vibrations during printing. - -## VFA Test - -The VFA Speed Test in OrcaSlicer helps identify which print speeds trigger MRR artifacts. It prints a vertical tower with walls at various angles while progressively increasing the print speed. - -![vfa_test_menu](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/vfa/vfa_test_menu.png?raw=true) - -![vfa_test_print](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/vfa/vfa_test_print.jpg?raw=true) - -After printing, inspect the tower for MRR artifacts. Look for speeds where the surface becomes visibly smoother or rougher. This allows you to pinpoint problematic speed ranges. - -You can then configure the **Resonance Avoidance Speed Range** in the printer profile to skip speeds that cause visible artifacts. - -![vfa_resonance_avoidance](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/vfa/vfa_resonance_avoidance.png?raw=true) diff --git a/doc/calibration/volumetric-speed-calib.md b/doc/calibration/volumetric-speed-calib.md deleted file mode 100644 index fd6a9e942f..0000000000 --- a/doc/calibration/volumetric-speed-calib.md +++ /dev/null @@ -1,49 +0,0 @@ -# Max Volumetric Speed (FlowRate) Calibration - -Each material profile includes a **maximum volumetric speed** setting, which limits your [print speed](speed_settings_other_layers_speed) to prevent issues like nozzle clogs, under-extrusion, or poor layer adhesion. - -This value varies depending on your **material**, **machine**, **nozzle diameter**, and even your **extruder setup**, so it’s important to calibrate it for your specific printer and each filament you use. - -> [!NOTE] -> Even for the same material type (e.g., PLA), the **brand** and **color** can significantly affect the maximum flow rate. - -> [!TIP] -> If you're planning to increase speed or flow, it’s a good idea to **increase your nozzle temperature**, preferably toward the higher end of the recommended range for your filament. Use a [temperature tower calibration](temp-calib#nozzle-temp-tower) to find that range. - -## Calibration Overview - -You will be prompted to enter the settings for the test: start volumetric speed, end volumetric 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. - -> [!TIP] -> A **change in surface sheen** (glossy vs. matte) is often a visual cue of material degradation or poor layer adhesion. - -![mvf_measurement_point](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/MVF/mvf_measurement_point.jpg?raw=true) - -Use calipers or a ruler to measure the **height** of the model just before the defects begin. -![mvf_caliper_sample_mvf](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/MVF/mvf_caliper_sample_mvf.jpg?raw=true) - - Then you can: - -- Use the following formula - - ```math - Filament Max Volumetric Speed = start + (HeightMeasured * step) - ``` - - In this case (19mm), so the calculation would be: `5 + (19 * 0.5) = 14.5mm³/s` - -- Use 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 filament. -![mvf_gui_flow](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/MVF/mvf_gui_flow.png?raw=true) - -After you have determined the maximum volumetric speed, you can set it in the filament settings. This will ensure that the printer does not exceed the maximum flow rate for the filament. -![mvf_material_settings](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/MVF/mvf_material_settings.png?raw=true) - -> [!NOTE] -> This test is a best case scenario and doesn't take into account Retraction or other settings that can increase clogs or under-extrusion. -> You may want to reduce the flow by 10%-20% (or even further) to ensure print quality/strength. -> **Printing at high volumetric speed can lead to poor layer adhesion or even clogs in the nozzle.** - -> [!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). diff --git a/doc/developer-reference/Built-in-placeholders-variables.md b/doc/developer-reference/Built-in-placeholders-variables.md deleted file mode 100644 index 1fd3a93b61..0000000000 --- a/doc/developer-reference/Built-in-placeholders-variables.md +++ /dev/null @@ -1,96 +0,0 @@ -# Placeholders Variables - -This section describes the general built-in placeholders variables available for use in G-code scripts and configurations. - -- [Global Slicing State](#global-slicing-state) - - [Read Only](#read-only) - - [Read Write](#read-write) -- [Slicing State](#slicing-state) -- [Print Statistics](#print-statistics) -- [Objects Info](#objects-info) -- [Dimensions](#dimensions) -- [Temperatures](#temperatures) -- [Timestamps](#timestamps) -- [Presets](#presets) - -## Global Slicing State - -### Read Only - -- **zhop**: Contains Z-hop present at the beginning of the custom G-code block. - -### Read Write - -- **e_position[]**: Current position of the extruder axis. Only used with absolute extruder addressing. -- **e_restart_extra[]**: Currently planned extra extruder priming after de-retraction. -- **e_retracted[]**: Retraction state at the beginning of the custom G-code block. If the custom G-code moves the extruder axis, it should write to this variable so OrcaSlicer knows where it travels from when it gets control back. -- **position[]**: Current position of the extruder axis. Only used with absolute extruder addressing. - -## Slicing State - -- **current_extruder**: Zero-based index of currently used extruder. -- **current_object_idx**: Zero-based index of currently printed object. -- **has_wipe_tower**: Whether or not wipe tower is being generated in the print. -- **initial_extruder**: Zero-based index of the first extruder used in the print. Same as initial_tool. -- **initial_tool**: Zero-based index of the first extruder used in the print. Same as initial_extruder. -- **is_extruder_used**: Vector of booleans stating whether a given extruder is used in the print. -- **has_single_extruder_multi_material_priming**: Whether or not single extruder multi-material priming is used in the print. -- **initial_no_support_extruder**: Zero-based index of the first extruder used for printing without support. Same as initial_no_support_tool. -- **in_head_wrap_detect_zone**: Indicates if the first layer overlaps with the head wrap zone. - -## Print Statistics - -- **extruded_volume**: Total filament volume extruded per extruder during the entire print. -- **extruded_volume_total**: Total volume of filament used during the entire print. -- **extruded_weight**: Total filament weight extruded per extruder during the entire print. -- **extruded_weight_total**: Total weight of filament used during the entire print. -- **total_print_time**: Total time taken for the print. -- **total_layer_count**: Total number of layers in the print. - -## Objects Info - -- **num_objects**: Total number of objects in the print. -- **num_instances**: Total number of object instances in the print, summed over all objects. -- **scale[]**: Contains a string with the information about what scaling was applied to the individual objects. Indexing of the objects is zero-based (first object has index 0). -- **input_filename_base**: Source filename of the first object, without extension. -- **input_filename**: Full input filename of the first object. -- **plate_name**: Name of the plate sliced. - -## Dimensions - -- **first_layer_print_convex_hull**: Vector of points of the first layer convex hull. Each element has the following format: '[x, y]' (x and y are floating-point numbers in mm). -- **first_layer_print_min**: Bottom-left corner of first layer bounding box. -- **first_layer_print_max**: Top-right corner of first layer bounding box. -- **first_layer_print_size**: Size of the first layer bounding box. -- **print_bed_min**: Bottom-left corner of print bed bounding box. -- **print_bed_max**: Top-right corner of print bed bounding box. -- **print_bed_size**: Size of the print bed bounding box. -- **first_layer_center_no_wipe_tower**: First layer center without wipe tower. -- **first_layer_height**: Height of the first layer. - -## Temperatures - -- **bed_temperature**: Vector of bed temperatures for each extruder/filament. -- **bed_temperature_initial_layer**: Vector of initial layer bed temperatures for each extruder/filament. Provides the same value as first_layer_bed_temperature. -- **bed_temperature_initial_layer_single**: Initial layer bed temperature for the initial extruder. Same as bed_temperature_initial_layer[initial_extruder]. -- **chamber_temperature**: Vector of chamber temperatures for each extruder/filament. -- **overall_chamber_temperature**: Overall chamber temperature. This value is the maximum chamber temperature of any extruder/filament used. -- **first_layer_bed_temperature**: Vector of first layer bed temperatures for each extruder/filament. Provides the same value as bed_temperature_initial_layer. -- **first_layer_temperature**: Vector of first layer temperatures for each extruder/filament. - -## Timestamps - -- **timestamp**: String containing current time in yyyyMMdd-hhmmss format. -- **year**: Current year. -- **month**: Current month. -- **day**: Current day. -- **hour**: Current hour. -- **minute**: Current minute. -- **second**: Current second. - -## Presets - -Each preset's ([Print process settings](home#process-settings), [Filament/Material settings](home#material-settings), [Printer settings](home#printer-settings)) variables can be used in your G-code scripts and configurations. - -> [!TIP] -> To know the variable name you can hover your mouse over the variable in the UI. diff --git a/doc/developer-reference/How-to-build.md b/doc/developer-reference/How-to-build.md deleted file mode 100644 index bb06224de7..0000000000 --- a/doc/developer-reference/How-to-build.md +++ /dev/null @@ -1,359 +0,0 @@ -# How to Build - -This wiki page provides detailed instructions for building OrcaSlicer from source on different operating systems, including Windows, macOS, and Linux. -It includes tool requirements, setup commands, and build steps for each platform. - -Whether you're a contributor or just want a custom build, this guide will help you compile OrcaSlicer successfully. - -- [Windows 64-bit](#windows-64-bit) - - [Windows Tools Required](#windows-tools-required) - - [Windows Hardware Requirements](#windows-hardware-requirements) - - [Windows Instructions](#windows-instructions) -- [MacOS 64-bit](#macos-64-bit) - - [MacOS Tools Required](#macos-tools-required) - - [MacOS Instructions](#macos-instructions) - - [Debugging in Xcode](#debugging-in-xcode) -- [Linux](#linux) - - [Using Docker](#using-docker) - - [Docker Dependencies](#docker-dependencies) - - [Docker Instructions](#docker-instructions) - - [Troubleshooting](#troubleshooting) - - [Linux Build](#linux-build) - - [Dependencies](#dependencies) - - [Common dependencies across distributions](#common-dependencies-across-distributions) - - [Additional dependencies for specific distributions](#additional-dependencies-for-specific-distributions) - - [Linux Instructions](#linux-instructions) - - [Unit Testing](#unit-testing) -- [Portable User Configuration](#portable-user-configuration) - - [Example folder structure](#example-folder-structure) - -## Windows 64-bit - -How to building with Visual Studio on Windows 64-bit. - -### Windows Tools Required - -- [Visual Studio](https://visualstudio.microsoft.com/vs/) 2026, 2022 or Visual Studio 2019 - ```shell - winget install --id=Microsoft.VisualStudio.Community -e - ``` -- [CMake](https://cmake.org/) - ```shell - winget install --id=Kitware.CMake -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 -> ``` - -> [!IMPORTANT] -> Check your CMake version. Run `cmake --version` in your terminal and verify it returns a **4.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 like `C:\Program Files\CMake\bin` appears before others like `C:\Strawberry\c\bin`. - -![windows_variables_path](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/develop/windows_variables_path.png?raw=true) -![windows_variables_order](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/develop/windows_variables_order.png?raw=true) - -### Windows Hardware Requirements - -- Minimum 16 GB RAM -- Minimum 23 GB free disk space -- 64-bit CPU -- 64-bit Windows 10 or later - -### Windows Instructions - -1. Clone the repository: - - 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/OrcaSlicer/OrcaSlicer - ``` - 2. Run lfs to download tools on Windows: - ```shell - git lfs pull - ``` -2. Open the appropriate command prompt: - ```MD - x64 Native Tools Command Prompt for VS - ``` - 1. Navigate to correct drive (if needed), e.g.: - ```shell - N: - ``` - 2. Change directory to the cloned repository, e.g.: - ```shell - cd N:\Repos\OrcaSlicer - ``` - 3. Run the build script: - ```shell - build_release_vs.bat - ``` - -![vs_cmd](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/develop/vs_cmd.png?raw=true) - -> [!NOTE] -> The build process will take a long time depending on your system but even with high-end hardware it can take up to 40 minutes. - -> [!TIP] -> If you encounter issues, you can try to uninstall ZLIB from your Vcpkg library. - -1. If successful, you will find the Visual Studio solution file in: - ```shell - build\OrcaSlicer.sln - ``` -2. Open the solution in Visual Studio, set the build configuration to `Release` and run the `Local Windows Debugger`. - ![compile_vs_local_debugger](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/develop/compile_vs_local_debugger.png?raw=true) -3. Your resulting executable will be located in: - ```shell - \build\src\Release\orca-slicer.exe - ``` - -> [!NOTE] -> The first time you build a branch, it will take a long time. -> Changes to .cpp files are quickly compiled. -> Changes to .hpp files take longer, depending on what you change. -> If you switch back and forth between branches, it also takes a long time to rebuild, even if you haven't made any changes. - -> [!TIP] -> 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 - -How to building with Xcode on MacOS 64-bit. - -### MacOS Tools Required - -- Xcode -- CMake (version 3.31.x is mandatory) -- 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: - -1. Download CMake **3.31.10** 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. - -> [!IMPORTANT] -> If you've recently upgraded Xcode, be sure to open Xcode at least once and install the required macOS build support. - -### MacOS Instructions - -1. Clone the repository: - ```shell - git clone https://github.com/OrcaSlicer/OrcaSlicer - cd OrcaSlicer - ``` -2. Build the application: - ```shell - ./build_release_macos.sh - ``` -3. Open the application: - ```shell - open build/arm64/OrcaSlicer/OrcaSlicer.app - ``` - -### Debugging in Xcode - -To build and debug directly in Xcode: - -1. Open the Xcode project: - ```shell - open build/arm64/OrcaSlicer.xcodeproj - ``` -2. In the menu bar: - - **Product > Scheme > OrcaSlicer** - - **Product > Scheme > Edit Scheme...** - - Under **Run > Info**, set **Build Configuration** to `RelWithDebInfo` - - Under **Run > Options**, uncheck **Allow debugging when browsing versions** - - **Product > Run** - -## Linux - -Linux distributions are available in two formats: [using Docker](#using-docker) (recommended) or [building directly](#linux-build) on your system. - -### Using Docker - -How to build and run OrcaSlicer using Docker. - -#### Docker Dependencies - -- Docker -- Git - -#### Docker Instructions - -```shell -git clone https://github.com/OrcaSlicer/OrcaSlicer && cd OrcaSlicer && ./scripts/DockerBuild.sh && ./scripts/DockerRun.sh -``` - -### Troubleshooting - -The `scripts/DockerRun.sh` script includes several commented-out options that can help resolve common issues. Here's a breakdown of what they do: - -- `xhost +local:docker`: If you encounter an "Authorization required, but no authorization protocol specified" error, run this command in your terminal before executing `scripts/DockerRun.sh`. This grants Docker containers permission to interact with your X display server. -- `-h $HOSTNAME`: Forces the container's hostname to match your workstation's hostname. This can be useful in certain network configurations. -- `-v /tmp/.X11-unix:/tmp/.X11-unix`: Helps resolve problems with the X display by mounting the X11 Unix socket into the container. -- `--net=host`: Uses the host's network stack, which is beneficial for printer Wi-Fi connectivity and D-Bus communication. -- `--ipc host`: Addresses potential permission issues with X installations that prevent communication with shared memory sockets. -- `-u $USER`: Runs the container as your workstation's username, helping to maintain consistent file permissions. -- `-v $HOME:/home/$USER`: Mounts your home directory into the container, allowing you to easily load and save files. -- `-e DISPLAY=$DISPLAY`: Passes your X display number to the container, enabling the graphical interface. -- `--privileged=true`: Grants the container elevated privileges, which may be necessary for libGL and D-Bus functionalities. -- `-ti`: Attaches a TTY to the container, enabling command-line interaction with OrcaSlicer. -- `--rm`: Automatically removes the container once it exits, keeping your system clean. -- `orcaslicer $*`: Passes any additional parameters from the `scripts/DockerRun.sh` script directly to the OrcaSlicer executable within the container. - -By uncommenting and using these options as needed, you can often resolve issues related to display authorization, networking, and file permissions. - -### Linux Build - -How to build OrcaSlicer on Linux. - -#### Dependencies - -The build system supports multiple Linux distributions including Ubuntu/Debian and Arch Linux. All required dependencies will be installed automatically by the provided shell script where possible, however you may need to manually install some dependencies. - -> [!NOTE] -> Fedora and other distributions are not currently supported, but you can try building manually by installing the required dependencies listed below. - -##### Common dependencies across distributions - -- autoconf / automake -- cmake -- curl / libcurl4-openssl-dev -- dbus-devel / libdbus-1-dev -- eglexternalplatform-dev / eglexternalplatform-devel -- extra-cmake-modules -- file -- gettext -- git -- glew-devel / libglew-dev -- gstreamer-devel / libgstreamerd-3-dev -- gtk3-devel / libgtk-3-dev -- libmspack-dev / libmspack-devel -- libsecret-devel / libsecret-1-dev -- libspnav-dev / libspnav-devel -- libssl-dev / openssl-devel -- libtool -- libudev-dev -- mesa-libGLU-devel -- ninja-build -- texinfo -- webkit2gtk-devel / libwebkit2gtk-4.0-dev or libwebkit2gtk-4.1-dev -- wget - -##### Additional dependencies for specific distributions - -- **Ubuntu 22.x/23.x**: libfuse-dev, m4 -- **Arch Linux**: mesa, wayland-protocols - -#### Linux Instructions - -1. **Install system dependencies:** - ```shell - ./build_linux.sh -u - ``` - -2. **Build dependencies:** - ```shell - ./build_linux.sh -d - ``` - -3. **Build OrcaSlicer with tests:** - ```shell - ./build_linux.sh -st - ``` - -4. **Build AppImage (optional):** - ```shell - ./build_linux.sh -i - ``` - -5. **All-in-one build (recommended):** - ```shell - ./build_linux.sh -dsti - ``` - -**Additional build options:** - -- `-b`: Build in debug mode (mostly broken at runtime for a long time; avoid unless you want to be fixing failed assertions) -- `-c`: Force a clean build -- `-C`: Enable ANSI-colored compile output (GNU/Clang only) -- `-e`: Build RelWithDebInfo (release + symbols) -- `-j N`: Limit builds to N cores (useful for low-memory systems) -- `-1`: Limit builds to one core -- `-l`: Use Clang instead of GCC -- `-p`: Disable precompiled headers (boost ccache hit rate) -- `-r`: Skip RAM and disk checks (for low-memory systems) - -> [!NOTE] -> The build script automatically detects your Linux distribution and uses the appropriate package manager (apt, pacman) to install dependencies. - -> [!TIP] -> For first-time builds, use `./build_linux.sh -u` to install dependencies, then `./build_linux.sh -dsti` to build everything. - -> [!WARNING] -> If you encounter memory issues during compilation, use `-j 1` or `-1` to limit parallel compilation and `-r` to skip memory checks. - -#### Unit Testing - -See [How to Test](How-to-test) for more details. - ---- - -## Portable User Configuration - -If you want OrcaSlicer to use a custom user configuration folder (e.g., for a portable installation), you can simply place a folder named `data_dir` next to the OrcaSlicer executable. OrcaSlicer will automatically use this folder as its configuration directory. - -This allows for multiple self-contained installations with separate user data. - -> [!TIP] -> This feature is especially useful if you want to run OrcaSlicer from a USB stick or keep different profiles isolated. - -### Example folder structure - -```shell -OrcaSlicer.exe -data_dir/ -``` - -You don’t need to recompile or modify any settings — this works out of the box as long as `data_dir` exists in the same folder as the executable. diff --git a/doc/developer-reference/How-to-create-profiles.md b/doc/developer-reference/How-to-create-profiles.md deleted file mode 100644 index 2dad9da7fa..0000000000 --- a/doc/developer-reference/How-to-create-profiles.md +++ /dev/null @@ -1,434 +0,0 @@ -# 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` -4. Process (type `process`). Example: `0.10mm Standard @Orca 3D Fuse1 0.2.json` - -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` -- Filament profile: `Generic PLA @Orca 3D Fuse1@` -- Process profile: `0.20mm Standard @Orca 3D Fuse1 0.4` - -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`) -4. Filament profile: `filament_vendor_name` + `filament_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json` -5. Process profile: `layer_height` + `preset_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json` (`preset_name` typically includes "standard," "fine," "fast," "draft," etc.) - -## File Structure and Templates - -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 -``` - -> [!TIP] -> Use short vendor names in filenames to avoid excessive length. - -> [!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. - -Relationship diagram: - -```mermaid -graph TD; - OrcaFilamentLibrary-->Orca_3D_filament; - OrcaFilamentLibrary-->Vendor_A_filament; - OrcaFilamentLibrary-->Vendor_B_filament; -``` - -> [!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. - -1. The first step is to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. The file name should be `Generic PLA-GF @System.json`. Please note that we leave the `compatible_printers` field empty so that it is available for all printers. - -```json -{ - "type": "filament", - "filament_id": "GFL99", - "setting_id": "GFSA05", - "name": "Generic PLA-GF @System", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_type": ["PLA-GF"], - "filament_flow_ratio": [ - "0.96" - ], - "compatible_printers": [] -} -``` - -2. Register the profile in `resources\profiles\OrcaFilamentLibrary.json`: - -```json -{ - "name": "OrcaFilamentLibrary", - "version": "02.02.00.04", - "force_update": "0", - "description": "Orca Filament Library", - "filament_list": [ - // ... - { - "name": "Generic PLA-GF @System", - "sub_path": "filament/Generic PLA-GF @System.json" - } - ] -} -``` - -3. The last step is to validate the newly added filament profiles see [Validate Profiles](#validate-profiles). - -> [!NOTE] -> If the filament is compatible with AMS, ensure that the `filament_id` value **does not exceed 8 characters** to maintain AMS compatibility. - -> [!TIP] -> **Testing Profile Changes** -> -> When developing profiles, you may notice that changes aren't reflected in OrcaSlicer after editing profile files. This happens because OrcaSlicer caches profiles in the system folder. -> To force OrcaSlicer to load your updated profiles: -> 1. **Access the configuration folder**: Go to **Help** → **Show Configuration Folder** -> ![go-to-configuration-folder](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/develop/go-to-configuration-folder.png?raw=true) -> 2. **Clear the cache**: Delete the `system` folder to remove cached profiles -> ![profile-delete-system-folder](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/develop/profile-delete-system-folder.png?raw=true) -> 3. **Restart OrcaSlicer**: Launch the application to load your updated profiles -> This process forces OrcaSlicer to update its profile cache from the source files in the `resources/profiles/` directory. - -### 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. -Please note that here we must leave the compatible_printers field non-empty, unlike in the global library. - -```json -{ - "type": "filament", - "setting_id": "GFB99_MTC_0", - "name": "Generic ABS @MyToolChanger", - "from": "system", - "instantiation": "true", - "inherits": "Generic ABS @System", - "filament_cooling_final_speed": [ - "3.5" - ], - "filament_cooling_initial_speed": [ - "10" - ], - "filament_cooling_moves": [ - "2" - ], - "filament_load_time": [ - "10.5" - ], - "filament_loading_speed": [ - "10" - ], - "filament_loading_speed_start": [ - "50" - ], - "filament_multitool_ramming": [ - "1" - ], - "filament_multitool_ramming_flow": [ - "40" - ], - "filament_stamping_distance": [ - "45" - ], - "filament_stamping_loading_speed": [ - "29" - ], - "filament_unload_time": [ - "8.5" - ], - "filament_unloading_speed": [ - "100" - ], - "compatible_printers": [ - "MyToolChanger 0.4 nozzle", - "MyToolChanger 0.2 nozzle", - "MyToolChanger 0.6 nozzle", - "MyToolChanger 0.8 nozzle" - ] -} -``` - -> [!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: - -```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. - -Example: - -```json -{ - "type": "process", - "name": "0.10mm Standard @ExampleVendor Printer 0.2", - "inherits": "fdm_process_common", - "from": "system", - "instantiation": "true", - "compatible_printers": [ - "ExampleVendor Printer 0.2 nozzle" - ] -} -``` - -## 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: - -```shell -resources\profiles\vendor_name\machine\ -``` - -- Each vendor's folder may contain an image named: - -```shell -[machine_model_list.name]_cover.png -``` - -This image will be used in the UI. - -Example model profile: - -```json -{ - "type": "machine_model", - "name": "Example M5", - "nozzle_diameter": "0.2;0.25;0.4;0.6", - "bed_model": "M5-Example-bed.stl", - "bed_texture": "M5-Example-texture.svg", - "model_id": "V1234", - "family": "Example", - "machine_tech": "FFF", - "default_materials": "Example Generic PLA;Example Generic PETG" -} -``` - -## 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. - -Example variant profile: - -```json -{ - "type": "machine", - "name": "Example M5 0.2 nozzle", - "inherits": "fdm_machine_common", - "from": "system", - "setting_id": "GM001", - "instantiation": "true", - "nozzle_diameter": ["0.2"], - "printer_model": "Example M5", - "printer_variant": "0.2", - "default_filament_profile": ["Example Generic PLA"], - "default_print_profile": "0.10mm Standard 0.2mm nozzle @Example", - "printable_area": ["0x0", "235x0", "235x235", "0x235"], - "nozzle_type": "brass" -} -``` - -## 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: - -```shell -resources\profiles\vendor_name\model\ -``` - -## Vendor Meta File - -```shell -resources\profiles\vendor_name.json -``` - -Each vendor must include a JSON file in the `resources\profiles` directory, named `vendor_name.json`. This file lists all available models, variants, processes, and filaments: - -Example: - -```json -{ - "name": "ExampleVendor", - "version": "01.00.00.00", - "force_update": "1", - "description": "Example configuration", - "machine_model_list": [ - { - "name": "Example M5", - "sub_path": "machine/Example M5.json" - } - ], - "machine_list": [ - { - "name": "fdm_machine_common", - "sub_path": "machine/fdm_machine_common.json" - } - ], - "process_list": [ - { - "name": "fdm_process_common", - "sub_path": "process/fdm_process_common.json" - } - ], - "filament_list": [ - { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" - } - ] -} -``` - -## Validate Profiles - -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. - -> [!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. - -> [!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 --l [ --log_level ] arg (=2) Log level. Optional, default is 2 (warning). Higher values produce more detailed logs. -``` - -#### 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 '}' -... -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 -``` - -> [!WARNING] -> Use `OrcaSlicer_profile_validator` on Ubuntu and `OrcaSlicer_profile_validator.exe` on Windows. - ---- - -### 2. Python Profile Validation Script - -In addition to the Orca validator, you should run the `orca_extra_profile_check.py` script. This script performs additional checks like: - -- Validation of `compatible_printers` in filament profiles -- Consistency of filament names -- Validation of default materials in machine profiles (optional) - -#### Example command - -```shell -python ./orca_extra_profile_check.py -``` - -You can also enable or disable specific checks: - -- `--help`: displays help information -- `--vendor` (optional): checks only the specified vendor. If omitted, all vendors are checked. -- `--check-filaments` (enabled by default): checks `compatible_printers` fields in filament profiles -- `--check-materials`: checks default material names in machine profiles -- `--check-obsolete-keys`: checks for obsolete keys in profiles - -#### Sample usage with all checks enabled - -```shell -python ./orca_extra_profile_check.py --vendor="vendor_name" --check-filaments --check-materials -``` - -The script will output the number of errors found and exit with a non-zero status code if any issues are detected. diff --git a/doc/developer-reference/How-to-test.md b/doc/developer-reference/How-to-test.md deleted file mode 100644 index 2929384b1f..0000000000 --- a/doc/developer-reference/How-to-test.md +++ /dev/null @@ -1,27 +0,0 @@ -# How to Test - -This wiki page describes how to build and run tests on Linux. It should eventually provide guidance on how to add tests for a new feature. - -## Build Tests - -Can be built when you are building Orca Slicer binary by including the `-t` flag for `build_linux.sh`: - -``` -build_linux.sh -st -``` - -Test binaries will then appear under `build/tests`. As of this writing, not all tests will be built. - -## Run Unit Tests - -### Run All - -``` -ctest --test-dir build/tests -``` - -### Run a Specific Set - -``` -ctest --test-dir build/tests/slic3rutils -``` diff --git a/doc/developer-reference/How-to-wiki.md b/doc/developer-reference/How-to-wiki.md deleted file mode 100644 index bdf576746b..0000000000 --- a/doc/developer-reference/How-to-wiki.md +++ /dev/null @@ -1,266 +0,0 @@ -# How to Contribute to the Wiki - -This guide explains how to contribute to the OrcaSlicer wiki. - -OrcaSlicer uses GitHub's wiki feature, which lets users and developers create and edit documentation collaboratively. - -We encourage developers and users to contribute by updating existing pages and adding new content. This helps keep the documentation accurate and useful. - -When adding new features, consider updating the wiki so users can access the latest guidance. - -- [Wiki Structure](#wiki-structure) - - [Home](#home) - - [Index and Navigation](#index-and-navigation) - - [File Naming and Organization](#file-naming-and-organization) -- [Orca to Wiki Redirection](#orca-to-wiki-redirection) -- [Formatting and Style](#formatting-and-style) - - [Markdown Formatting](#markdown-formatting) - - [Alerts and Callouts](#alerts-and-callouts) -- [Images](#images) - - [Image Naming](#image-naming) - - [Image Placement](#image-placement) - - [Linking Images](#linking-images) - - [Examples](#examples) - - [Avoid the Following](#avoid-the-following) - - [Resize Images](#resize-images) - - [Image Cropping and Highlighting](#image-cropping-and-highlighting) - - [Recommended Formats](#recommended-formats) -- [Structuring Content](#structuring-content) -- [Commands and Code Blocks](#commands-and-code-blocks) -- [External Links](#external-links) - -## Wiki Structure - -Each wiki page is a Markdown file located in the `doc` directory of the repository. The wiki is organized into sections that cover different areas of the project. - -### Home - -The Home page is the starting point for the OrcaSlicer wiki. From there you can navigate to sections and topics related to the project. - -When you create a new page or section, link it from the Home page under the appropriate category. -The Home page currently organizes content in these top-level entries: - -- ![printer](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/printer.svg?raw=true) [Printer Settings](home#printer-settings) -- ![filament](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/filament.svg?raw=true) [Material Settings](home#material-settings) -- ![process](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/process.svg?raw=true) [Process Settings](home#process-settings) -- ![tab_3d_active](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/tab_3d_active.svg?raw=true) [Prepare](home#prepare) -- ![tab_calibration_active](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/tab_calibration_active.svg?raw=true) [Calibrations](home#calibrations) -- ![im_code](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/im_code.svg?raw=true) [Developer Section](home#developer-section) - -Each section can have multiple pages covering specific topics. For example, the [Process Settings](home#process-settings) section includes pages on [quality](home#quality-settings), [support](home#support-settings), and [others](home#others-settings). - -#### Index and Navigation - -GitHub Wiki uses file names as page identifiers. To link to a page, use the file name without the `.md` extension. If a file lives in a subdirectory, **do not include the subdirectory** in the link; link directly to the file name from the Home page. - -For example, if you add `doc/calibration/flow-rate-calib.md`, link it like this: - -```markdown -[Flow Rate Calibration](flow-rate-calib) -``` - -For long pages, include a table of contents at the top to help readers find sections quickly. - -```markdown -- [Wiki Structure](#wiki-structure) - - [Home](#home) - - [Index and Navigation](#index-and-navigation) - - [File Naming and Organization](#file-naming-and-organization) -- [Formatting and Style](#formatting-and-style) -``` - -> [!NOTE] -> If you're adding a new section, follow the existing structure and make sure it doesn't already fit an existing category. Link it from the Home page accordingly. - -### File Naming and Organization - -When creating new pages, follow these file-naming conventions: - -- Use unique file names to avoid conflicts. -- Use descriptive names that reflect the page's content. -- Use kebab-case for filenames (e.g.: `How-to-wiki.md`). -- If a page belongs to a section, include a suffix that clarifies it (for example, calibration pages should end with `-calib.md`, e.g. `flow-rate-calib.md`). -- Place files in the appropriate subdirectory when applicable (e.g.: `doc/calibration/` for calibration-related content). - -## Orca to Wiki Redirection - -OrcaSlicer can redirect users from the GUI to the appropriate wiki pages, making it easier to find relevant documentation. - -The option-to-wiki mapping is defined in [src/slic3r/GUI/Tab.cpp](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/src/slic3r/GUI/Tab.cpp). Any option added with `append_single_option_line` can be mapped to a wiki page using a second string argument. - -```cpp -optgroup->append_single_option_line("OPTION_NAME"); // Option without wiki page/redirection -optgroup->append_single_option_line("OPTION_NAME", "WIKI_PAGE"); // Option with wiki page and redirection -``` - -You can also point to a specific section within a wiki page by appending a fragment identifier (for example `#section-name`). - -Example: - -```cpp -optgroup->append_single_option_line("seam_gap","quality_settings_seam"); // Wiki page and redirection -optgroup->append_single_option_line("seam_slope_type", "quality_settings_seam#scarf-joint-seam"); // Wiki page and redirection to `Scarf Joint Seam` section -``` - -## Formatting and Style - -Follow these style and formatting conventions when contributing to the wiki. - -### Markdown Formatting - -The wiki uses standard Markdown syntax for formatting and aims to maintain a consistent style across all pages. Avoid using raw HTML tags and prefer Markdown formatting instead. - -Ensure your indentation is consistent, especially for code blocks and lists. - -Refer to the [GitHub Markdown Guide](https://guides.github.com/features/mastering-markdown/) for more information on Markdown syntax. - -### Alerts and Callouts - -Use GitHub's alert syntax to add inline notes and warnings: - -```markdown -> [!NOTE] -> Useful information that readers should know. - -> [!TIP] -> Helpful advice for doing things more easily. - -> [!IMPORTANT] -> Key information required to achieve a goal. - -> [!WARNING] -> Urgent information to avoid problems. - -> [!CAUTION] -> Warnings about risks or negative outcomes. -``` - -> [!NOTE] -> Refer to the [GitHub Alerts documentation](https://docs.github.com/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) for more details. - -## Images - -Images are encouraged to enhance the clarity and quality of the wiki content. They help illustrate concepts, provide examples, and improve readability. - -> [!CAUTION] -> Do not use images from third-party sources unless you have the proper permissions. - -### Image Naming - -- Use clear, descriptive filenames that reflect the image content. -- For section-specific images, include the section name or initials (for example `pa-[description].png` for Pressure Advance images). - -### Image Placement - -- General images should be placed in the `doc/images/` directory. -- Section-specific images should be stored in their corresponding subdirectories (e.g., `doc/images/calibration/` for calibration content). - -> [!TIP] -> You can use `\resources\images` images used in the GUI. - -### Linking Images - -Always use raw GitHub URLs for image links to ensure correct display: - -Format = `![`filename`](` + Base URL + filename.extension + Raw tag + `)` - -- Base URL: - - ```markdown - https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ - ``` - -- Raw tag: - - ```markdown - ?raw=true - ``` - -#### Examples - -- For an image in `doc/images/` named `calibration.png`: - - ```markdown - ![calibration](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/calibration.png?raw=true) - ``` - -- For an image in a subdirectory like `doc/images/GUI/combobox.png`: - - ```markdown - ![combobox](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/combobox.png?raw=true) - ``` - -> [!IMPORTANT] -> New or moved images may not appear in previews until the pull request is merged. Double-check paths and update links if you move files. - -#### Avoid the Following - -- Relative paths -- GitHub Assets/user-content/user-images URLs -- External image links from temporary or unreliable hosts -- Images containing personal or sensitive information -- Using images for content that can be expressed in text, such as equations or code—use Markdown syntax or Mermaid/Math formatting instead. - -> [!NOTE] -> When contributing section-specific images, follow the naming conventions and directory structure. - -#### Resize Images - -Avoid the resize of images and let the Wiki handle it automatically. - -If resizing is necessary (e.g., for thumbnails), use the following syntax: - -HTML Format = `` + filename + ` -``` - -### Image Cropping and Highlighting - -To ensure clarity: - -- Crop images to focus on relevant areas. -- Use simple annotations (arrows, circles, rectangles) to highlight important parts without overloading the image. - -### Recommended Formats - -- **JPG:** Suitable for photographs. Avoid for images with text or fine detail due to compression artifacts. -- **PNG:** Ideal for screenshots or images with transparency. Ensure sufficient contrast for light and dark modes. -- **SVG:** Preferred when possible. SVGs support theme adaptation (light/dark mode), making them ideal for icons and diagrams. - -## Structuring Content - -Each page should have a clear objective. After a short introduction, choose a structure that fits the content: - -- **Step-by-step guides:** Use for sequential procedures (for example calibration). -- **GUI-based reference:** Describe settings following OrcaSlicer's UI when sequence isn't required. - -Example: explain **Layer Height** before **Initial Layer Height**, since the former is global and the latter only applies to the first layer. - -## Commands and Code Blocks - -When adding commands or code blocks please use the [Code Block with Syntax Highlighting feature of Markdown](https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-and-highlighting-code-blocks#syntax-highlighting). - -- Use triple backticks (```) to enclose code blocks. -- Specify the language for proper highlighting and readability. - -````markdown -```json -{ - "key": "value" -} -``` -```` - -```json -{ - "key": "value" -} -``` - -## External Links - -Be careful when linking to external resources. -Ensure links are relevant and reliable and cite papers or articles when appropriate. diff --git a/doc/developer-reference/Localization_guide.md b/doc/developer-reference/Localization_guide.md deleted file mode 100644 index 758160e88c..0000000000 --- a/doc/developer-reference/Localization_guide.md +++ /dev/null @@ -1,111 +0,0 @@ -# Localization and translation guide - -The purpose of this guide is to describe how to contribute to the OrcaSlicer translations. We use GNUgettext for extracting string resources from the project and PoEdit for editing translations. - -Those can be downloaded here: - -- [GNUgettext](https://www.gnu.org/software/gettext/) package contains a set of tools to extract strings from the source code and to create the translation Catalog. -- [PoEdit](https://poedit.net) 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](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/OrcaSlicer/OrcaSlicer/tree/master/localization/i18n](https://github.com/OrcaSlicer/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/OrcaSlicer/OrcaSlicer/tree/master/localization/i18n](https://github.com/OrcaSlicer/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. -Notice. When the translation is complete you need to: - - Rename the file to OrcaSlicer_fr.po - - 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/OrcaSlicer/OrcaSlicer/tree/master/localization/i18n](https://github.com/OrcaSlicer/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). - -### Scenario 3. How do I add a new text resource when implementing a feature to OrcaSlicer - -Each string resource in OrcaSlicer available for translation needs to be explicitly marked using L() macro like this: - -```C++ -auto msg = L("This message to be localized") -``` - -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 OrcaSlicer as an example - -1. For convenience create a list of files with this macro `L(s)`. We have - https://github.com/OrcaSlicer/OrcaSlicer/blob/master/localization/i18n/list.txt. - -2. Create template file(*.POT) with GNUgettext command: - - ```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 - Use flag `--debug` to correctly extract formatted strings(used %d, %s etc.) - -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 - ``` - - 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: - - ```shell - msgcat -o new.po old.po - ``` - -6. Create an English translation catalog with command: - - ```shell - msgen -o new.po old.po - ``` - - > [!NOTE] - > 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 OrcaSlicer translators - -- We recommend using _PoEdit_ application for translation (as described above). It will help you eliminate most punctuation errors and will show you strings with "random" translations (if the fuzzy parameter was used). - -- To check how the translated text looks on the UI elements, test it :) If you use _PoEdit_, all you need to do is save the file. At this point, a MO file will be created. Rename it OrcaSlicer.mo, and you can run OrcaSlicer (see above). - -- If you see an encoding error (garbage characters instead of Unicode) somewhere in OrcaSlicer, report it. It is likely not a problem of your translation, but a bug in the software. - -- See on which UI elements the translated phrase will be used. Especially if it's a button, it is very important to decide on the translation and not write alternative translations in parentheses, as this will significantly increase the width of the button, which is sometimes highly undesirable: - -- 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. - -- Please pay attention to spaces, line breaks (\n) and punctuation marks. **Don't add extra line breaks.** This is especially important for parameter names. - -- Description of the parameters should not contain units of measurement. For example, "Enable fan if layer print time is less than ~~n seconds~~" - -- For units of measurement, use the international system of units. Use "s" instead of "sec". - -- 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/developer-reference/Preset-and-bundle.md b/doc/developer-reference/Preset-and-bundle.md deleted file mode 100644 index e71032bd2c..0000000000 --- a/doc/developer-reference/Preset-and-bundle.md +++ /dev/null @@ -1,47 +0,0 @@ -# Preset and Bundle - -This page deals with the explanation for 3 classes in the code. - -## [`Preset`](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/src/libslic3r/Preset.hpp) - -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 - -> [!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. - -![process-preset-full](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/process-preset-full.png?raw=true) - -- `TYPE_FILAMENT`: As the name suggests this preset is for filaments - -![filament-preset](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/filament-preset.png?raw=true) - -- `TYPE_PRINTER`: Preset for printers. - -![printer-preset](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/printer-preset.png?raw=true) - -There are other preset types but some of them are for SLA. Which is legacy code, since SLA printers are no longer supported. Above 3 are the important types. - -## [`PresetBundle`](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/src/libslic3r/PresetBundle.hpp) - -This is a bundle containing a few types of `PresetCollection`. One bundle has presets for some printers, filaments and some processes (TYPE_PRINT). - -`PresetCollection prints`\ -`PresetCollection filaments`\ -`PrinterPresetCollection printers` - -each one of these contains a collection of processes, filaments and printers respectively.\ - -> [!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`](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/src/libslic3r/Preset.hpp) - -`PrinterPresetCollection` is a class derived from `PresetCollection`. - -These contain a collection of presets. The presets could be of any type.\ -functions of note here are: - -`get_edited_preset()`: returns the current selected preset along with any modifications the user has made.\ -`get_selected_preset()`: returns the current selected preset without the modifications the user has made. diff --git a/doc/developer-reference/plater-sidebar-tab-combobox.md b/doc/developer-reference/plater-sidebar-tab-combobox.md deleted file mode 100644 index 66e631be35..0000000000 --- a/doc/developer-reference/plater-sidebar-tab-combobox.md +++ /dev/null @@ -1,28 +0,0 @@ -# Application Structure Overview - -WIP... - -> [!WARNING] -> !! incomplete, possibly inaccurate, being updated with new info !! - -## [`Plater`](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/src/slic3r/GUI/Plater.hpp) - -Refers to the entire application. The whole view, file loading, project saving and loading is all managed by this class. This class contains members for the model viewer, the sidebar, gcode viewer and everything else. - -## [`Sidebar`](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/src/slic3r/GUI/Plater.hpp) - -This is relating the the sidebar in the application window - -![full-sidebar](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/full-sidebar.png?raw=true) - -## [`ComboBox`](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/src/slic3r/GUI/Widgets/ComboBox.hpp) - -The drop down menus where you can see and select presets - -![combobox](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/combobox.png?raw=true) - -## [`Tab`](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/src/slic3r/GUI/Tab.hpp) - -Refers to the various windows with settings. e.g. the Popup to edit printer or filament preset. Also the section to edit process preset and the object list. These 4 are managed by `TabPrinter`, `TabFilament`, `TabPrint` and `TabPrintModel` respectively. - -![tab-popup](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/GUI/tab-popup.png?raw=true) diff --git a/doc/developer-reference/slicing-hierarchy.md b/doc/developer-reference/slicing-hierarchy.md deleted file mode 100644 index f703c75f15..0000000000 --- a/doc/developer-reference/slicing-hierarchy.md +++ /dev/null @@ -1,44 +0,0 @@ -## Slicing Call Hierarchy - -The Slicing logic is not the easiest to locate in the code base. Below is a flow diagram of function calls that are made after clicking the `Slice Plate` button in the UI. Most of the processing happens in different threads. Note the calls after `BackgroundSlicingProcess::start()`, but this is how you can find the slicing logic. - -```mermaid -flowchart TD - A["Slice plate"] --> B["void Plater::priv::on_action_slice_plate(SimpleEvent&)"] - B --> C["void Plater::reslice()"] - C --> D["bool Plater::priv::restart_background_process(unsigned int state)"] - D --> E["bool BackgroundSlicingProcess::start()"] - E --> F["void BackgroundSlicingProcess::thread_proc_safe_seh_throw()"] - F --> G["unsigned long BackgroundSlicingProcess::thread_proc_safe_seh()"] - G --> H["void BackgroundSlicingProcess::thread_proc_safe()"] - H --> I["void BackgroundSlicingProcess::thread_proc()"] - I --> J["void BackgroundSlicingProcess::call_process_seh_throw(std::exception_ptr &ex)"] - J --> K["unsigned long BackgroundSlicingProcess::call_process_seh(std::exception_ptr &ex)"] - K --> L["void BackgroundSlicingProcess::call_process(std::exception_ptr &ex)"] - L --> M["void BackgroundSlicingProcess::process_fff()"] - M --> N["void Print::process(long long *time_cost_with_cache, bool use_cache)"] - N --> O["void PrintObject::make_perimeters()"] - O --> P["void PrintObject::slice()"] - - %% Labels for libraries - subgraph G1 [libSlic3r_gui] - B - C - D - E - F - G - H - I - J - K - L - M - end - - subgraph G2 [libSlic3r] - N - O - P - end -``` \ No newline at end of file diff --git a/doc/images/Adaptative-Bed-Mesh/ABM-Machine-G-code.png b/doc/images/Adaptative-Bed-Mesh/ABM-Machine-G-code.png deleted file mode 100644 index c0367a90c2..0000000000 Binary files a/doc/images/Adaptative-Bed-Mesh/ABM-Machine-G-code.png and /dev/null differ diff --git a/doc/images/Adaptative-Bed-Mesh/ABM-PrinterConfig.png b/doc/images/Adaptative-Bed-Mesh/ABM-PrinterConfig.png deleted file mode 100644 index c2c691c0ae..0000000000 Binary files a/doc/images/Adaptative-Bed-Mesh/ABM-PrinterConfig.png and /dev/null differ diff --git a/doc/images/Chamber/Chamber-Temperature-Control-Material.png b/doc/images/Chamber/Chamber-Temperature-Control-Material.png deleted file mode 100644 index 66559a86a3..0000000000 Binary files a/doc/images/Chamber/Chamber-Temperature-Control-Material.png and /dev/null differ diff --git a/doc/images/Chamber/Chamber-Temperature-Control-Printer.png b/doc/images/Chamber/Chamber-Temperature-Control-Printer.png deleted file mode 100644 index 1d7429c925..0000000000 Binary files a/doc/images/Chamber/Chamber-Temperature-Control-Printer.png and /dev/null differ diff --git a/doc/images/ERS/ers-artefact.jpg b/doc/images/ERS/ers-artefact.jpg deleted file mode 100644 index 43acce608b..0000000000 Binary files a/doc/images/ERS/ers-artefact.jpg and /dev/null differ diff --git a/doc/images/ERS/ers-intro.png b/doc/images/ERS/ers-intro.png deleted file mode 100644 index 9d72090686..0000000000 Binary files a/doc/images/ERS/ers-intro.png and /dev/null differ diff --git a/doc/images/ERS/ers-printspeed.png b/doc/images/ERS/ers-printspeed.png deleted file mode 100644 index 8ad04807b5..0000000000 Binary files a/doc/images/ERS/ers-printspeed.png and /dev/null differ diff --git a/doc/images/Flow-Rate/flowcalibration-example.png b/doc/images/Flow-Rate/flowcalibration-example.png deleted file mode 100644 index a9903966b1..0000000000 Binary files a/doc/images/Flow-Rate/flowcalibration-example.png and /dev/null differ diff --git a/doc/images/Flow-Rate/flowcalibration-guide.png b/doc/images/Flow-Rate/flowcalibration-guide.png deleted file mode 100644 index 77bda5091a..0000000000 Binary files a/doc/images/Flow-Rate/flowcalibration-guide.png and /dev/null differ diff --git a/doc/images/Flow-Rate/flowcalibration-yolo.gif b/doc/images/Flow-Rate/flowcalibration-yolo.gif deleted file mode 100644 index de4aaee116..0000000000 Binary files a/doc/images/Flow-Rate/flowcalibration-yolo.gif and /dev/null differ diff --git a/doc/images/Flow-Rate/flowcalibration_update_flowrate.png b/doc/images/Flow-Rate/flowcalibration_update_flowrate.png deleted file mode 100644 index 44dab31b13..0000000000 Binary files a/doc/images/Flow-Rate/flowcalibration_update_flowrate.png and /dev/null differ diff --git a/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png b/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png deleted file mode 100644 index eb6748f0e8..0000000000 Binary files a/doc/images/Flow-Rate/flowrate-Bambulab-uncheck.png and /dev/null differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flow-calibration-monotonic.gif b/doc/images/Flow-Rate/monotonic-flow-rate/flow-calibration-monotonic.gif deleted file mode 100644 index 1b14e0ef77..0000000000 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flow-calibration-monotonic.gif and /dev/null differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowcalibration_update_flowrate_monotonic.png b/doc/images/Flow-Rate/monotonic-flow-rate/flowcalibration_update_flowrate_monotonic.png deleted file mode 100644 index 1db9320a14..0000000000 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowcalibration_update_flowrate_monotonic.png and /dev/null differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg deleted file mode 100644 index 7e8108fe3d..0000000000 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-0-5-monotonic.jpg and /dev/null differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg deleted file mode 100644 index cb1d5837a4..0000000000 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-6-monotonic.jpg and /dev/null differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg deleted file mode 100644 index 19cd606e35..0000000000 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass1-monotonic.jpg and /dev/null differ diff --git a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg b/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg deleted file mode 100644 index 333d1bc31e..0000000000 Binary files a/doc/images/Flow-Rate/monotonic-flow-rate/flowrate-pass2-monotonic.jpg and /dev/null differ diff --git a/doc/images/Fuzzy-skin/Fuzzy-skin-Combined-mode.png b/doc/images/Fuzzy-skin/Fuzzy-skin-Combined-mode.png deleted file mode 100644 index 2e24fd6251..0000000000 Binary files a/doc/images/Fuzzy-skin/Fuzzy-skin-Combined-mode.png and /dev/null differ diff --git a/doc/images/Fuzzy-skin/Fuzzy-skin-Displacement-mode.png b/doc/images/Fuzzy-skin/Fuzzy-skin-Displacement-mode.png deleted file mode 100644 index 7be718382b..0000000000 Binary files a/doc/images/Fuzzy-skin/Fuzzy-skin-Displacement-mode.png and /dev/null differ diff --git a/doc/images/Fuzzy-skin/Fuzzy-skin-Extrusion-mode.png b/doc/images/Fuzzy-skin/Fuzzy-skin-Extrusion-mode.png deleted file mode 100644 index f3144638dc..0000000000 Binary files a/doc/images/Fuzzy-skin/Fuzzy-skin-Extrusion-mode.png and /dev/null differ diff --git a/doc/images/Fuzzy-skin/Fuzzy-skin-billow.png b/doc/images/Fuzzy-skin/Fuzzy-skin-billow.png deleted file mode 100644 index 70b1d8e024..0000000000 Binary files a/doc/images/Fuzzy-skin/Fuzzy-skin-billow.png and /dev/null differ diff --git a/doc/images/Fuzzy-skin/Fuzzy-skin-classic.png b/doc/images/Fuzzy-skin/Fuzzy-skin-classic.png deleted file mode 100644 index 09b3250f96..0000000000 Binary files a/doc/images/Fuzzy-skin/Fuzzy-skin-classic.png and /dev/null differ diff --git a/doc/images/Fuzzy-skin/Fuzzy-skin-perlin.png b/doc/images/Fuzzy-skin/Fuzzy-skin-perlin.png deleted file mode 100644 index e2a751ba31..0000000000 Binary files a/doc/images/Fuzzy-skin/Fuzzy-skin-perlin.png and /dev/null differ diff --git a/doc/images/Fuzzy-skin/Fuzzy-skin-ridged-multifractal.png b/doc/images/Fuzzy-skin/Fuzzy-skin-ridged-multifractal.png deleted file mode 100644 index 0311bf2aa7..0000000000 Binary files a/doc/images/Fuzzy-skin/Fuzzy-skin-ridged-multifractal.png and /dev/null differ diff --git a/doc/images/Fuzzy-skin/Fuzzy-skin-voronoi.png b/doc/images/Fuzzy-skin/Fuzzy-skin-voronoi.png deleted file mode 100644 index 40c801f6be..0000000000 Binary files a/doc/images/Fuzzy-skin/Fuzzy-skin-voronoi.png and /dev/null differ diff --git a/doc/images/GUI/combobox.png b/doc/images/GUI/combobox.png deleted file mode 100644 index ef2832cc9e..0000000000 Binary files a/doc/images/GUI/combobox.png and /dev/null differ diff --git a/doc/images/GUI/filament-preset.png b/doc/images/GUI/filament-preset.png deleted file mode 100644 index 0aa6030adb..0000000000 Binary files a/doc/images/GUI/filament-preset.png and /dev/null differ diff --git a/doc/images/GUI/full-sidebar.png b/doc/images/GUI/full-sidebar.png deleted file mode 100644 index 2ee3f86cb1..0000000000 Binary files a/doc/images/GUI/full-sidebar.png and /dev/null differ diff --git a/doc/images/GUI/printer-preset.png b/doc/images/GUI/printer-preset.png deleted file mode 100644 index fc0d567c94..0000000000 Binary files a/doc/images/GUI/printer-preset.png and /dev/null differ diff --git a/doc/images/GUI/process-preset-full.png b/doc/images/GUI/process-preset-full.png deleted file mode 100644 index 02f8f3a7fd..0000000000 Binary files a/doc/images/GUI/process-preset-full.png and /dev/null differ diff --git a/doc/images/GUI/process-preset.png b/doc/images/GUI/process-preset.png deleted file mode 100644 index 85f329314d..0000000000 Binary files a/doc/images/GUI/process-preset.png and /dev/null differ diff --git a/doc/images/GUI/process/process-multimaterial.png b/doc/images/GUI/process/process-multimaterial.png deleted file mode 100644 index cd90ce84fd..0000000000 Binary files a/doc/images/GUI/process/process-multimaterial.png and /dev/null differ diff --git a/doc/images/GUI/process/process-others.png b/doc/images/GUI/process/process-others.png deleted file mode 100644 index 80dbc19835..0000000000 Binary files a/doc/images/GUI/process/process-others.png and /dev/null differ diff --git a/doc/images/GUI/process/process-quality.png b/doc/images/GUI/process/process-quality.png deleted file mode 100644 index 402caf3e76..0000000000 Binary files a/doc/images/GUI/process/process-quality.png and /dev/null differ diff --git a/doc/images/GUI/process/process-speed.png b/doc/images/GUI/process/process-speed.png deleted file mode 100644 index 5e8fd0f262..0000000000 Binary files a/doc/images/GUI/process/process-speed.png and /dev/null differ diff --git a/doc/images/GUI/process/process-strength.png b/doc/images/GUI/process/process-strength.png deleted file mode 100644 index aafb234a0e..0000000000 Binary files a/doc/images/GUI/process/process-strength.png and /dev/null differ diff --git a/doc/images/GUI/process/process-support.png b/doc/images/GUI/process/process-support.png deleted file mode 100644 index d6078daa54..0000000000 Binary files a/doc/images/GUI/process/process-support.png and /dev/null differ diff --git a/doc/images/GUI/tab-popup.png b/doc/images/GUI/tab-popup.png deleted file mode 100644 index 8a6f032887..0000000000 Binary files a/doc/images/GUI/tab-popup.png and /dev/null differ diff --git a/doc/images/Handy-Models/handy-models-list.png b/doc/images/Handy-Models/handy-models-list.png deleted file mode 100644 index c1242cb3bd..0000000000 Binary files a/doc/images/Handy-Models/handy-models-list.png and /dev/null differ diff --git a/doc/images/InputShaping/IS_damp_klipper_slicer_measure.png b/doc/images/InputShaping/IS_damp_klipper_slicer_measure.png deleted file mode 100644 index a050ee98c1..0000000000 Binary files a/doc/images/InputShaping/IS_damp_klipper_slicer_measure.png and /dev/null differ diff --git a/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg b/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg deleted file mode 100644 index 0aa4d7c13e..0000000000 Binary files a/doc/images/InputShaping/IS_damp_marlin_print_measure.jpg and /dev/null differ diff --git a/doc/images/InputShaping/IS_damp_marlin_slicer_measure.png b/doc/images/InputShaping/IS_damp_marlin_slicer_measure.png deleted file mode 100644 index d255eacb9d..0000000000 Binary files a/doc/images/InputShaping/IS_damp_marlin_slicer_measure.png and /dev/null differ diff --git a/doc/images/InputShaping/IS_damp_menu.png b/doc/images/InputShaping/IS_damp_menu.png deleted file mode 100644 index 70460f7aef..0000000000 Binary files a/doc/images/InputShaping/IS_damp_menu.png and /dev/null differ diff --git a/doc/images/InputShaping/IS_freq_klipper_slicer_measure.png b/doc/images/InputShaping/IS_freq_klipper_slicer_measure.png deleted file mode 100644 index d73e5258ec..0000000000 Binary files a/doc/images/InputShaping/IS_freq_klipper_slicer_measure.png and /dev/null differ diff --git a/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg b/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg deleted file mode 100644 index 00c4a54098..0000000000 Binary files a/doc/images/InputShaping/IS_freq_marlin_print_measure.jpg and /dev/null differ diff --git a/doc/images/InputShaping/IS_freq_marlin_slicer_measure.png b/doc/images/InputShaping/IS_freq_marlin_slicer_measure.png deleted file mode 100644 index c8f6746fe6..0000000000 Binary files a/doc/images/InputShaping/IS_freq_marlin_slicer_measure.png and /dev/null differ diff --git a/doc/images/InputShaping/IS_freq_menu.png b/doc/images/InputShaping/IS_freq_menu.png deleted file mode 100644 index 3589e1d51a..0000000000 Binary files a/doc/images/InputShaping/IS_freq_menu.png and /dev/null differ diff --git a/doc/images/JunctionDeviation/jd_first_menu.png b/doc/images/JunctionDeviation/jd_first_menu.png deleted file mode 100644 index 4283e0f4bd..0000000000 Binary files a/doc/images/JunctionDeviation/jd_first_menu.png and /dev/null differ diff --git a/doc/images/JunctionDeviation/jd_first_print_measure.jpg b/doc/images/JunctionDeviation/jd_first_print_measure.jpg deleted file mode 100644 index 6438f3e31f..0000000000 Binary files a/doc/images/JunctionDeviation/jd_first_print_measure.jpg and /dev/null differ diff --git a/doc/images/JunctionDeviation/jd_first_slicer_measure.png b/doc/images/JunctionDeviation/jd_first_slicer_measure.png deleted file mode 100644 index 35a9d05164..0000000000 Binary files a/doc/images/JunctionDeviation/jd_first_slicer_measure.png and /dev/null differ diff --git a/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png b/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png deleted file mode 100644 index 334dd39521..0000000000 Binary files a/doc/images/JunctionDeviation/jd_printer_jerk_limitation.png and /dev/null differ diff --git a/doc/images/JunctionDeviation/jd_second_menu.png b/doc/images/JunctionDeviation/jd_second_menu.png deleted file mode 100644 index e4c860a16d..0000000000 Binary files a/doc/images/JunctionDeviation/jd_second_menu.png and /dev/null differ diff --git a/doc/images/JunctionDeviation/jd_second_print_measure.jpg b/doc/images/JunctionDeviation/jd_second_print_measure.jpg deleted file mode 100644 index 5b76a1ba19..0000000000 Binary files a/doc/images/JunctionDeviation/jd_second_print_measure.jpg and /dev/null differ diff --git a/doc/images/JunctionDeviation/jd_second_slicer_measure.png b/doc/images/JunctionDeviation/jd_second_slicer_measure.png deleted file mode 100644 index afdaf677af..0000000000 Binary files a/doc/images/JunctionDeviation/jd_second_slicer_measure.png and /dev/null differ diff --git a/doc/images/MVF/mvf_caliper_sample_mvf.jpg b/doc/images/MVF/mvf_caliper_sample_mvf.jpg deleted file mode 100644 index 718a124077..0000000000 Binary files a/doc/images/MVF/mvf_caliper_sample_mvf.jpg and /dev/null differ diff --git a/doc/images/MVF/mvf_gui_flow.png b/doc/images/MVF/mvf_gui_flow.png deleted file mode 100644 index 9d4d5ad3db..0000000000 Binary files a/doc/images/MVF/mvf_gui_flow.png and /dev/null differ diff --git a/doc/images/MVF/mvf_material_settings.png b/doc/images/MVF/mvf_material_settings.png deleted file mode 100644 index 2090e7df16..0000000000 Binary files a/doc/images/MVF/mvf_material_settings.png and /dev/null differ diff --git a/doc/images/MVF/mvf_measurement_point.jpg b/doc/images/MVF/mvf_measurement_point.jpg deleted file mode 100644 index c9af518e54..0000000000 Binary files a/doc/images/MVF/mvf_measurement_point.jpg and /dev/null differ diff --git a/doc/images/Precision/PolyHoles.png b/doc/images/Precision/PolyHoles.png deleted file mode 100644 index a936fa2298..0000000000 Binary files a/doc/images/Precision/PolyHoles.png and /dev/null differ diff --git a/doc/images/Precision/PreciseWallOff.svg b/doc/images/Precision/PreciseWallOff.svg deleted file mode 100644 index 99fe13f6f7..0000000000 --- a/doc/images/Precision/PreciseWallOff.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Inner wall
Inner wall
Inner wall
Inner wall
Outer wall
Outer wall
\ No newline at end of file diff --git a/doc/images/Precision/PreciseWallOn.svg b/doc/images/Precision/PreciseWallOn.svg deleted file mode 100644 index 48d1fcac7f..0000000000 --- a/doc/images/Precision/PreciseWallOn.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Inner wall
Inner wall
Inner wall
Inner wall
Outer wall
Outer wall
\ No newline at end of file diff --git a/doc/images/Precision/PreciseZOff.png b/doc/images/Precision/PreciseZOff.png deleted file mode 100644 index 43b5d56cc6..0000000000 Binary files a/doc/images/Precision/PreciseZOff.png and /dev/null differ diff --git a/doc/images/Precision/PreciseZOn.png b/doc/images/Precision/PreciseZOn.png deleted file mode 100644 index 861aec011c..0000000000 Binary files a/doc/images/Precision/PreciseZOn.png and /dev/null differ diff --git a/doc/images/Precision/arc-fitting.svg b/doc/images/Precision/arc-fitting.svg deleted file mode 100644 index acb997cede..0000000000 --- a/doc/images/Precision/arc-fitting.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Sliced GCode Path
Sliced GCode Path
New GCode Arc
New GCode Arc
\ No newline at end of file diff --git a/doc/images/Precision/elephant-foot-compensation.png b/doc/images/Precision/elephant-foot-compensation.png deleted file mode 100644 index 55d87c251d..0000000000 Binary files a/doc/images/Precision/elephant-foot-compensation.png and /dev/null differ diff --git a/doc/images/Precision/elephant-foot.svg b/doc/images/Precision/elephant-foot.svg deleted file mode 100644 index 88a29c0136..0000000000 --- a/doc/images/Precision/elephant-foot.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/doc/images/Precision/layer-height-spheres.png b/doc/images/Precision/layer-height-spheres.png deleted file mode 100644 index 27441eeef7..0000000000 Binary files a/doc/images/Precision/layer-height-spheres.png and /dev/null differ diff --git a/doc/images/Precision/layer-height.svg b/doc/images/Precision/layer-height.svg deleted file mode 100644 index d86cfe813b..0000000000 --- a/doc/images/Precision/layer-height.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
\ No newline at end of file diff --git a/doc/images/Precision/reverse-odd-texture.png b/doc/images/Precision/reverse-odd-texture.png deleted file mode 100644 index bc4ec2221e..0000000000 Binary files a/doc/images/Precision/reverse-odd-texture.png and /dev/null differ diff --git a/doc/images/STL-Transformation/simplify-menu.png b/doc/images/STL-Transformation/simplify-menu.png deleted file mode 100644 index a78ff408d1..0000000000 Binary files a/doc/images/STL-Transformation/simplify-menu.png and /dev/null differ diff --git a/doc/images/STL-Transformation/stl-transformation-enable.png b/doc/images/STL-Transformation/stl-transformation-enable.png deleted file mode 100644 index 56edb4175a..0000000000 Binary files a/doc/images/STL-Transformation/stl-transformation-enable.png and /dev/null differ diff --git a/doc/images/STL-Transformation/stl-transformation-params.png b/doc/images/STL-Transformation/stl-transformation-params.png deleted file mode 100644 index bd8919e275..0000000000 Binary files a/doc/images/STL-Transformation/stl-transformation-params.png and /dev/null differ diff --git a/doc/images/STL-Transformation/stl-transformation-smooth-rough.png b/doc/images/STL-Transformation/stl-transformation-smooth-rough.png deleted file mode 100644 index 762f87d02e..0000000000 Binary files a/doc/images/STL-Transformation/stl-transformation-smooth-rough.png and /dev/null differ diff --git a/doc/images/STL-Transformation/stl-transformation-split.png b/doc/images/STL-Transformation/stl-transformation-split.png deleted file mode 100644 index 64184f917b..0000000000 Binary files a/doc/images/STL-Transformation/stl-transformation-split.png and /dev/null differ diff --git a/doc/images/STL-Transformation/stl-transformation.png b/doc/images/STL-Transformation/stl-transformation.png deleted file mode 100644 index 6527e14826..0000000000 Binary files a/doc/images/STL-Transformation/stl-transformation.png and /dev/null differ diff --git a/doc/images/Temp-calib/temp-tower.jpg b/doc/images/Temp-calib/temp-tower.jpg deleted file mode 100644 index 00135dcedb..0000000000 Binary files a/doc/images/Temp-calib/temp-tower.jpg and /dev/null differ diff --git a/doc/images/Temp-calib/temp-tower_test.gif b/doc/images/Temp-calib/temp-tower_test.gif deleted file mode 100644 index c93a0dab52..0000000000 Binary files a/doc/images/Temp-calib/temp-tower_test.gif and /dev/null differ diff --git a/doc/images/Temp-calib/temp-tower_test_menu.png b/doc/images/Temp-calib/temp-tower_test_menu.png deleted file mode 100644 index dfc074ebe9..0000000000 Binary files a/doc/images/Temp-calib/temp-tower_test_menu.png and /dev/null differ diff --git a/doc/images/Tolerance/FilamentShrinkageCompensation.png b/doc/images/Tolerance/FilamentShrinkageCompensation.png deleted file mode 100644 index 8da497eca0..0000000000 Binary files a/doc/images/Tolerance/FilamentShrinkageCompensation.png and /dev/null differ diff --git a/doc/images/Tolerance/OrcaToleranceTes_m6.jpg b/doc/images/Tolerance/OrcaToleranceTes_m6.jpg deleted file mode 100644 index 7cd70d8a23..0000000000 Binary files a/doc/images/Tolerance/OrcaToleranceTes_m6.jpg and /dev/null differ diff --git a/doc/images/Tolerance/OrcaToleranceTest_print.jpg b/doc/images/Tolerance/OrcaToleranceTest_print.jpg deleted file mode 100644 index 4fc2244160..0000000000 Binary files a/doc/images/Tolerance/OrcaToleranceTest_print.jpg and /dev/null differ diff --git a/doc/images/Tolerance/QualityPrecision.png b/doc/images/Tolerance/QualityPrecision.png deleted file mode 100644 index 7b763ea67c..0000000000 Binary files a/doc/images/Tolerance/QualityPrecision.png and /dev/null differ diff --git a/doc/images/Tolerance/tolerance_hole.svg b/doc/images/Tolerance/tolerance_hole.svg deleted file mode 100644 index 927be09ae7..0000000000 --- a/doc/images/Tolerance/tolerance_hole.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
6,00mm
6,00mm
\ No newline at end of file diff --git a/doc/images/Wall-Order/avoid-crossing-walls.png b/doc/images/Wall-Order/avoid-crossing-walls.png deleted file mode 100644 index 52c0e756ce..0000000000 Binary files a/doc/images/Wall-Order/avoid-crossing-walls.png and /dev/null differ diff --git a/doc/images/Wall-Order/flow-compensation-model-graph.png b/doc/images/Wall-Order/flow-compensation-model-graph.png deleted file mode 100644 index d3f4408907..0000000000 Binary files a/doc/images/Wall-Order/flow-compensation-model-graph.png and /dev/null differ diff --git a/doc/images/Wall-Order/flow-compensation-model.png b/doc/images/Wall-Order/flow-compensation-model.png deleted file mode 100644 index be22f2ba02..0000000000 Binary files a/doc/images/Wall-Order/flow-compensation-model.png and /dev/null differ diff --git a/doc/images/Wall-Order/infill-first.gif b/doc/images/Wall-Order/infill-first.gif deleted file mode 100644 index 2de1160720..0000000000 Binary files a/doc/images/Wall-Order/infill-first.gif and /dev/null differ diff --git a/doc/images/Wall-Order/infill-ghosting.png b/doc/images/Wall-Order/infill-ghosting.png deleted file mode 100644 index 40f66fb124..0000000000 Binary files a/doc/images/Wall-Order/infill-ghosting.png and /dev/null differ diff --git a/doc/images/Wall-Order/inner-outer-inner.gif b/doc/images/Wall-Order/inner-outer-inner.gif deleted file mode 100644 index 74077e7956..0000000000 Binary files a/doc/images/Wall-Order/inner-outer-inner.gif and /dev/null differ diff --git a/doc/images/Wall-Order/inner-outer.gif b/doc/images/Wall-Order/inner-outer.gif deleted file mode 100644 index 2fcee982f3..0000000000 Binary files a/doc/images/Wall-Order/inner-outer.gif and /dev/null differ diff --git a/doc/images/Wall-Order/only-one-wall-threshold.png b/doc/images/Wall-Order/only-one-wall-threshold.png deleted file mode 100644 index a728e46442..0000000000 Binary files a/doc/images/Wall-Order/only-one-wall-threshold.png and /dev/null differ diff --git a/doc/images/Wall-Order/only-one-wall.gif b/doc/images/Wall-Order/only-one-wall.gif deleted file mode 100644 index 2cc775c359..0000000000 Binary files a/doc/images/Wall-Order/only-one-wall.gif and /dev/null differ diff --git a/doc/images/Wall-Order/outer-inner.gif b/doc/images/Wall-Order/outer-inner.gif deleted file mode 100644 index 48cfa32f27..0000000000 Binary files a/doc/images/Wall-Order/outer-inner.gif and /dev/null differ diff --git a/doc/images/WallGenerator/wallgenerator-arachne.png b/doc/images/WallGenerator/wallgenerator-arachne.png deleted file mode 100644 index 21d14d77f3..0000000000 Binary files a/doc/images/WallGenerator/wallgenerator-arachne.png and /dev/null differ diff --git a/doc/images/WallGenerator/wallgenerator-classic.png b/doc/images/WallGenerator/wallgenerator-classic.png deleted file mode 100644 index 8d884f6a65..0000000000 Binary files a/doc/images/WallGenerator/wallgenerator-classic.png and /dev/null differ diff --git a/doc/images/bed-types.gif b/doc/images/bed-types.gif deleted file mode 100644 index 8a8d036578..0000000000 Binary files a/doc/images/bed-types.gif and /dev/null differ diff --git a/doc/images/bridging/bridge-counterbore-none.png b/doc/images/bridging/bridge-counterbore-none.png deleted file mode 100644 index e797b3b209..0000000000 Binary files a/doc/images/bridging/bridge-counterbore-none.png and /dev/null differ diff --git a/doc/images/bridging/bridge-counterbore-partially.gif b/doc/images/bridging/bridge-counterbore-partially.gif deleted file mode 100644 index 83eaadd7d1..0000000000 Binary files a/doc/images/bridging/bridge-counterbore-partially.gif and /dev/null differ diff --git a/doc/images/bridging/bridge-counterbore-sacrificial.png b/doc/images/bridging/bridge-counterbore-sacrificial.png deleted file mode 100644 index 31af638539..0000000000 Binary files a/doc/images/bridging/bridge-counterbore-sacrificial.png and /dev/null differ diff --git a/doc/images/bridging/thick-bridges.png b/doc/images/bridging/thick-bridges.png deleted file mode 100644 index 91985947e7..0000000000 Binary files a/doc/images/bridging/thick-bridges.png and /dev/null differ diff --git a/doc/images/brim/brim-inner.png b/doc/images/brim/brim-inner.png deleted file mode 100644 index b6a69bd148..0000000000 Binary files a/doc/images/brim/brim-inner.png and /dev/null differ diff --git a/doc/images/brim/brim-mouse-ears.png b/doc/images/brim/brim-mouse-ears.png deleted file mode 100644 index 77828217ed..0000000000 Binary files a/doc/images/brim/brim-mouse-ears.png and /dev/null differ diff --git a/doc/images/brim/brim-outer-inner.png b/doc/images/brim/brim-outer-inner.png deleted file mode 100644 index 727c46e53f..0000000000 Binary files a/doc/images/brim/brim-outer-inner.png and /dev/null differ diff --git a/doc/images/brim/brim-outer.png b/doc/images/brim/brim-outer.png deleted file mode 100644 index 45cf6e1d57..0000000000 Binary files a/doc/images/brim/brim-outer.png and /dev/null differ diff --git a/doc/images/brim/brim.png b/doc/images/brim/brim.png deleted file mode 100644 index 914efdfbc2..0000000000 Binary files a/doc/images/brim/brim.png and /dev/null differ diff --git a/doc/images/calibration.png b/doc/images/calibration.png deleted file mode 100644 index b26f203ff7..0000000000 Binary files a/doc/images/calibration.png and /dev/null differ diff --git a/doc/images/develop/compile_vs_local_debugger.png b/doc/images/develop/compile_vs_local_debugger.png deleted file mode 100644 index 54d2b59963..0000000000 Binary files a/doc/images/develop/compile_vs_local_debugger.png and /dev/null differ diff --git a/doc/images/develop/go-to-configuration-folder.png b/doc/images/develop/go-to-configuration-folder.png deleted file mode 100644 index c5b9cdcec8..0000000000 Binary files a/doc/images/develop/go-to-configuration-folder.png and /dev/null differ diff --git a/doc/images/develop/profile-delete-system-folder.png b/doc/images/develop/profile-delete-system-folder.png deleted file mode 100644 index e89d2cfaad..0000000000 Binary files a/doc/images/develop/profile-delete-system-folder.png and /dev/null differ diff --git a/doc/images/develop/vs_cmd.png b/doc/images/develop/vs_cmd.png deleted file mode 100644 index 76cee67e09..0000000000 Binary files a/doc/images/develop/vs_cmd.png and /dev/null differ diff --git a/doc/images/develop/windows_variables_order.png b/doc/images/develop/windows_variables_order.png deleted file mode 100644 index 75018d2caf..0000000000 Binary files a/doc/images/develop/windows_variables_order.png and /dev/null differ diff --git a/doc/images/develop/windows_variables_path.png b/doc/images/develop/windows_variables_path.png deleted file mode 100644 index 4de101d064..0000000000 Binary files a/doc/images/develop/windows_variables_path.png and /dev/null differ diff --git a/doc/images/fill/InfillAnchorOff.png b/doc/images/fill/InfillAnchorOff.png deleted file mode 100644 index 291f41bb34..0000000000 Binary files a/doc/images/fill/InfillAnchorOff.png and /dev/null differ diff --git a/doc/images/fill/InfillAnchorOn.png b/doc/images/fill/InfillAnchorOn.png deleted file mode 100644 index 5757a4f9be..0000000000 Binary files a/doc/images/fill/InfillAnchorOn.png and /dev/null differ diff --git a/doc/images/fill/InfillWallOverlapOff.svg b/doc/images/fill/InfillWallOverlapOff.svg deleted file mode 100644 index a524a6bf73..0000000000 --- a/doc/images/fill/InfillWallOverlapOff.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Sparse infill
Sparse infill
\ No newline at end of file diff --git a/doc/images/fill/InfillWallOverlapOn.svg b/doc/images/fill/InfillWallOverlapOn.svg deleted file mode 100644 index cc348c099b..0000000000 --- a/doc/images/fill/InfillWallOverlapOn.svg +++ /dev/null @@ -1,3 +0,0 @@ - - -
Inner wall
Inner wall
Outer wall
Outer wall
Inner wall
Inner wall
Sparse infill
Sparse infill
\ No newline at end of file diff --git a/doc/images/fill/Template-metalanguage/+30+90.png b/doc/images/fill/Template-metalanguage/+30+90.png deleted file mode 100644 index bb5044f88e..0000000000 Binary files a/doc/images/fill/Template-metalanguage/+30+90.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/+30-10.png b/doc/images/fill/Template-metalanguage/+30-10.png deleted file mode 100644 index 686f2d38aa..0000000000 Binary files a/doc/images/fill/Template-metalanguage/+30-10.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/+30.png b/doc/images/fill/Template-metalanguage/+30.png deleted file mode 100644 index 45422d0930..0000000000 Binary files a/doc/images/fill/Template-metalanguage/+30.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/+360-100p.png b/doc/images/fill/Template-metalanguage/+360-100p.png deleted file mode 100644 index 5c35aa6e82..0000000000 Binary files a/doc/images/fill/Template-metalanguage/+360-100p.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/+45-100.png b/doc/images/fill/Template-metalanguage/+45-100.png deleted file mode 100644 index c7f871d4f3..0000000000 Binary files a/doc/images/fill/Template-metalanguage/+45-100.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/+45-50.png b/doc/images/fill/Template-metalanguage/+45-50.png deleted file mode 100644 index fbf8982af2..0000000000 Binary files a/doc/images/fill/Template-metalanguage/+45-50.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/+45.png b/doc/images/fill/Template-metalanguage/+45.png deleted file mode 100644 index 90a63e2817..0000000000 Binary files a/doc/images/fill/Template-metalanguage/+45.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/+90.png b/doc/images/fill/Template-metalanguage/+90.png deleted file mode 100644 index 8b15c6c48d..0000000000 Binary files a/doc/images/fill/Template-metalanguage/+90.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/0+30+90.png b/doc/images/fill/Template-metalanguage/0+30+90.png deleted file mode 100644 index c4423eda40..0000000000 Binary files a/doc/images/fill/Template-metalanguage/0+30+90.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/0-30.png b/doc/images/fill/Template-metalanguage/0-30.png deleted file mode 100644 index f1428d4393..0000000000 Binary files a/doc/images/fill/Template-metalanguage/0-30.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/0.png b/doc/images/fill/Template-metalanguage/0.png deleted file mode 100644 index 7339ecdb62..0000000000 Binary files a/doc/images/fill/Template-metalanguage/0.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/10period.png b/doc/images/fill/Template-metalanguage/10period.png deleted file mode 100644 index e3b1337d1b..0000000000 Binary files a/doc/images/fill/Template-metalanguage/10period.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/14+15R.png b/doc/images/fill/Template-metalanguage/14+15R.png deleted file mode 100644 index 8c9f6b0481..0000000000 Binary files a/doc/images/fill/Template-metalanguage/14+15R.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/45.png b/doc/images/fill/Template-metalanguage/45.png deleted file mode 100644 index ba0d0a6df0..0000000000 Binary files a/doc/images/fill/Template-metalanguage/45.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/90.png b/doc/images/fill/Template-metalanguage/90.png deleted file mode 100644 index 350923b56b..0000000000 Binary files a/doc/images/fill/Template-metalanguage/90.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/arcsinus-joint.png b/doc/images/fill/Template-metalanguage/arcsinus-joint.png deleted file mode 100644 index cccf96fc25..0000000000 Binary files a/doc/images/fill/Template-metalanguage/arcsinus-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/cubic-joint-inverse.png b/doc/images/fill/Template-metalanguage/cubic-joint-inverse.png deleted file mode 100644 index 293b9bb728..0000000000 Binary files a/doc/images/fill/Template-metalanguage/cubic-joint-inverse.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/cubic-joint.png b/doc/images/fill/Template-metalanguage/cubic-joint.png deleted file mode 100644 index 44d08dbd69..0000000000 Binary files a/doc/images/fill/Template-metalanguage/cubic-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/h-sinus-joint-lazy.png b/doc/images/fill/Template-metalanguage/h-sinus-joint-lazy.png deleted file mode 100644 index 0304d3f8e0..0000000000 Binary files a/doc/images/fill/Template-metalanguage/h-sinus-joint-lazy.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/hv-quarter-joint.png b/doc/images/fill/Template-metalanguage/hv-quarter-joint.png deleted file mode 100644 index 2958aca689..0000000000 Binary files a/doc/images/fill/Template-metalanguage/hv-quarter-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/infill-counting-flipped.png b/doc/images/fill/Template-metalanguage/infill-counting-flipped.png deleted file mode 100644 index 02ab00f7c5..0000000000 Binary files a/doc/images/fill/Template-metalanguage/infill-counting-flipped.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/infill-counting.png b/doc/images/fill/Template-metalanguage/infill-counting.png deleted file mode 100644 index 229f68596e..0000000000 Binary files a/doc/images/fill/Template-metalanguage/infill-counting.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/linear-joint.png b/doc/images/fill/Template-metalanguage/linear-joint.png deleted file mode 100644 index f9158eb14c..0000000000 Binary files a/doc/images/fill/Template-metalanguage/linear-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/multiple-joint-initial-angle.png b/doc/images/fill/Template-metalanguage/multiple-joint-initial-angle.png deleted file mode 100644 index d854c7a6a9..0000000000 Binary files a/doc/images/fill/Template-metalanguage/multiple-joint-initial-angle.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/multiple-joint-middle-angle.png b/doc/images/fill/Template-metalanguage/multiple-joint-middle-angle.png deleted file mode 100644 index d1f782bb1b..0000000000 Binary files a/doc/images/fill/Template-metalanguage/multiple-joint-middle-angle.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/multiple-joint.png b/doc/images/fill/Template-metalanguage/multiple-joint.png deleted file mode 100644 index b691d9daf7..0000000000 Binary files a/doc/images/fill/Template-metalanguage/multiple-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/pseudorandom-joint.png b/doc/images/fill/Template-metalanguage/pseudorandom-joint.png deleted file mode 100644 index 746365b9e5..0000000000 Binary files a/doc/images/fill/Template-metalanguage/pseudorandom-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/random-joint.png b/doc/images/fill/Template-metalanguage/random-joint.png deleted file mode 100644 index 0700b2c7a7..0000000000 Binary files a/doc/images/fill/Template-metalanguage/random-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/squared-joint-inverse.png b/doc/images/fill/Template-metalanguage/squared-joint-inverse.png deleted file mode 100644 index b2c82ba708..0000000000 Binary files a/doc/images/fill/Template-metalanguage/squared-joint-inverse.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/squared-joint.png b/doc/images/fill/Template-metalanguage/squared-joint.png deleted file mode 100644 index 73eace2592..0000000000 Binary files a/doc/images/fill/Template-metalanguage/squared-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/v-sinus-joint-lazy.png b/doc/images/fill/Template-metalanguage/v-sinus-joint-lazy.png deleted file mode 100644 index a0462665b2..0000000000 Binary files a/doc/images/fill/Template-metalanguage/v-sinus-joint-lazy.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/v-sinus-joint.png b/doc/images/fill/Template-metalanguage/v-sinus-joint.png deleted file mode 100644 index c66f9ecd3b..0000000000 Binary files a/doc/images/fill/Template-metalanguage/v-sinus-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/vh-quarter-joint.png b/doc/images/fill/Template-metalanguage/vh-quarter-joint.png deleted file mode 100644 index b04dcf0183..0000000000 Binary files a/doc/images/fill/Template-metalanguage/vh-quarter-joint.png and /dev/null differ diff --git a/doc/images/fill/Template-metalanguage/z-h-sinus-joint.png b/doc/images/fill/Template-metalanguage/z-h-sinus-joint.png deleted file mode 100644 index 89649c6566..0000000000 Binary files a/doc/images/fill/Template-metalanguage/z-h-sinus-joint.png and /dev/null differ diff --git a/doc/images/fill/extra-solid-infill.gif b/doc/images/fill/extra-solid-infill.gif deleted file mode 100644 index a5fc712aa3..0000000000 Binary files a/doc/images/fill/extra-solid-infill.gif and /dev/null differ diff --git a/doc/images/fill/fill-combination.png b/doc/images/fill/fill-combination.png deleted file mode 100644 index 29bca84ab8..0000000000 Binary files a/doc/images/fill/fill-combination.png and /dev/null differ diff --git a/doc/images/fill/fill-direction-to-model.png b/doc/images/fill/fill-direction-to-model.png deleted file mode 100644 index 890c9336a4..0000000000 Binary files a/doc/images/fill/fill-direction-to-model.png and /dev/null differ diff --git a/doc/images/fill/fill-direction.png b/doc/images/fill/fill-direction.png deleted file mode 100644 index 2ae10348d8..0000000000 Binary files a/doc/images/fill/fill-direction.png and /dev/null differ diff --git a/doc/images/fill/fill-layer-time-variability.png b/doc/images/fill/fill-layer-time-variability.png deleted file mode 100644 index 7558036dea..0000000000 Binary files a/doc/images/fill/fill-layer-time-variability.png and /dev/null differ diff --git a/doc/images/fill/fill-rotation.png b/doc/images/fill/fill-rotation.png deleted file mode 100644 index d60ac1c224..0000000000 Binary files a/doc/images/fill/fill-rotation.png and /dev/null differ diff --git a/doc/images/fill/infill-multiline-1-5.gif b/doc/images/fill/infill-multiline-1-5.gif deleted file mode 100644 index 0194cd7127..0000000000 Binary files a/doc/images/fill/infill-multiline-1-5.gif and /dev/null differ diff --git a/doc/images/fill/infill-multiline-aesthetic.gif b/doc/images/fill/infill-multiline-aesthetic.gif deleted file mode 100644 index b6e509c842..0000000000 Binary files a/doc/images/fill/infill-multiline-aesthetic.gif and /dev/null differ diff --git a/doc/images/fill/infill-multiline-overlapping.gif b/doc/images/fill/infill-multiline-overlapping.gif deleted file mode 100644 index 8b1c7a1583..0000000000 Binary files a/doc/images/fill/infill-multiline-overlapping.gif and /dev/null differ diff --git a/doc/images/fill/infill-top-3d-honeycomb.png b/doc/images/fill/infill-top-3d-honeycomb.png deleted file mode 100644 index 30134a3f83..0000000000 Binary files a/doc/images/fill/infill-top-3d-honeycomb.png and /dev/null differ diff --git a/doc/images/fill/infill-top-adaptive-cubic.png b/doc/images/fill/infill-top-adaptive-cubic.png deleted file mode 100644 index 31cb7220be..0000000000 Binary files a/doc/images/fill/infill-top-adaptive-cubic.png and /dev/null differ diff --git a/doc/images/fill/infill-top-aligned-rectilinear.png b/doc/images/fill/infill-top-aligned-rectilinear.png deleted file mode 100644 index b31ad33c3f..0000000000 Binary files a/doc/images/fill/infill-top-aligned-rectilinear.png and /dev/null differ diff --git a/doc/images/fill/infill-top-archimedean-chords.png b/doc/images/fill/infill-top-archimedean-chords.png deleted file mode 100644 index f70f98cde5..0000000000 Binary files a/doc/images/fill/infill-top-archimedean-chords.png and /dev/null differ diff --git a/doc/images/fill/infill-top-concentric.png b/doc/images/fill/infill-top-concentric.png deleted file mode 100644 index 605f182e65..0000000000 Binary files a/doc/images/fill/infill-top-concentric.png and /dev/null differ diff --git a/doc/images/fill/infill-top-cross-hatch.png b/doc/images/fill/infill-top-cross-hatch.png deleted file mode 100644 index 1bcc7b217a..0000000000 Binary files a/doc/images/fill/infill-top-cross-hatch.png and /dev/null differ diff --git a/doc/images/fill/infill-top-cross-zag.png b/doc/images/fill/infill-top-cross-zag.png deleted file mode 100644 index 1c037b69e4..0000000000 Binary files a/doc/images/fill/infill-top-cross-zag.png and /dev/null differ diff --git a/doc/images/fill/infill-top-cubic.png b/doc/images/fill/infill-top-cubic.png deleted file mode 100644 index 2c240e8ec0..0000000000 Binary files a/doc/images/fill/infill-top-cubic.png and /dev/null differ diff --git a/doc/images/fill/infill-top-grid.png b/doc/images/fill/infill-top-grid.png deleted file mode 100644 index 0582468d68..0000000000 Binary files a/doc/images/fill/infill-top-grid.png and /dev/null differ diff --git a/doc/images/fill/infill-top-gyroid.png b/doc/images/fill/infill-top-gyroid.png deleted file mode 100644 index 930f4e7de9..0000000000 Binary files a/doc/images/fill/infill-top-gyroid.png and /dev/null differ diff --git a/doc/images/fill/infill-top-hilbert-curve.png b/doc/images/fill/infill-top-hilbert-curve.png deleted file mode 100644 index 4c74acbe7e..0000000000 Binary files a/doc/images/fill/infill-top-hilbert-curve.png and /dev/null differ diff --git a/doc/images/fill/infill-top-honeycomb.png b/doc/images/fill/infill-top-honeycomb.png deleted file mode 100644 index 16face86f1..0000000000 Binary files a/doc/images/fill/infill-top-honeycomb.png and /dev/null differ diff --git a/doc/images/fill/infill-top-lateral-honeycomb.png b/doc/images/fill/infill-top-lateral-honeycomb.png deleted file mode 100644 index e557f81002..0000000000 Binary files a/doc/images/fill/infill-top-lateral-honeycomb.png and /dev/null differ diff --git a/doc/images/fill/infill-top-lateral-lattice.png b/doc/images/fill/infill-top-lateral-lattice.png deleted file mode 100644 index 01900ad1f1..0000000000 Binary files a/doc/images/fill/infill-top-lateral-lattice.png and /dev/null differ diff --git a/doc/images/fill/infill-top-lightning.png b/doc/images/fill/infill-top-lightning.png deleted file mode 100644 index 9892bbb5c7..0000000000 Binary files a/doc/images/fill/infill-top-lightning.png and /dev/null differ diff --git a/doc/images/fill/infill-top-line.png b/doc/images/fill/infill-top-line.png deleted file mode 100644 index d028a2e442..0000000000 Binary files a/doc/images/fill/infill-top-line.png and /dev/null differ diff --git a/doc/images/fill/infill-top-locked-zag.png b/doc/images/fill/infill-top-locked-zag.png deleted file mode 100644 index b9592186c5..0000000000 Binary files a/doc/images/fill/infill-top-locked-zag.png and /dev/null differ diff --git a/doc/images/fill/infill-top-monotonic-line.png b/doc/images/fill/infill-top-monotonic-line.png deleted file mode 100644 index e08eb51947..0000000000 Binary files a/doc/images/fill/infill-top-monotonic-line.png and /dev/null differ diff --git a/doc/images/fill/infill-top-monotonic.png b/doc/images/fill/infill-top-monotonic.png deleted file mode 100644 index f81928be80..0000000000 Binary files a/doc/images/fill/infill-top-monotonic.png and /dev/null differ diff --git a/doc/images/fill/infill-top-octagram-spiral.png b/doc/images/fill/infill-top-octagram-spiral.png deleted file mode 100644 index 51c76c400e..0000000000 Binary files a/doc/images/fill/infill-top-octagram-spiral.png and /dev/null differ diff --git a/doc/images/fill/infill-top-quarter-cubic.png b/doc/images/fill/infill-top-quarter-cubic.png deleted file mode 100644 index aae74aa1f3..0000000000 Binary files a/doc/images/fill/infill-top-quarter-cubic.png and /dev/null differ diff --git a/doc/images/fill/infill-top-rectilinear.png b/doc/images/fill/infill-top-rectilinear.png deleted file mode 100644 index 2f0b84e36c..0000000000 Binary files a/doc/images/fill/infill-top-rectilinear.png and /dev/null differ diff --git a/doc/images/fill/infill-top-support-cubic.png b/doc/images/fill/infill-top-support-cubic.png deleted file mode 100644 index 248276a56f..0000000000 Binary files a/doc/images/fill/infill-top-support-cubic.png and /dev/null differ diff --git a/doc/images/fill/infill-top-tpms-d.png b/doc/images/fill/infill-top-tpms-d.png deleted file mode 100644 index f86cae3058..0000000000 Binary files a/doc/images/fill/infill-top-tpms-d.png and /dev/null differ diff --git a/doc/images/fill/infill-top-tpms-fk.png b/doc/images/fill/infill-top-tpms-fk.png deleted file mode 100644 index b46b038915..0000000000 Binary files a/doc/images/fill/infill-top-tpms-fk.png and /dev/null differ diff --git a/doc/images/fill/infill-top-tri-hexagon.png b/doc/images/fill/infill-top-tri-hexagon.png deleted file mode 100644 index 2adfc583fc..0000000000 Binary files a/doc/images/fill/infill-top-tri-hexagon.png and /dev/null differ diff --git a/doc/images/fill/infill-top-triangles.png b/doc/images/fill/infill-top-triangles.png deleted file mode 100644 index 921b6db9eb..0000000000 Binary files a/doc/images/fill/infill-top-triangles.png and /dev/null differ diff --git a/doc/images/fill/infill-top-zig-zag.png b/doc/images/fill/infill-top-zig-zag.png deleted file mode 100644 index 3a9adb7ca7..0000000000 Binary files a/doc/images/fill/infill-top-zig-zag.png and /dev/null differ diff --git a/doc/images/ironing/ironing-all-solid-layers.png b/doc/images/ironing/ironing-all-solid-layers.png deleted file mode 100644 index 6cb6b87a35..0000000000 Binary files a/doc/images/ironing/ironing-all-solid-layers.png and /dev/null differ diff --git a/doc/images/ironing/ironing-inset.png b/doc/images/ironing/ironing-inset.png deleted file mode 100644 index d5d2f5a6b6..0000000000 Binary files a/doc/images/ironing/ironing-inset.png and /dev/null differ diff --git a/doc/images/ironing/ironing-top-surfaces.png b/doc/images/ironing/ironing-top-surfaces.png deleted file mode 100644 index 6fca662588..0000000000 Binary files a/doc/images/ironing/ironing-top-surfaces.png and /dev/null differ diff --git a/doc/images/ironing/ironing-topmost-surface.png b/doc/images/ironing/ironing-topmost-surface.png deleted file mode 100644 index 7abac1c28f..0000000000 Binary files a/doc/images/ironing/ironing-topmost-surface.png and /dev/null differ diff --git a/doc/images/ironing/ironing.png b/doc/images/ironing/ironing.png deleted file mode 100644 index 72523234c2..0000000000 Binary files a/doc/images/ironing/ironing.png and /dev/null differ diff --git a/doc/images/overhangs/extra-perimeters-on-overhangs.png b/doc/images/overhangs/extra-perimeters-on-overhangs.png deleted file mode 100644 index 2037dbb91b..0000000000 Binary files a/doc/images/overhangs/extra-perimeters-on-overhangs.png and /dev/null differ diff --git a/doc/images/overhangs/overhang-printable.png b/doc/images/overhangs/overhang-printable.png deleted file mode 100644 index 57b3c04bc6..0000000000 Binary files a/doc/images/overhangs/overhang-printable.png and /dev/null differ diff --git a/doc/images/overhangs/overhang.png b/doc/images/overhangs/overhang.png deleted file mode 100644 index 39cb573b5a..0000000000 Binary files a/doc/images/overhangs/overhang.png and /dev/null differ diff --git a/doc/images/pa/apa-expected-results.jpg b/doc/images/pa/apa-expected-results.jpg deleted file mode 100644 index 3d00d070fe..0000000000 Binary files a/doc/images/pa/apa-expected-results.jpg and /dev/null differ diff --git a/doc/images/pa/apa-expected-seam.jpg b/doc/images/pa/apa-expected-seam.jpg deleted file mode 100644 index 2be2970f1b..0000000000 Binary files a/doc/images/pa/apa-expected-seam.jpg and /dev/null differ diff --git a/doc/images/pa/apa-expected-solid-infill.jpg b/doc/images/pa/apa-expected-solid-infill.jpg deleted file mode 100644 index e0da3828ee..0000000000 Binary files a/doc/images/pa/apa-expected-solid-infill.jpg and /dev/null differ diff --git a/doc/images/pa/apa-identify-optimal.jpg b/doc/images/pa/apa-identify-optimal.jpg deleted file mode 100644 index 7795eb704d..0000000000 Binary files a/doc/images/pa/apa-identify-optimal.jpg and /dev/null differ diff --git a/doc/images/pa/apa-identify-too-high.jpg b/doc/images/pa/apa-identify-too-high.jpg deleted file mode 100644 index 234876a53a..0000000000 Binary files a/doc/images/pa/apa-identify-too-high.jpg and /dev/null differ diff --git a/doc/images/pa/apa-identify-too-low.jpg b/doc/images/pa/apa-identify-too-low.jpg deleted file mode 100644 index d822abef39..0000000000 Binary files a/doc/images/pa/apa-identify-too-low.jpg and /dev/null differ diff --git a/doc/images/pa/apa-material-config.png b/doc/images/pa/apa-material-config.png deleted file mode 100644 index 2dfcb894e7..0000000000 Binary files a/doc/images/pa/apa-material-config.png and /dev/null differ diff --git a/doc/images/pa/apa-profile.png b/doc/images/pa/apa-profile.png deleted file mode 100644 index a150316fb2..0000000000 Binary files a/doc/images/pa/apa-profile.png and /dev/null differ diff --git a/doc/images/pa/apa-setup-result-acceleration-jerk.png b/doc/images/pa/apa-setup-result-acceleration-jerk.png deleted file mode 100644 index 11cdb791cd..0000000000 Binary files a/doc/images/pa/apa-setup-result-acceleration-jerk.png and /dev/null differ diff --git a/doc/images/pa/apa-setup-result-speed.png b/doc/images/pa/apa-setup-result-speed.png deleted file mode 100644 index ea38410aa3..0000000000 Binary files a/doc/images/pa/apa-setup-result-speed.png and /dev/null differ diff --git a/doc/images/pa/apa-test.png b/doc/images/pa/apa-test.png deleted file mode 100644 index 23de4bb2e0..0000000000 Binary files a/doc/images/pa/apa-test.png and /dev/null differ diff --git a/doc/images/pa/apa-test210.png b/doc/images/pa/apa-test210.png deleted file mode 100644 index 2019ec45d2..0000000000 Binary files a/doc/images/pa/apa-test210.png and /dev/null differ diff --git a/doc/images/pa/apa-unexpected-solid-infill.jpg b/doc/images/pa/apa-unexpected-solid-infill.jpg deleted file mode 100644 index 7d1ee8290d..0000000000 Binary files a/doc/images/pa/apa-unexpected-solid-infill.jpg and /dev/null differ diff --git a/doc/images/pa/pa-line-0-016.png b/doc/images/pa/pa-line-0-016.png deleted file mode 100644 index 0a484fe0ad..0000000000 Binary files a/doc/images/pa/pa-line-0-016.png and /dev/null differ diff --git a/doc/images/pa/pa-line.gif b/doc/images/pa/pa-line.gif deleted file mode 100644 index aace86d431..0000000000 Binary files a/doc/images/pa/pa-line.gif and /dev/null differ diff --git a/doc/images/pa/pa-lines.png b/doc/images/pa/pa-lines.png deleted file mode 100644 index a4c2d08185..0000000000 Binary files a/doc/images/pa/pa-lines.png and /dev/null differ diff --git a/doc/images/pa/pa-pattern-batch-objects.png b/doc/images/pa/pa-pattern-batch-objects.png deleted file mode 100644 index d5d924d9e9..0000000000 Binary files a/doc/images/pa/pa-pattern-batch-objects.png and /dev/null differ diff --git a/doc/images/pa/pa-pattern-batch-plater.png b/doc/images/pa/pa-pattern-batch-plater.png deleted file mode 100644 index b96a4dc3a3..0000000000 Binary files a/doc/images/pa/pa-pattern-batch-plater.png and /dev/null differ diff --git a/doc/images/pa/pa-pattern-batch.png b/doc/images/pa/pa-pattern-batch.png deleted file mode 100644 index bdacef279b..0000000000 Binary files a/doc/images/pa/pa-pattern-batch.png and /dev/null differ diff --git a/doc/images/pa/pa-pattern-general.png b/doc/images/pa/pa-pattern-general.png deleted file mode 100644 index 23c0141f55..0000000000 Binary files a/doc/images/pa/pa-pattern-general.png and /dev/null differ diff --git a/doc/images/pa/pa-pattern-single.png b/doc/images/pa/pa-pattern-single.png deleted file mode 100644 index e84e85c3b3..0000000000 Binary files a/doc/images/pa/pa-pattern-single.png and /dev/null differ diff --git a/doc/images/pa/pa-tower-measure.jpg b/doc/images/pa/pa-tower-measure.jpg deleted file mode 100644 index 2577b0bd0e..0000000000 Binary files a/doc/images/pa/pa-tower-measure.jpg and /dev/null differ diff --git a/doc/images/pa/pa-tower.jpg b/doc/images/pa/pa-tower.jpg deleted file mode 100644 index 05f053888f..0000000000 Binary files a/doc/images/pa/pa-tower.jpg and /dev/null differ diff --git a/doc/images/pa/pressure_advance_enable.png b/doc/images/pa/pressure_advance_enable.png deleted file mode 100644 index 478061d9f6..0000000000 Binary files a/doc/images/pa/pressure_advance_enable.png and /dev/null differ diff --git a/doc/images/retraction/retraction_test.gif b/doc/images/retraction/retraction_test.gif deleted file mode 100644 index 4095982ab6..0000000000 Binary files a/doc/images/retraction/retraction_test.gif and /dev/null differ diff --git a/doc/images/retraction/retraction_test_menu.png b/doc/images/retraction/retraction_test_menu.png deleted file mode 100644 index dd2940de72..0000000000 Binary files a/doc/images/retraction/retraction_test_menu.png and /dev/null differ diff --git a/doc/images/retraction/retraction_test_print.jpg b/doc/images/retraction/retraction_test_print.jpg deleted file mode 100644 index 7b2b864443..0000000000 Binary files a/doc/images/retraction/retraction_test_print.jpg and /dev/null differ diff --git a/doc/images/seam/scarf-joint-seam.png b/doc/images/seam/scarf-joint-seam.png deleted file mode 100644 index 870dbd984b..0000000000 Binary files a/doc/images/seam/scarf-joint-seam.png and /dev/null differ diff --git a/doc/images/seam/seam-aligned-back.png b/doc/images/seam/seam-aligned-back.png deleted file mode 100644 index 119cd30abb..0000000000 Binary files a/doc/images/seam/seam-aligned-back.png and /dev/null differ diff --git a/doc/images/seam/seam-aligned.png b/doc/images/seam/seam-aligned.png deleted file mode 100644 index 3b138c1e8d..0000000000 Binary files a/doc/images/seam/seam-aligned.png and /dev/null differ diff --git a/doc/images/seam/seam-back.png b/doc/images/seam/seam-back.png deleted file mode 100644 index 4de06e1a7c..0000000000 Binary files a/doc/images/seam/seam-back.png and /dev/null differ diff --git a/doc/images/seam/seam-gap.gif b/doc/images/seam/seam-gap.gif deleted file mode 100644 index 058c4f6587..0000000000 Binary files a/doc/images/seam/seam-gap.gif and /dev/null differ diff --git a/doc/images/seam/seam-nearest.png b/doc/images/seam/seam-nearest.png deleted file mode 100644 index 06f36bf631..0000000000 Binary files a/doc/images/seam/seam-nearest.png and /dev/null differ diff --git a/doc/images/seam/seam-quality.jpg b/doc/images/seam/seam-quality.jpg deleted file mode 100644 index 3b539d3671..0000000000 Binary files a/doc/images/seam/seam-quality.jpg and /dev/null differ diff --git a/doc/images/seam/seam-random.png b/doc/images/seam/seam-random.png deleted file mode 100644 index d541d4b139..0000000000 Binary files a/doc/images/seam/seam-random.png and /dev/null differ diff --git a/doc/images/seam/seam-staggered-inner.gif b/doc/images/seam/seam-staggered-inner.gif deleted file mode 100644 index e389680b67..0000000000 Binary files a/doc/images/seam/seam-staggered-inner.gif and /dev/null differ diff --git a/doc/images/seam/seam-wipe-on-loop.png b/doc/images/seam/seam-wipe-on-loop.png deleted file mode 100644 index 6b10c051fb..0000000000 Binary files a/doc/images/seam/seam-wipe-on-loop.png and /dev/null differ diff --git a/doc/images/seam/seam-wipe-on-loops-options.png b/doc/images/seam/seam-wipe-on-loops-options.png deleted file mode 100644 index 3d6c900025..0000000000 Binary files a/doc/images/seam/seam-wipe-on-loops-options.png and /dev/null differ diff --git a/doc/images/skirt/skirt-combined.png b/doc/images/skirt/skirt-combined.png deleted file mode 100644 index b757073d20..0000000000 Binary files a/doc/images/skirt/skirt-combined.png and /dev/null differ diff --git a/doc/images/skirt/skirt-per-object.png b/doc/images/skirt/skirt-per-object.png deleted file mode 100644 index 696ff896bc..0000000000 Binary files a/doc/images/skirt/skirt-per-object.png and /dev/null differ diff --git a/doc/images/skirt/skirt.png b/doc/images/skirt/skirt.png deleted file mode 100644 index 33db35a34a..0000000000 Binary files a/doc/images/skirt/skirt.png and /dev/null differ diff --git a/doc/images/slicing-mode/close-holes.png b/doc/images/slicing-mode/close-holes.png deleted file mode 100644 index 3a8b080af4..0000000000 Binary files a/doc/images/slicing-mode/close-holes.png and /dev/null differ diff --git a/doc/images/speed/number-of-slow-layers.png b/doc/images/speed/number-of-slow-layers.png deleted file mode 100644 index 663f6470d2..0000000000 Binary files a/doc/images/speed/number-of-slow-layers.png and /dev/null differ diff --git a/doc/images/speed/slow-down-for-curled-perimeters.png b/doc/images/speed/slow-down-for-curled-perimeters.png deleted file mode 100644 index 5ab6684895..0000000000 Binary files a/doc/images/speed/slow-down-for-curled-perimeters.png and /dev/null differ diff --git a/doc/images/speed/travel-lines.png b/doc/images/speed/travel-lines.png deleted file mode 100644 index fe826d12e1..0000000000 Binary files a/doc/images/speed/travel-lines.png and /dev/null differ diff --git a/doc/images/top-bottom-shells/top-bottom-shells.png b/doc/images/top-bottom-shells/top-bottom-shells.png deleted file mode 100644 index 51f1097c0a..0000000000 Binary files a/doc/images/top-bottom-shells/top-bottom-shells.png and /dev/null differ diff --git a/doc/images/vfa/vfa_resonance_avoidance.png b/doc/images/vfa/vfa_resonance_avoidance.png deleted file mode 100644 index a50bde1c8d..0000000000 Binary files a/doc/images/vfa/vfa_resonance_avoidance.png and /dev/null differ diff --git a/doc/images/vfa/vfa_test_menu.png b/doc/images/vfa/vfa_test_menu.png deleted file mode 100644 index 40580284ab..0000000000 Binary files a/doc/images/vfa/vfa_test_menu.png and /dev/null differ diff --git a/doc/images/vfa/vfa_test_print.jpg b/doc/images/vfa/vfa_test_print.jpg deleted file mode 100644 index 0423a2d1b8..0000000000 Binary files a/doc/images/vfa/vfa_test_print.jpg and /dev/null differ diff --git a/doc/images/walls/walls-big-detect-thin-off-on.png b/doc/images/walls/walls-big-detect-thin-off-on.png deleted file mode 100644 index 61be7244da..0000000000 Binary files a/doc/images/walls/walls-big-detect-thin-off-on.png and /dev/null differ diff --git a/doc/images/walls/walls-small-detect-thin-off.png b/doc/images/walls/walls-small-detect-thin-off.png deleted file mode 100644 index 9d2722fa03..0000000000 Binary files a/doc/images/walls/walls-small-detect-thin-off.png and /dev/null differ diff --git a/doc/images/walls/walls-small-detect-thin-on.png b/doc/images/walls/walls-small-detect-thin-on.png deleted file mode 100644 index 70593d52e1..0000000000 Binary files a/doc/images/walls/walls-small-detect-thin-on.png and /dev/null differ diff --git a/doc/images/walls/walls.png b/doc/images/walls/walls.png deleted file mode 100644 index 7cdd527801..0000000000 Binary files a/doc/images/walls/walls.png and /dev/null differ diff --git a/doc/material_settings/pellet-flow-coefficient.md b/doc/material_settings/pellet-flow-coefficient.md deleted file mode 100644 index a3be0bda40..0000000000 --- a/doc/material_settings/pellet-flow-coefficient.md +++ /dev/null @@ -1,27 +0,0 @@ -# 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. - -The difference here is that where filaments have a filament_diameter that is used to calculate -the volume of filament ingested, pellets have a particular flow_coefficient that is empirically -devised for that particular pellet. - -pellet_flow_coefficient is basically a measure of the packing density of a particular pellet. -Shape, material and density of an individual pellet will determine the packing density and -the only thing that matters for 3d printing is how much of that pellet material is extruded by -one turn of whatever feeding mehcanism/gear your printer uses. You can emperically derive that -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. - -```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. diff --git a/doc/material_settings/semm.md b/doc/material_settings/semm.md deleted file mode 100644 index b0c84dacc0..0000000000 --- a/doc/material_settings/semm.md +++ /dev/null @@ -1,18 +0,0 @@ -# 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 - -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 - -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. diff --git a/doc/print_prepare/stl-transformation.md b/doc/print_prepare/stl-transformation.md deleted file mode 100644 index b4056179fb..0000000000 --- a/doc/print_prepare/stl-transformation.md +++ /dev/null @@ -1,56 +0,0 @@ -# STL Transformation - -OrcaSlicer primarily relies on STL meshes for slicing, but STL files may come with several limitations. - -Typically, STL files feature a low polygon count, which can adversely affect print quality. -In contrast, using STEP files offers a higher-quality mesh that more accurately represents the original design. However, be aware that both high-polygon STL and STEP files can increase slicing time. - -![stl-transformation-smooth-rough](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/STL-Transformation/stl-transformation-smooth-rough.png?raw=true) - -## Importing STEP files - -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](#dont-show-again) below. - -![stl-transformation](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/STL-Transformation/stl-transformation.png?raw=true) - -### 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. -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. - -![stl-transformation-params](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/STL-Transformation/stl-transformation-params.png?raw=true) - -- **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 - -Enabling this option will split the imported 3D file into separate objects. This is especially useful for adjusting individual object positions, tweaking print settings, or optimizing the model through simplification. - -![stl-transformation-split](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/STL-Transformation/stl-transformation-split.png?raw=true) - -#### Don't show again - -This option will hide the STL transformation dialog when opening a STEP file. -To restore the dialog, go to "Preferences" (Ctrl + P) > "Show the STEP mesh parameter setting dialog". - -![stl-transformation-enable](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/STL-Transformation/stl-transformation-enable.png?raw=true) - -## Simplify model - -When working with models that have a high polygon count, the Simplify Model option can significantly reduce complexity and help decrease slicing times. - -This function is especially useful for improving the performance of the slicer or achieving a specific faceted look for artistic or technical reasons. - -To access the Simplify Model option, right-click on the object to simplify in the "Prepare" menu. - -![simplify-menu](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/STL-Transformation/simplify-menu.png?raw=true) - -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. diff --git a/doc/print_settings/multimaterial/multimaterial_settings_advanced.md b/doc/print_settings/multimaterial/multimaterial_settings_advanced.md deleted file mode 100644 index 6ab96e960b..0000000000 --- a/doc/print_settings/multimaterial/multimaterial_settings_advanced.md +++ /dev/null @@ -1,47 +0,0 @@ -# Multimaterial Advanced - -- [Interlocking Beam](#interlocking-beam) -- [Interface Shells](#interface-shells) -- [Maximum Width of Segmented Region](#maximum-width-of-segmented-region) -- [Interlocking depth of Segmented Region](#interlocking-depth-of-segmented-region) -- [Interlocking Beam Width](#interlocking-beam-width) -- [Interlocking Direction](#interlocking-direction) -- [Interlocking Beam Layers](#interlocking-beam-layers) -- [Interlocking Depth](#interlocking-depth) -- [Interlocking Boundary Avoidance](#interlocking-boundary-avoidance) - -## Interlocking Beam - -Generate interlocking beam structure at the locations where different filaments touch. This improves the adhesion between filaments, especially models printed in different materials. - -## Interface Shells - -Force the generation of solid shells between adjacent materials/volumes. Useful for multi-extruder prints with translucent materials or manual soluble support material. - -## Maximum Width of Segmented Region - -Maximum width of a segmented region. Zero disables this feature. - -## Interlocking depth of Segmented Region - -Interlocking depth of a segmented region. It will be ignored if \"mmu_segmented_region_max_width\" is zero or if \"mmu_segmented_region_interlocking_depth\" is bigger than \"mmu_segmented_region_max_width\". Zero disables this feature. - -## Interlocking Beam Width - -The width of the interlocking structure beams. - -## Interlocking Direction - -Orientation of interlock beams. - -## Interlocking Beam Layers - -The height of the beams of the interlocking structure, measured in number of layers. Less layers is stronger, but more prone to defects. - -## Interlocking Depth - -The distance from the boundary between filaments to generate interlocking structure, measured in cells. Too few cells will result in poor adhesion. - -## Interlocking Boundary Avoidance - -The distance from the outside of a model where interlocking structures will not be generated, measured in cells. diff --git a/doc/print_settings/multimaterial/multimaterial_settings_filament_for_features.md b/doc/print_settings/multimaterial/multimaterial_settings_filament_for_features.md deleted file mode 100644 index c6366ffc90..0000000000 --- a/doc/print_settings/multimaterial/multimaterial_settings_filament_for_features.md +++ /dev/null @@ -1,19 +0,0 @@ -# Filament for Features - -This option is available only for Multi-Extruder printers. - -## Walls - -Filament to print walls. - -## Infill - -Filament to print internal sparse infill. - -## Solid infill - -Filament to print solid infill. - -## Wipe Tower - -The extruder to use when printing perimeter of the wipe tower. Set to 0 to use the one that is available (non-soluble would be preferred). diff --git a/doc/print_settings/multimaterial/multimaterial_settings_flush_options.md b/doc/print_settings/multimaterial/multimaterial_settings_flush_options.md deleted file mode 100644 index 534f399e4f..0000000000 --- a/doc/print_settings/multimaterial/multimaterial_settings_flush_options.md +++ /dev/null @@ -1,9 +0,0 @@ -# Flush Options - -## Flush into objects' infill - -Purging after filament change will be done inside objects' infills. This may lower the amount of waste and decrease the print time. If the walls are printed with transparent filament, the mixed color infill will be seen outside. It will not take effect, unless the prime tower is enabled. - -## Flush into objects' support - -Purging after filament change will be done inside objects' support. This may lower the amount of waste and decrease the print time. It will not take effect, unless the prime tower is enabled. diff --git a/doc/print_settings/multimaterial/multimaterial_settings_ooze_prevention.md b/doc/print_settings/multimaterial/multimaterial_settings_ooze_prevention.md deleted file mode 100644 index f12083b80a..0000000000 --- a/doc/print_settings/multimaterial/multimaterial_settings_ooze_prevention.md +++ /dev/null @@ -1,15 +0,0 @@ -# Ooze prevention - -This option will drop the temperature of the inactive extruders to prevent oozing. - -## Temperature variation - -Temperature difference to be applied when an extruder is not active. The value is not used when 'idle_temperature' in filament settings is set to non-zero value. - -## Preheat time - -To reduce the waiting time after tool change, Orca can preheat the next tool while the current tool is still in use. This setting specifies the time in seconds to preheat the next tool. Orca will insert a M104 command to preheat the tool in advance. - -## Preheat steps - -Insert multiple preheat commands (e.g. M104.1). Only useful for Prusa XL. For other printers, please set it to 1. diff --git a/doc/print_settings/multimaterial/multimaterial_settings_prime_tower.md b/doc/print_settings/multimaterial/multimaterial_settings_prime_tower.md deleted file mode 100644 index e35f93e285..0000000000 --- a/doc/print_settings/multimaterial/multimaterial_settings_prime_tower.md +++ /dev/null @@ -1,73 +0,0 @@ -# Prime Tower - -The wiping tower can be used to clean up the residue on the nozzle and " -"stabilize the chamber pressure inside the nozzle, in order to avoid " -"appearance defects when printing objects. - -## Width - -Width of the prime tower. - -## Brim width - -Width of the brim around the prime tower. - -## Wipe Tower Rotation Angle - -Wipe tower rotation angle with respect to x-axis. - -## Maximal bridging distance - -Maximal distance between supports on sparse infill sections. - -## Wipe tower purge lines spacing - -Spacing of purge lines on the wipe tower. - -## Extra flow for purge - -Extra flow used for the purging lines on the wipe tower. This makes the purging lines thicker or narrower than they normally would be. The spacing is adjusted automatically. - -## Maximum wipe tower print speed - -The maximum print speed when purging in the wipe tower and printing the wipe tower sparse layers. When purging, if the sparse infill speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead. -When printing the sparse layers, if the internal perimeter speed or calculated speed from the filament max volumetric speed is lower, the lowest will be used instead. -Increasing this speed may affect the tower's stability as well as increase the force with which the nozzle collides with any blobs that may have formed on the wipe tower. -Before increasing this parameter beyond the default of 90 mm/s, make sure your printer can reliably bridge at the increased speeds and that ooze when tool changing is well controlled. -For the wipe tower external perimeters the internal perimeter speed is used regardless of this setting. - -## Wall type - -Wipe tower outer wall type. - -### Rectangle - -The default wall type, a rectangle with fixed width and height. - -### Cone - -A cone with a fillet at the bottom to help stabilize the wipe tower. - -#### Stabilization cone apex angle - -Angle at the apex of the cone that is used to stabilize the wipe tower. Large angle means wider base. - -### Rib - -Adds four ribs to the tower wall for enhanced stability. - -#### Extra rib length - -Positive values can increase the size of the rib wall, while negative values can reduce the size. However, the size of the rib wall can not be smaller than that determined by the cleaning volume. - -#### Rib width - -Width of the rib wall. - -#### Fillet wall - -The wall of prime tower will fillet. - -## No sparse layers - -If enabled, the wipe tower will not be printed on layers with no tool changes. On layers with a tool change, extruder will travel downward to print the wipe tower. User is responsible for ensuring there is no collision with the print. diff --git a/doc/print_settings/others/others_settings_brim.md b/doc/print_settings/others/others_settings_brim.md deleted file mode 100644 index d92fd5d7dc..0000000000 --- a/doc/print_settings/others/others_settings_brim.md +++ /dev/null @@ -1,102 +0,0 @@ -# Brim - -Brim is a flat layer printed around a model's base to improve adhesion to the print bed. It is useful for models with small footprints or those prone to warping. - -![brim](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/brim/brim.png?raw=true) - -- [Type](#type) - - [Auto](#auto) - - [Painted](#painted) - - [Outer](#outer) - - [Inner](#inner) - - [Outer and Inner](#outer-and-inner) - - [Mouse Ears](#mouse-ears) - - [Ear max angle](#ear-max-angle) - - [Ear detection radius](#ear-detection-radius) -- [Width](#width) -- [Brim-Object Gap](#brim-object-gap) - -## Type - -Controls how the brim is generated on a model's outer and/or inner sides. - -### Auto - -The Auto brim feature computes an optimal brim width by evaluating material properties, part geometry, printing speed, and thermal characteristics. - -- Model geometry - - Uses the model's bounding box to determine dimensions. - - Height-to-area ratio: `height/(width²*length)`. -- Printing speed - - Higher maximum printing speeds generally increase the recommended brim width. -- Thermal length - - Defined as the diagonal of the model's base. - - Reference thermal lengths (material-specific): - - ABS, PA-CF, PET-CF: 100 - - PC: 40 - - TPU: 1000 -- Material adhesion coefficient - - Default: 1 - - PETG/PCTG: 2 - - TPU: 0.5 - -The computed brim width is capped at 20 mm and at 1.5× the thermal length. If the final width is under 5 mm and also less than 1.5× the thermal length, no brim will be generated (width = 0). - -### Painted - -Generates a brim only on areas that have been painted ![toolbar_brimears_dark](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/resources/images/toolbar_brimears_dark.svg?raw=true) in the Prepare tab . - -### Outer - -Creates a brim around the model's outer perimeter. -Easier to remove than an inner brim, but may affect the model's appearance if not removed cleanly. - -![brim-outer](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/brim/brim-outer.png?raw=true) - -### Inner - -Creates a brim around inner perimeters. -More difficult to remove and less effective than an outer brim and may obscure fine inner details, but it can hide the brim removal seam. - -![brim-inner](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/brim/brim-inner.png?raw=true) - -### Outer and Inner - -Creates a brim around both the outer and inner perimeters of the model. -This approach combines the **disadvantages** of both brim types, making it more difficult to remove while potentially obscuring fine details but improving overall adhesion. - -![brim-outer-inner](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/brim/brim-outer-inner.png?raw=true) - -> [!TIP] ->> Consider using a [raft](support_settings_raft) on complex models/materials. - -### Mouse Ears - -Mouse ears are small, local brim extensions (typically placed near corners and sharp features) that improve bed adhesion and reduce warping while using less material than a full brim. -The geometry analysis routine selects candidate locations based on the configured angle threshold and detection radius. - -![brim-mouse-ears](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/brim/brim-mouse-ears.png?raw=true) - -#### Ear max angle - -Angle threshold (degrees) used to decide where mouse ears may be placed: - -- 0° — disabled; no mouse ears are generated. -- Between 0° and 180° — ears are created at features with local angles sharper (smaller) than the threshold. -- 180° — ears are allowed on almost any non-straight feature. - -#### Ear detection radius - -The geometry will be decimated before detecting sharp angles. -This parameter indicates the minimum length of the deviation for the decimation. -0 to deactivate. - -## Width - -Distance between the model and the outermost brim line. -Increasing this value widens the brim, which can improve adhesion but increases material usage. - -## Brim-Object Gap - -Gap between the innermost brim line and the object. -Increasing the gap makes the brim easier to remove but reduces its adhesion benefit; very large gaps may eliminate contact and negate the brim's purpose. diff --git a/doc/print_settings/others/others_settings_fuzzy_skin.md b/doc/print_settings/others/others_settings_fuzzy_skin.md deleted file mode 100644 index 1af664214f..0000000000 --- a/doc/print_settings/others/others_settings_fuzzy_skin.md +++ /dev/null @@ -1,142 +0,0 @@ -# Fuzzy Skin - -Fuzzy skin randomly perturbs the wall path to produce a deliberately rough, matte appearance on the model surface. -These settings control where the effect is applied, how the noise is generated, and how aggressive the displacement or extrusion modulation is. - -Useful for creating a textures or hide surface imperfections but will increase print time and will affect dimensional accuracy. - -- [Fuzzy Skin Mode](#fuzzy-skin-mode) - - [Contour](#contour) - - [Contour and Hole](#contour-and-hole) - - [All Walls](#all-walls) - - [Fuzzy Skin Generator Mode](#fuzzy-skin-generator-mode) - - [Displacement](#displacement) - - [Extrusion](#extrusion) - - [Combined](#combined) -- [Noise Type](#noise-type) - - [Classic](#classic) - - [Perlin](#perlin) - - [Billow](#billow) - - [Ridged Multifractal](#ridged-multifractal) - - [Voronoi](#voronoi) -- [Point distance](#point-distance) -- [Skin thickness](#skin-thickness) -- [Skin feature size](#skin-feature-size) -- [Skin Noise Octaves](#skin-noise-octaves) -- [Skin Noise Persistence](#skin-noise-persistence) -- [Apply fuzzy skin to first layer](#apply-fuzzy-skin-to-first-layer) -- [Credits](#credits) - -## Fuzzy Skin Mode - -Choose which parts of the model receive the fuzzy-skin effect. - -### Contour - -Apply fuzzy skin only to the outermost contour (external perimeter) of the model. -Useful for creating a textured edge while keeping the inner surfaces smooth. - -### Contour and Hole - -Apply fuzzy skin to both the outer contour and interior holes. Useful when you want the rough texture to appear on negative features as well. - -### All Walls - -Apply fuzzy skin to every wall (external and internal). This gives the strongest overall textured appearance but will increase slicing and print time considerably. - -### Fuzzy Skin Generator Mode - -Select the underlying method used to produce the fuzzy effect. Each mode has different trade-offs for strength, speed and mechanical load. - -### Displacement - -![Fuzzy-skin-Displacement-mode](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Fuzzy-skin/Fuzzy-skin-Displacement-mode.png?raw=true) - -The classic method is when the pattern on the walls is achieved by shifting the printhead perpendicular to the wall. -It gives a predictable result, but decreases the strength entire shells and open the pores inside the walls. It also increases the mechanical stress on the kinematics of the printer. The speed of general printing is slowing down. - -### Extrusion - -![Fuzzy-skin-Extrusion-mode](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Fuzzy-skin/Fuzzy-skin-Extrusion-mode.png?raw=true) - -The fuzzy skin condition is obtained by changing the amount of extruded plastic as the print head moves linearly. There is no extra load on the kinematics, there is no decrease in the printing speed, the pores do not open, but the drawing turns out to be smoother by a factor of 2. It is suitable for creating "loose" walls to reduce internal stress into extruded plastic, or masking printing defects on the side walls - a matte effect. - -> [!CAUTION] -> The "Fuzzy skin thicknesses" parameter cannot be more than about 70%-125% (selected individually for different conditions) of the nozzle diameter! This is a complex condition that also depends on the height of the layer, and determines how thin the lines can be extruded. -> [Arachne](quality_settings_wall_generator#arachne) wall generator mode should also be enabled. - -### Combined - -![Fuzzy-skin-Combined-mode](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Fuzzy-skin/Fuzzy-skin-Combined-mode.png?raw=true) - -This is a combination of Displacement and Extrusion modes. The clarity of the drawing is the same in the classic mode, but the walls remain strong and tight. The load on the kinematics is 2 times lower. The printing speed is faster than in Displacement mode, but the elapsed time will still be longer. - -> [!WARNING] -> The limits on line thickness are the same as in the Extrusion mode. - -## Noise Type - -Select the noise algorithm used to generate the random offsets. Different noise types produce distinct visual textures. - -### Classic - -Simple uniform random noise. Produces a coarse, irregular texture. - -![Fuzzy-skin-classic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Fuzzy-skin/Fuzzy-skin-classic.png?raw=true) - -### Perlin - -[Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise) generates smooth, natural-looking variations with coherent structure. - -![Fuzzy-skin-perlin](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Fuzzy-skin/Fuzzy-skin-perlin.png?raw=true) - -### Billow - -Billow noise is similar to Perlin noise, but has a clumpier appearance. It can create more pronounced features and is often used for natural textures. - -![Fuzzy-skin-billow](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Fuzzy-skin/Fuzzy-skin-billow.png?raw=true) - -### Ridged Multifractal - -Creates sharp, jagged features and high-contrast detail. Useful for stone- or marble-like textures. - -![Fuzzy-skin-ridged-multifractal](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Fuzzy-skin/Fuzzy-skin-ridged-multifractal.png?raw=true) - -### Voronoi - -[Voronoi noise](https://en.wikipedia.org/wiki/Worley_noise) divides the surface into Voronoi cells and displaces each cell independently, creating a patchwork or cellular texture. - -![Fuzzy-skin-voronoi](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Fuzzy-skin/Fuzzy-skin-voronoi.png?raw=true) - -## Point distance - -Average distance between random sample points along each line segment. -Smaller values add more detail and increase computation; larger values produce coarser, faster results. - -## Skin thickness - -Maximum lateral width (in mm) over which points can be displaced. This defines how far the wall can be jittered. -Keep this below or near your outer wall line width and within nozzle/flow limits for reliable prints. - -## Skin feature size - -Base size of coherent noise features, in mm. Larger values yield bigger, more prominent structures; smaller values give fine-grained texture. - -## Skin Noise Octaves - -The number of octaves of coherent noise to use. Higher values increase the detail of the noise, but also increase computation time. - -## Skin Noise Persistence - -Controls how amplitude decays across octaves. Lower persistence results in smoother noise; higher persistence keeps finer-scale detail stronger. - -## Apply fuzzy skin to first layer - -Enable to apply fuzzy skin to the first layer. - -> [!CAUTION] -> Can impact bed adhesion and surface contact. - -## Credits - -- **Generator Mode author:** [@pi-squared-studio](https://github.com/pi-squared-studio). diff --git a/doc/print_settings/others/others_settings_g_code_output.md b/doc/print_settings/others/others_settings_g_code_output.md deleted file mode 100644 index d7a50a82bc..0000000000 --- a/doc/print_settings/others/others_settings_g_code_output.md +++ /dev/null @@ -1,52 +0,0 @@ -# G-Code Output - -These settings control how G-code is generated and formatted. They impact readability, file size, print behavior, and compatibility with firmware and post-processing tools. - -- [Reduce Infill Retraction](#reduce-infill-retraction) -- [Add line number](#add-line-number) -- [Verbose G-code](#verbose-g-code) -- [Label Objects](#label-objects) -- [Exclude Objects](#exclude-objects) -- [Filename Format](#filename-format) - -## Reduce Infill Retraction - -When enabled, the slicer will skip retractions for travel moves that occur entirely inside infill regions. This reduces the number of retractions and can speed up printing for complex models, but it may increase oozing or stringing inside infill. Slicing time may also increase slightly. - -**Recommended** when internal cosmetic quality is not critical and you want fewer retractions. - -## Add line number - -Prefix each G-code line with a sequential line number (N1, N2, ...). Useful for debugging or tools that expect numbered G-code. - -## Verbose G-code - -Include descriptive comments for G-code lines and blocks to make the file human-readable and easier to debug. -Verbose mode produces much larger files and may slow down SD-card printing on some printers. - -## Label Objects - -Insert comments that label moves with the object they belong to (object index or name). This is useful for integrations such as OctoPrint's Cancel Object plugin and for human inspection of the G-code. - -> [!IMPORTANT] -> Object labelling is not compatible with Single-Extruder Multi-Material configurations or with "Wipe into Object" / "Wipe into Infill" strategies. -> When those features are active, labels may be omitted. - -## Exclude Objects - -Add an `EXCLUDE OBJECT` marker or command in the exported G-code for objects flagged as excluded. This helps post-processors or custom scripts recognise excluded parts. - -## Filename Format - -Define a filename template for exported G-code. Templates may include tokens like project name, date, or other metadata to produce consistent and informative filenames on export. - -For example: - -```c++ -{input_filename_base}_{filament_type[initial_tool]}_{print_time}.gcode -``` - -Can be used to generate filenames like `OrcaCube_PLA_1h15m.gcode`. - -> [!TIP] -> Check [Built in placeholders variables](built-in-placeholders-variables) for available tokens and their meanings. diff --git a/doc/print_settings/others/others_settings_notes.md b/doc/print_settings/others/others_settings_notes.md deleted file mode 100644 index 59b9472ae4..0000000000 --- a/doc/print_settings/others/others_settings_notes.md +++ /dev/null @@ -1,11 +0,0 @@ -# Notes - -You can put your notes regarding the filament. -This will result in a commented note inside the G-code. - -```gcode -; notes: Sliced with OrcaSlicer, the best slicer. -``` - -> [!TIP] -> Check [Built in placeholders variables](built-in-placeholders-variables) for available tokens and their meanings. diff --git a/doc/print_settings/others/others_settings_post_processing_scripts.md b/doc/print_settings/others/others_settings_post_processing_scripts.md deleted file mode 100644 index d78af523fd..0000000000 --- a/doc/print_settings/others/others_settings_post_processing_scripts.md +++ /dev/null @@ -1,12 +0,0 @@ -# Post-Processing Scripts - -Here you can set up post-processing scripts that will be executed after slicing. -This allows you to modify the G-code output or perform additional tasks. - -Check the script's documentation for dependencies, available parameters and usage instructions. - -Example Python script: - -```shell -"C:\Your\Path\To\Python\python.exe" "C:\Your\Path\To\Script\pythonScript.py" -parameterToScript 1994; -``` diff --git a/doc/print_settings/others/others_settings_skirt.md b/doc/print_settings/others/others_settings_skirt.md deleted file mode 100644 index a3d80dbf9d..0000000000 --- a/doc/print_settings/others/others_settings_skirt.md +++ /dev/null @@ -1,79 +0,0 @@ -# Skirt - -A skirt is one or more additional perimeters printed around the model outline on the first layer(s). It helps prime the hotend, stabilise extrusion before the model starts, and can act as a basic wind/draft shield when built taller. - -- [Loops](#loops) -- [Type](#type) - - [Combined](#combined) - - [Per object](#per-object) -- [Minimum extrusion Length](#minimum-extrusion-length) -- [Distance](#distance) -- [Start point](#start-point) -- [Speed](#speed) -- [Height](#height) -- [Shield](#shield) -- [Single loop after first layer](#single-loop-after-first-layer) - -## Loops - -Number of skirt loops to print. -Usually 2 loops are recommended but increasing loops improve priming and give a larger buffer between the nozzle and the part, at the cost of extra filament and time. -Set to 0 to disable the skirt. - -![skirt](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/skirt/skirt.png?raw=true) - -## Type - -### Combined - -A single skirt that surrounds all objects on the bed. - Recommended for general use. - -![skirt-combined](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/skirt/skirt-combined.png?raw=true) - -### Per object - -Each object gets its own skirt printed separately. - Recommended when using [Print sequence by object](others_settings_special_mode#by-object). - -![skirt-per-object](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/skirt/skirt-per-object.png?raw=true) - -## Minimum extrusion Length - -Minimum filament extrusion length in mm when printing the skirt. Zero means this feature is disabled. -Using a non-zero value is useful if the printer is set up to print without a prime line. -Final number of loops is not taking into account while arranging or validating objects distance. Increase loop number in such case. - -## Distance - -Distance from skirt to brim or object. -Increasing this distance can help avoid collisions with brims or supports, but will increase the footprint of the skirt and filament usage. - -## Start point - -Start angle for the skirt relative to the object centre. 0° is the right-most position (along the +X axis), angles increase counter-clockwise. -Use this to control where the skirt begins to better align with part features or prime locations. - -## Speed - -Printing speed for the skirt in mm/s. Set to 0 to use the default first-layer extrusion speed. -Slower speeds give a more reliable prime; very fast skirt speeds may not adhere properly and come off, causing problems with the part. - -## Height - -Number of layers the skirt should be printed for. Usually 1 layer for priming. Increase the height if you want a taller draft shield effect. - -## Shield - -When enabled the skirt can be printed as a draft shield: a taller wall surrounding the part to help protect prints (especially ABS/ASA) from drafts and sudden temperature changes. -This is most useful for open-frame printers without an enclosure. - -- If set to follow the highest object, the shield will be as tall as the tallest printed model on the bed. -- Otherwise it will use the value specified in "Skirt height". - -> [!NOTE] -> With the draft shield active, the skirt will be printed at [skirt distance](#distance) from the object. Therefore, if brims are active it may intersect with them. To avoid this, increase the skirt distance value. - -## Single loop after first layer - -When enabled, limits the draft shield to a single wall after the first layer (i.e. only one loop is printed on subsequent shield layers). This reduces filament and print time but makes the shield less robust and more prone to warping or cracking. diff --git a/doc/print_settings/others/others_settings_special_mode.md b/doc/print_settings/others/others_settings_special_mode.md deleted file mode 100644 index 4a627f1c37..0000000000 --- a/doc/print_settings/others/others_settings_special_mode.md +++ /dev/null @@ -1,92 +0,0 @@ -# Special Mode - -These settings control advanced slicing and printing behaviours, such as how layers are processed, object printing order, and special effects like spiral vase mode. - -- [Slicing Mode](#slicing-mode) - - [Regular](#regular) - - [Close Holes](#close-holes) - - [Even Odd](#even-odd) -- [Print Sequence](#print-sequence) - - [By Layer](#by-layer) - - [Intra-layer order](#intra-layer-order) - - [By Object](#by-object) -- [Spiral vase](#spiral-vase) - - [Smooth Spiral](#smooth-spiral) - - [Max XY Smoothing](#max-xy-smoothing) - - [Spiral starting flow ratio](#spiral-starting-flow-ratio) - - [Spiral finishing flow ratio](#spiral-finishing-flow-ratio) -- [Timelapse](#timelapse) - -## Slicing Mode - -The slicing mode determines how the model is sliced into layers and how the G-code is generated. Different modes can be used to achieve various printing effects or to optimize the print process. - -### Regular - -This is the default slicing mode. It slices the model layer by layer, generating G-code for each layer. -Use this for most prints where no special modifications are needed. - -### Close Holes - -Use "Close holes" to automatically close all holes in the model during slicing in the XY plane. -This can help with models that have gaps or incomplete surfaces, ensuring a more solid print. - -![close-holes](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/slicing-mode/close-holes.png?raw=true) - -### Even Odd - -Use "Even-odd" for specific models like [3DLabPrint](https://3dlabprint.com) airplane models. This mode applies a special slicing algorithm that may be required for certain proprietary or experimental prints. - -## Print Sequence - -This setting controls how multiple objects are printed in a single print job. - -### By Layer - -This option prints all objects layer by layer, one layer at a time. This is efficient for multi-part prints as it minimises travel time between objects and can improve overall print speed. - -#### Intra-layer order - -Determines the print order within a single layer. - -- **Default**: Prints objects based on their position on the bed and travel distance to optimise movement. -- **As object list**: Prints objects in the order they appear in the object list, which can be useful for custom sequencing or debugging. - -### By Object - -This option prints each object completely before moving on to the next object. This is better for prints where objects need to cool separately or when using different materials per object, but it may increase total print time due to more travel moves. - -This setting requires more models separation and may not be suitable for all print scenarios. - -## Spiral vase - -Spiral vase mode transforms a solid model into a single-walled print with solid bottom layers, eliminating seams by continuously spiralling the outer contour. -This creates a smooth, vase-like appearance. - -### Smooth Spiral - -When enabled, Smooth Spiral smooths out X and Y moves as well, resulting in no visible seams even on non-vertical walls. -This produces the smoothest possible spiral print. - -> [!NOTE] -> If you are using absolute e distances, the smoothing may not work as expected. - -#### Max XY Smoothing - -Maximum distance to move points in XY to achieve a smooth spiral. If expressed as a percentage, it is calculated relative to the nozzle diameter. -Higher values allow more smoothing but may distort the model slightly. - -### Spiral starting flow ratio - -Sets the starting flow ratio when transitioning from the last bottom layer to the spiral. -Normally, the flow scales from 0% to 100% during the first loop, which can sometimes cause under-extrusion at the start. -Adjust this to fine-tune the transition and prevent issues. - -### Spiral finishing flow ratio - -Sets the finishing flow ratio when ending the spiral. Normally, the flow scales from 100% to 0% during the last loop, which can lead to under-extrusion at the end. -Use this to control the ending and ensure consistent extrusion. - -## Timelapse - -WIP... diff --git a/doc/print_settings/quality/quality_settings_bridging.md b/doc/print_settings/quality/quality_settings_bridging.md deleted file mode 100644 index 09f21dea6d..0000000000 --- a/doc/print_settings/quality/quality_settings_bridging.md +++ /dev/null @@ -1,71 +0,0 @@ -# Bridging - -"Bridging" is a 3D printing technique that allows you to print structures across gaps or voids without direct support underneath. OrcaSlicer provides several parameters to optimize bridge quality, minimizing filament sag and improving the appearance of top layers. - -- [Flow ratio](#flow-ratio) -- [Bridge density](#bridge-density) -- [Thick bridges](#thick-bridges) -- [Extra bridge layers](#extra-bridge-layers) -- [Filter out small internal bridges](#filter-out-small-internal-bridges) -- [Bridge Counterbore hole](#bridge-counterbore-hole) - -## Flow ratio - -Decrease this value slightly (for example 0.9) to reduce the amount of material for bridge, to improve sag. -The actual bridge flow used is calculated by multiplying this value with the filament flow ratio, and if set, the object's flow ratio. - -## Bridge density - -This value governs the thickness of the bridge layer. This is the first layer over sparse infill. Decrease this value slightly (for example 0.9) to improve surface quality over sparse infill. -The actual internal bridge flow used is calculated by multiplying this value with the [bridge flow ratio](#flow-ratio), the filament flow ratio, and if set, the object's flow ratio. - -## Thick bridges - -![thick-bridges](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/bridging/thick-bridges.png?raw=true) - -When enabled, thick bridges increase the reliability and strength of bridges, allowing you to span longer distances. However, this may result in a rougher surface finish. -Disabling this option can improve the visual quality of bridges, but is recommended only for shorter spans or when using large nozzle sizes. -It's recommended to enable this option for internal bridges, as it helps improve the reliability of internal bridges over sparse infill. - -## Extra bridge layers - -This option enables the generation of an extra bridge layer over bridges. - -Extra bridge layers help improve bridge appearance and reliability, as the solid infill is better supported. This is especially useful in fast printers, where the bridge and solid infill speeds vary greatly. The extra bridge layer results in reduced pillowing on top surfaces, as well as reduced separation of the external bridge layer from its surrounding perimeters. - -It is generally recommended to set this to at least **External bridge only**, unless specific issues with the sliced model are found. - -**Options:** - -- **Disabled** - does not generate second bridge layers. This is the default and is set for compatibility purposes. -- **External bridge only** - generates second bridge layers for external-facing bridges only. Please note that small bridges that are shorter or narrower than the set number of perimeters will be skipped as they would not benefit from a second bridge layer. If generated, the second bridge layer will be extruded parallel to the first bridge layer to reinforce the bridge strength. -- **Internal bridge only** - generates second bridge layers for internal bridges over sparse infill only. Please note that the internal bridges count towards the top shell layer count of your model. The second internal bridge layer will be extruded as close to perpendicular to the first as possible. If multiple regions in the same island, with varying bridge angles are present, the last region of that island will be selected as the angle reference. -- **Apply to all** - generates second bridge layers for both internal and external-facing bridges. - -## Filter out small internal bridges - -This option can help reduce pillowing on top surfaces in heavily slanted or curved models. - -By default, small internal bridges are filtered out and the internal solid infill is printed directly over the sparse infill. This works well in most cases, speeding up printing without too much compromise on top surface quality. - -However, in heavily slanted or curved models, especially where too low a sparse infill density is used, this may result in curling of the unsupported solid infill, causing pillowing. - -Enabling limited filtering or no filtering will print internal bridge layer over slightly unsupported internal solid infill. The options below control the sensitivity of the filtering, i.e. they control where internal bridges are created: - -- **Filter:** enables this option. This is the default behavior and works well in most cases. -- **Limited filtering:** creates internal bridges on heavily slanted surfaces while avoiding unnecessary bridges. This works well for most difficult models. -- **No filtering:** creates internal bridges on every potential internal overhang. This option is useful for heavily slanted top surface models; however, in most cases, it creates too many unnecessary bridges. - -## Bridge Counterbore hole - -When printing counterbore holes, the unsupported area can lead to sagging or poor surface quality. Also the perimeters of the counterbore hole may not be printed correctly, leading to gaps or weak points in the structure. - -This option creates bridges for counterbore holes, allowing them to be printed without support. -Available modes include: - -- **None:** No bridge is created. - ![bridge-counterbore-none](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/bridging/bridge-counterbore-none.png?raw=true) -- **Partially Bridged:** Only a part of the unsupported area will be bridged, creating a supporting layer for the next layer. - ![bridge-counterbore-partially](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/bridging/bridge-counterbore-partially.gif?raw=true) -- **Sacrificial Layer:** A full sacrificial bridge layer is created. This will close the counterbore hole, allowing the next layer to be printed without sagging. The sacrificial layer must be broken through after printing. - ![bridge-counterbore-sacrificial](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/bridging/bridge-counterbore-sacrificial.png?raw=true) diff --git a/doc/print_settings/quality/quality_settings_ironing.md b/doc/print_settings/quality/quality_settings_ironing.md deleted file mode 100644 index 5473411fb7..0000000000 --- a/doc/print_settings/quality/quality_settings_ironing.md +++ /dev/null @@ -1,69 +0,0 @@ -# Ironing - -Ironing is a process used to improve the surface finish of 3D prints by smoothing out the top layers. This is achieved by printing a second time at the same height, but with a very [low flow rate](#flow) and a specific [pattern](#pattern). The result is a smoother surface that can enhance the aesthetic quality of the print increasing print time. - -![ironing](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ironing/ironing.png?raw=true) - -> [!IMPORTANT] -> Ironing can cause filament to move very slowly through the hotend, which increases the risk of heat creep and potential clogging. Monitor your printer during ironing and ensure your hotend cooling is adequate to prevent jams. - -## Type - -This setting controls which layer being ironed. - -- **Top Surfaces**: All [top surfaces](strength_settings_top_bottom_shells) will be ironed. This is the most common setting and is used to smooth out the top layers of the print. - ![ironing-top-surfaces](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ironing/ironing-top-surfaces.png?raw=true) -- **Topmost Surface**: Only the last [top layer](strength_settings_top_bottom_shells) of the print will be ironed. This is useful for prints where only the last layer needs to be smoothed. - ![ironing-topmost-surface](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ironing/ironing-topmost-surface.png?raw=true) -- **All solid layers**: All solid layers, including [internal solid infill](strength_settings_infill#internal-solid-infill) and [top layers](strength_settings_top_bottom_shells), will be ironed. This can be useful for prints that require a very smooth finish on all solid surfaces but may increase print time significantly. - ![ironing-all-solid-layers](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ironing/ironing-all-solid-layers.png?raw=true) - -## Pattern - -The pattern that will be used when ironing. Usually, the best pattern is the one with the most efficient coverage of the surface. - -> [!TIP] -> See [Infill Patterns Wiki List](strength_settings_patterns) with **detailed specifications**, including their strengths and weaknesses. - - The ironing patterns are: - -- **[Concentric](strength_settings_patterns#concentric)** -- **[Rectilinear](strength_settings_patterns#rectilinear)** - -## Flow - -The amount of material to extrude during ironing. -This % is a percentage of the normal flow rate. A lower value will result in a smoother finish but may not cover the surface completely. A higher value may cover the surface better but can lead to over extrusion or rougher finish. - -A lower layer height may require higher flow due to less volumetric extrusion per distance. - -## Line spacing - -The distance between the lines of ironing. -It's recommended to set this value to be equal to or less than the nozzle diameter for optimal coverage and surface finish. - -## Inset - -The distance to keep from the edges, which can help prevent over-extrusion at the edges of the surface being ironed. - -![ironing-inset](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ironing/ironing-inset.png?raw=true) - -If this value is set to 0, the ironing toolpath will start directly at the perimeter edges without any inward offset. This means the [ironing pattern](#pattern) will extend all the way to the outer boundaries of the top surface being ironed. - -## Angle Offset - -The angle of ironing lines offset relative to the top surface solid infill direction. - -Commonly used ironing angle offsets are 0°, 45°, and 90° each producing a [different surface finish](https://github.com/OrcaSlicer/OrcaSlicer/issues/10834#issuecomment-3322628589) which will depend on your printer nozzle. - -## Fixed Angle - -Use a fixed absolute angle for ironing that is not offset from the top surface infill direction. This results in an ironing finish that does not have alternating line directions and may result in a more uniform surface finish and reduced tiger striping effect when reflecting light. - -Set the Ironing Angle Offset to an angle with optimal ironing angle offsets from all affected top surface solid infill directions. - -Suggested fixed ironing angles are 0° and 90° if you are using the default solid infill direction of 45°. - -## Speed - -See [Speed settings for other layers](speed_settings_other_layers_speed#ironing-speed) for more information about ironing speed. diff --git a/doc/print_settings/quality/quality_settings_layer_height.md b/doc/print_settings/quality/quality_settings_layer_height.md deleted file mode 100644 index 8a92e75f69..0000000000 --- a/doc/print_settings/quality/quality_settings_layer_height.md +++ /dev/null @@ -1,52 +0,0 @@ -# Layer Height - -Layer height defines the vertical thickness of each printed layer, playing a crucial role in both print quality and printing speed. - -Using smaller layer heights increases print time but results in: - -- Smoother surface finishes -- Less noticeable layer lines -- Enhanced detail on curves -- [Better performance on overhangs](#layer-height-overhangs-impacts) - -![layer-height-spheres](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/layer-height-spheres.png?raw=true) - -- [Quick Reference](#quick-reference) -- [Layer Height Guidelines](#layer-height-guidelines) -- [First Layer Height](#first-layer-height) -- [Layer Height Overhangs Impacts](#layer-height-overhangs-impacts) - -## Quick Reference - -| Nozzle Size | Min | Max | [First Layer Height](#first-layer-height) | -|-------------|--------|--------|-------------------------------------------| -| 0.2mm | 0.04mm | 0.16mm | 0.12mm | -| 0.3mm | 0.06mm | 0.24mm | 0.18mm | -| 0.4mm | 0.08mm | 0.32mm | 0.25mm | -| 0.5mm | 0.10mm | 0.40mm | 0.30mm | -| 0.6mm | 0.12mm | 0.48mm | 0.35mm | -| 0.8mm | 0.16mm | 0.64mm | 0.45mm | -| 1.0mm | 0.20mm | 0.80mm | 0.55mm | - -## Layer Height Guidelines - -Usually, the optimal range for layer height is between 20% and 80% of the nozzle diameter. - -- **Below 20%:** Flow inconsistencies and "fish scale" patterns may occur, especially at high speeds. -- **Over 80%:** Increased risk of layer adhesion issues and reduced print quality. - -## First Layer Height - -Controls the thickness of the initial layer. -A thicker first layer improves bed adhesion and compensates for build surface imperfections. - -**Recommended:** 0.25mm for 0.4mm nozzle (62.5% of nozzle diameter) -**Maximum:** 65% of nozzle diameter - -## Layer Height Overhangs Impacts - -Layer height directly affects [overhang angle](quality_settings_overhangs#maximum-angle) capability and quality. - -![layer-height](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/layer-height.svg?raw=true) - -**Smaller layer heights** enable steeper overhangs by reducing the unsupported distance between layers, while **larger layer heights** increase this gap, leading to more sagging and requiring support material at shallower angles. diff --git a/doc/print_settings/quality/quality_settings_line_width.md b/doc/print_settings/quality/quality_settings_line_width.md deleted file mode 100644 index 087716a046..0000000000 --- a/doc/print_settings/quality/quality_settings_line_width.md +++ /dev/null @@ -1,63 +0,0 @@ -# Line Width - -These settings define how wide each extruded line of filament will be. -Line width can be configured in two ways: - -- Fixed value in millimeters (mm) -- Percentage of the nozzle diameter - -> [!TIP] -> Using percentages allows the slicer to automatically adjust the line width when the nozzle size changes, helping maintain consistent print quality across different nozzle sizes. - -A good starting point is setting the line width to **100% of the nozzle diameter**. Values below this may lead to poor adhesion, while values above **150%** can cause **over-extrusion**, resulting in blobs or poor surface quality. -However, slightly wider lines generally improve **layer bonding** and **print strength**, especially for internal features like walls and infill. - -> [!NOTE] -> **100% line width will extrude slightly narrower than the nozzle**, but once squished onto the layer below, it flattens to match the nozzle size. -> You can read more on the flow math here: [Flow Math](https://manual.slic3r.org/advanced/flow-math). - -> [!IMPORTANT] -> This will match only if using the [**Classic** wall generator](quality_settings_wall_generator#classic). -> [**Arachne**](quality_settings_wall_generator#arachne) will adjust the line width dynamically based on the model's geometry, using this values as a reference. - -## Line Types - -In OrcaSlicer, you can assign different line widths to specific parts of the print. Each type can be customized: - -### Default - -Fallback value used when a specific line width is not set (set to `0`). - -### First Layer - -A wider first layer (with a higher [first layer height](quality_settings_layer_height#first-layer-height)) improves bed adhesion and compensates for uneven build surfaces. -First layer line width also overrides [Brim's](others_settings_brim) and [Skirt's](others_settings_skirt) line width. - -### Outer Wall - -Controls dimensional accuracy and surface finish. -Recommended: **105%–120%** of the nozzle diameter for clean overhangs and detail. - -### Inner Wall - -Can be set wider than the outer wall to enhance structural strength. -Typical value: **≥120%**. - -### Top Surface - -Affects the quality of visible top layers. -Recommended: **100%–105%** for smooth results without over-extrusion. - -### Sparse Infill - -Recommended to use a conservative value, typically around 115% to improve layer adhesion without getting near volumetric flow limitations. -If you need stronger infill, it's recommended to use [infill line multiplier](strength_settings_infill#fill-multiline) when possible. - -### Internal Solid Infill - -Used for solid top/bottom layers or [100% infill](strength_settings_infill#sparse-infill-density). -Recommended: **~110%** for good layer adhesion and visual quality. - -### Support - -Typically set to **100%** to balance material usage and functionality. Reducing it too much can lead to weak support structures that may not hold up during printing or break easily during removal leaving debris on the model. diff --git a/doc/print_settings/quality/quality_settings_overhangs.md b/doc/print_settings/quality/quality_settings_overhangs.md deleted file mode 100644 index 3251d4f393..0000000000 --- a/doc/print_settings/quality/quality_settings_overhangs.md +++ /dev/null @@ -1,81 +0,0 @@ -# Overhangs - -- [Detect overhang wall](#detect-overhang-wall) -- [Make overhang printable](#make-overhang-printable) - - [Maximum angle](#maximum-angle) - - [Hole area](#hole-area) -- [Extra perimeters on overhangs](#extra-perimeters-on-overhangs) -- [Reverse on even](#reverse-on-even) - - [Reverse internal only](#reverse-internal-only) - - [Reverse threshold](#reverse-threshold) - -## Detect overhang wall - -Detect the overhang percentage relative to line width and use different speed to print. -When detecting line width with 100% overhang, bridge options are used. - -![overhang](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/overhangs/overhang.png?raw=true) - -## Make overhang printable - -This setting will modify the geometry to print overhangs without support material. -Every overhang exceeding the [maximum angle](#maximum-angle) will be modified to be printable. - -### Maximum angle - -Maximum angle of overhangs to allow after making more steep overhangs printable. -90° will not change the model at all and allow any overhang, while 0 will replace all overhangs with conical material. - -![overhang-printable](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/overhangs/overhang-printable.png?raw=true) - -> [!TIP] -> Usually, a value between 45° and 60° works well for most printers and models. - -### Hole area - -Maximum area of a hole in the base of the model before it's filled by conical material. -A value of 0 will fill all the holes in the model base. - -## Extra perimeters on overhangs - -Create additional perimeter (overhang wall) paths over steep overhangs and areas where bridges cannot be anchored. - -![extra-perimeters-on-overhangs](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/overhangs/extra-perimeters-on-overhangs.png?raw=true) - -## Reverse on even - -Extrude perimeters in the reverse direction on even layers. This alternating pattern can drastically improve steep overhangs thanks to material squishing direction. - -This setting can also help reduce part warping due to the reduction of stresses as they are now distributed in alternating directions. Useful for warp prone material, like ABS/ASA, and also for elastic filaments, like TPU and Silk PLA. -It can also help reduce warping on floating regions over supports. - -For this setting to be the most effective, it is recommended to set the [Reverse Threshold](#reverse-threshold) to 0 so that all walls print in alternating directions on even layers irrespective of their overhang degree. -A disadvantage of this setting is that the outer wall may show a texture due to the alternating extrusion direction. - -![reverse-odd-texture](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/reverse-odd-texture.png?raw=true) - -> [!NOTE] -> Only be available if [Wall loop direction](quality_settings_wall_and_surfaces#wall-loop-direction) is set on **Auto** and [spiral vase mode](others_settings_special_mode#spiral-vase) is **disabled**. - -### Reverse internal only - -A simple way to reduce the texture on the outer wall is to only reverse the internal walls. -This will still provide almost all of the benefits of alternating extrusion direction on even layers (if using [inner/outer](quality_settings_wall_and_surfaces#innerouter)), but the outer wall will be printed in the same direction, resulting in a smoother surface finish. - -### Reverse threshold - -You can set a threshold for the overhang reversal to be considered useful. -Can be set as: - -- **0**: Disables the threshold, meaning that all walls will be reversed on even layers. -- **mm**: A fixed distance in millimeters. -- **%**: A percentage of the perimeter width. - -When using this setting, the walls will make the reversal texture in the layers where the overhang is above the threshold, and the rest of the walls will be printed in the normal direction. -This could result in uneven texture, sometimes considered worse than the full reversal texture, so it is recommended to use this setting only if you are sure that the overhang reversal will not be useful for your model. - -> [!NOTE] -> Only available when: -> - [Detect overhang wall](#detect-overhang-wall) is enabled -> - [Reverse internal only](#reverse-internal-only) is disabled -> If those conditions are not met, this setting will be hidden. diff --git a/doc/print_settings/quality/quality_settings_precision.md b/doc/print_settings/quality/quality_settings_precision.md deleted file mode 100644 index e9a2386356..0000000000 --- a/doc/print_settings/quality/quality_settings_precision.md +++ /dev/null @@ -1,139 +0,0 @@ -# Precision - -This section covers the settings that affect the precision of your prints. These settings can help you achieve better dimensional accuracy, reduce artifacts, and improve overall print quality. - -- [Slice gap closing radius](#slice-gap-closing-radius) -- [Resolution](#resolution) -- [Arc fitting](#arc-fitting) -- [X-Y Compensation](#x-y-compensation) -- [Elephant foot compensation](#elephant-foot-compensation) -- [Precise wall](#precise-wall) - - [Technical explanation](#technical-explanation) -- [Precise Z Height](#precise-z-height) -- [Polyholes](#polyholes) - -## Slice gap closing radius - -Cracks smaller than 2x gap closing radius are being filled during the triangle mesh slicing. -The gap closing operation may reduce the final print resolution, therefore it is advisable to keep the value reasonably low. - -## Resolution - -The G-code path is generated after simplifying the contour of models to avoid too many points and G-code lines. -Smaller value means higher resolution and more time to slice. If you are using big models in low processing power machines, you may want to increase this value to speed up the slicing process. - -## Arc fitting - -Enable this to get a G-code file which has [G2 and G3](https://marlinfw.org/docs/gcode/G002-G003.html) moves. - -After a model is sliced this feature will replace straight line segments with arcs where possible. This is particularly useful for curved surfaces, as it allows the printer to move in a more fluid manner, reducing the number of G-code commands and improving the overall print quality. - -This will result in a smaller G-code file for the same model, as arcs are used instead of many short line segments. This can improve print quality and reduce printing time, especially for curved surfaces. - -![arc-fitting](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/arc-fitting.svg?raw=true) - -> [!IMPORTANT] -> This option is only available for machines that support G2 and G3 commands and may impact in CPU usage on the printer. - -> [!NOTE] -> **Klipper machines**, this option is recommended to be disabled. -Klipper does not benefit from arc commands as these are split again into line segments by the firmware. This results in a reduction in surface quality as line segments are converted to arcs by the slicer and then back to line segments by the firmware. - -## X-Y Compensation - -Used to compensate external dimensions of the model. -With this option you can compensate material expansion or shrinkage, which can occur due to various factors such as the type of filament used, temperature fluctuations, or printer calibration issues. - -Follow the [Calibration Guide](https://github.com/OrcaSlicer/OrcaSlicer/wiki/Calibration) and [Filament Tolerance Calibration](https://github.com/OrcaSlicer/OrcaSlicer/wiki/tolerance-calib) to determine the correct value for your printer and filament combination. - -## Elephant foot compensation - -This feature compensates for the "elephant foot" effect, which occurs when the first few layers of a print are wider than the rest due: - -- Weight of the material above them. -- Thermal expansion of the material. -- Bed temperature being too high. -- Inaccurate bed height. - -![elephant-foot](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/elephant-foot.svg?raw=true) - -To mitigate this effect, OrcaSlicer allows you to specify a negative distance that will be applied to the first specified number of layers. This adjustment effectively reduces the width of the first few layers, helping to achieve a more accurate final print size. - -![elephant-foot-compensation](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/elephant-foot-compensation.png?raw=true) - -The compensation works as follows: -When the `current_layer` is <= `input_compensation_layers` -```c++ -compensation = input_compensation_distance - (input_compensation_distance / input_compensation_layers) × (current_layer - 1) -``` -According to the equation, we can establish the following rules: -- In the 1st layer, since it is layer `1 - 1 = 0`, compensation is 100%. -- The intermediate layers (between the first and input_compensation_layers) will have linear compensation. -- Layers above the specified amount will not be compensated. - -Assuming the compensation value is 0.25 mm: - -- Elephant Foot Compensation Layers = 1 : - - 1st layer: `0.25mm` compensation (100%) - - 2nd layer and beyond: No compensation (0 mm) -- Elephant Foot Compensation Layers = 2 : - - 1st layer: `0.25mm` compensation (100%) - - 2nd layer: `0.25 − (0.25 / 2) × (2 - 1) = 0.125mm` compensation (50%) - - 3rd layer and beyond: No compensation (0 mm). -- Elephant Foot Compensation Layers = 5 : - - 1st layer: `0.25mm` compensation (100%) - - 2nd layer: `0.25 − (0.25 / 5) × (2 - 1) = 0.2mm` compensation (80%) - - 3rd layer: `0.25 − (0.25 / 5) × (3 - 1) = 0.15mm` compensation (60%) - - 4th layer: `0.25 − (0.25 / 5) × (4 - 1) = 0.1mm` compensation (40%) - - 5th layer: `0.25 − (0.25 / 5) × (5 - 1) = 0.05mm` compensation (20%) - - 6th layer and beyond: No compensation (0 mm). - -## 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 when printing in [Inner Outer wall order](quality_settings_wall_and_surfaces#innerouter). - -### Technical explanation - -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](https://manual.slic3r.org/advanced/flow-math). - -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. - -- **Precise Wall Off** - - ![PreciseWallOff](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/PreciseWallOff.svg?raw=true) - -- **Precise Wall On** - - ![PreciseWallOn](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/PreciseWallOn.svg?raw=true) - -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 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. - -## Precise Z Height - -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](quality_settings_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. - -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). - -- **Precise Z Height Off** - - ![PreciseZOff](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/PreciseZOff.png?raw=true) - -- **Precise Z Height On** - - ![PreciseZOn](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/PreciseZOn.png?raw=true) - -## Polyholes - -A polyhole is a technique used in FFF 3D printing to improve the accuracy of circular holes. Instead of modeling a perfect circle, the hole is represented as a polygon with a reduced number of flat sides. This simplification forces the slicer to treat each segment as a straight line, which prints more reliably. By carefully choosing the number of sides and ensuring the polygon sits on the outer boundary of the hole, you can produce openings that more closely match the intended diameter. - -![PolyHoles](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Precision/PolyHoles.png?raw=true) - -- Original implementation: [SuperSlicer Polyholes](https://github.com/supermerill/SuperSlicer/wiki/Polyholes) -- Idea and mathematics: [Hydraraptor](https://hydraraptor.blogspot.com/2011/02/polyholes.html) diff --git a/doc/print_settings/quality/quality_settings_seam.md b/doc/print_settings/quality/quality_settings_seam.md deleted file mode 100644 index 4a77879da7..0000000000 --- a/doc/print_settings/quality/quality_settings_seam.md +++ /dev/null @@ -1,238 +0,0 @@ -# Seam - -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](#seam-position) - - [Aligned](#aligned) - - [Aligned Back](#aligned-back) - - [Nearest](#nearest) - - [Back](#back) - - [Random](#random) -- [Modifiers](#modifiers) - - [Staggered inner seams](#staggered-inner-seams) - - [Seam gap](#seam-gap) - - [Scarf joint seam](#scarf-joint-seam) - - [Scarf joint seam Type](#scarf-joint-seam-type) - - [Conditional scarf joint](#conditional-scarf-joint) - - [Scarf joint speed](#scarf-joint-speed) - - [Scarf joint height](#scarf-joint-height) - - [Scarf around entire wall](#scarf-around-entire-wall) - - [Scarf length](#scarf-length) - - [Scarf steps](#scarf-steps) - - [Scarf joint flow ratio](#scarf-joint-flow-ratio) - - [Scarf joint for inner walls](#scarf-joint-for-inner-walls) - - [Role based wipe speed](#role-based-wipe-speed) - - [Wipe speed](#wipe-speed) - - [Wipe on loop (inward movement)](#wipe-on-loop-inward-movement) - - [Wipe Before External](#wipe-before-external) -- [Tips](#tips) -- [Troubleshooting Seam Performance](#troubleshooting-seam-performance) - - [Troubleshooting the Start of a Seam](#troubleshooting-the-start-of-a-seam) - - [Troubleshooting the End of a Seam](#troubleshooting-the-end-of-a-seam) - - [The Role of Wall Ordering in Seam Appearance](#the-role-of-wall-ordering-in-seam-appearance) - -## Seam Position - -Controlling the position of seams can help improve the appearance and strength of the final print. - -Typically, [Aligned Back](#aligned-back), [Aligned](#aligned), or [Back](#back) work the best, especially in combination with seam painting. -However, as seams create weak points and slight surface "bulges" or "divots", [random](#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). - -### Aligned - -Will attempt to align the seam to a hidden internal facet of the model. - -![seam-aligned](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-aligned.png?raw=true) - -### Aligned Back - -Combines [Aligned](#aligned) and [Back](#back) strategies by prioritizing seam placement away from the front-facing side while still finding optimal hidden locations for other orientations. -This is particularly useful for directional models like sculptures or figurines that have a clear front view. -Unlike "Back" which always places seams at the rearmost position, "Aligned Back" uses intelligent positioning that avoids the front while maintaining sophisticated seam hiding capabilities. - -![seam-aligned-back](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-aligned-back.png?raw=true) - -### Nearest - -Will place the seam at the nearest starting point compared to where the nozzle stopped printing in the previous layer. -This is optimized for speed, low travel, and acceptable strength. - -![seam-nearest](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-nearest.png?raw=true) - -### Back - -This option places the seam on the back side (Min Y point in that layer) of the object, away from the view. It is useful for objects that will be displayed with a specific orientation. - -![seam-back](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-back.png?raw=true) - -### Random - -This option places the seam randomly across the object, which can help to distribute the seam points and increase the overall strength of the print. - -![seam-random](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-random.png?raw=true) - -## Modifiers - -### Staggered inner seams - -As the seam location forms a weak point in the print, 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. - -![seam-staggered-inner](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-staggered-inner.gif?raw=true) - -### Seam gap - -Controls the gap in mm or as a percentage of the nozzle size between the two ends of a loop starting and ending with a seam. - -- A larger gap will reduce the bulging seen at the seam. -- A smaller gap reduces the visual appearance of a seam. - - For a well-tuned printer with [pressure advance](pressure-advance-calib) and [filament retraction](retraction-calib), a value of **0-15%** is typically optimal. - -![seam-gap](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-gap.gif?raw=true) - -### Scarf joint seam - -Adjusts the extrusion flow rate at seam points to create a smooth overlap between the start and end of each loop, minimizing visible defects. - -![scarf-joint-seam](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/scarf-joint-seam.png?raw=true) - -Advantages: - -- Reduces visible z-seams -- Improves cosmetic quality of curved surfaces -- Can slightly improve part strength at seams by softening transitions - -Disadvantages: - -- May increase print time slightly -- Less effective on sharp corners and overhangs -- Requires tuning of parameters like length, speed, and flow for best results - -> [!NOTE] -> Read more here: [Better Seams - An OrcaSlicer Guide](https://www.printables.com/model/783313-better-seams-an-orca-slicer-guide-to-using-scarf-s). - -#### Scarf joint seam Type - -- **Contour:** Applies scarf seams exclusively to the outermost perimeter of the model. -- **Contour and hole:** Extends scarf seams to both the outer perimeter and the inner walls surrounding holes within the part. - -#### Conditional scarf joint - -Dynamically applies scarf joints only on smooth, curved perimeters where traditional seams would be visually prominent. Sharp corners will still use standard seams to maintain dimensional accuracy. - -#### Scarf joint speed - -This option sets the printing speed for scarf joints. -It is recommended to print scarf joints at a slow speed (less than 100 mm/s). -It's also advisable to enable [Extrusion rate smoothing](speed_settings_advanced) if the set speed varies significantly from the speed of the outer or inner walls. If the speed specified here is higher than the speed of the outer or inner walls, the printer will default to the slower of the two speeds. When specified as a percentage (e.g., 80%), the speed is calculated based on the respective outer or inner wall speed. The default value is set to 100%. - -#### Scarf joint height - -Defines the vertical offset for the start of the scarf ramp, specified either in millimeters or as a percentage of the current layer height. -A value of 0 means the scarf begins at the same height as the current layer and ramps up to the full layer height over the scarf length. -For example, on the second layer with a 0.2 mm layer height, setting this to 50% (0.1 mm) will start the scarf at 0.3 mm and ramp up to 0.4 mm by the end of the scarf length, while the rest of the lines print at 0.4 mm. -This setting helps create a smoother transition and can reduce visible seam artifacts. - -#### Scarf around entire wall - -If enabled, the scarf joint wraps around the full perimeter of the wall. Typically disabled, as this may increase print time without significant seam improvement. - -#### Scarf length - -Defines the horizontal length over which the scarf ramp transitions. A value of 0 disables the scarf joint. The default (e.g. 20 mm) generally offers smooth and effective blending. - -#### Scarf steps - -Minimum number of segments used to build the scarf transition. -More steps create a smoother gradient, but the default value (10) is sufficient in most cases. - -#### Scarf joint flow ratio - -Adjusts extrusion flow during scarf printing. A value of 100% applies standard flow. Lower values reduce flow but may introduce under-extrusion. -Recommended to keep at 100%. - -#### Scarf joint for inner walls - -When enabled, scarf joints are also applied to inner perimeters (e.g., holes). This has minimal visual impact and is usually left disabled unless inner seam quality is a priority. - -### Role based wipe speed - -Controls the speed of a wipe motion, i.e., how fast the nozzle will move over a printed area to "clean" it before traveling to another area of the model. -It is recommended to turn this option on, to ensure the nozzle performs the wipe motion with the same speed that the feature was printed with. - -### Wipe speed - -If role-based wipe speed is disabled, set this field to the absolute wipe speed or as a percentage over the travel speed. - -### Wipe on loop (inward movement) - -When finishing printing a "loop" (i.e., an extrusion that starts and ends at the same point), move the nozzle slightly inwards towards the part. That move aims to reduce seam unevenness by tucking in the end of the seam to the part. It also slightly cleans the nozzle before traveling to the next area of the model, reducing stringing. -This setting will use your printer/material Wipe Distance and retract amount before wipe values. - -![seam-wipe-on-loop](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-wipe-on-loop.png?raw=true) - -![seam-wipe-on-loops-options](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-wipe-on-loops-options.png?raw=true) - -### Wipe Before External - -To minimize the visibility of potential over-extrusion at the start of an external perimeter, the de-retraction move is performed slightly on the inside of the model and, hence, the start of the external perimeter. That way, any potential over-extrusion is hidden from the outside surface. - -This is useful when printing with [Outer/Inner](quality_settings_wall_and_surfaces#outerinner) or [Inner/Outer/Inner](quality_settings_wall_and_surfaces#innerouterinner) 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: - -1. **The same amount of material is extruded at the same point across layers** to ensure a consistent visual appearance at the start of a seam. -2. **The printer consistently stops extruding at the same point** across layers. - -However, due to mechanical and material tolerances, as well as the very nature of 3D printing with FFF, that is not always possible. Hopefully with some tuning you'll be able to achieve prints like this! - -![seam-quality](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/seam/seam-quality.jpg?raw=true) - -### 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. - -The key to a consistent start of a seam is to reduce the opportunity for ooze as much as possible. The good news is that this is mostly tunable by: - -1. **Ensure your pressure advance is calibrated correctly**. A too low pressure advance will result in the nozzle experiencing excess pressure at the end of the previous extrusion, which increases the chance of oozing when traveling. -2. **Make sure your travel speed is as fast as possible within your printer's limits**, and the travel acceleration is as high as practically possible, again within the printer's limits. This reduces the travel time between features, reducing oozing. -3. **Enable wipe before external perimeters** – this setting performs the de-retraction move inside the model, hence reducing the visual appearance of the "blob" if it does appear at the seam. -4. **Increase your travel distance threshold to be such that small travel moves do not trigger a retraction and de-retraction operation**, reducing extrusion variances caused by the extruder tolerances. 2-4mm is a good starting point as, if your PA is tuned correctly and your travel speed and acceleration are high, it is unlikely that the nozzle will ooze in the milliseconds it will take to travel to the new location. -5. **Enable retract on layer change**, to ensure the start of your layer is always performed under the same conditions – a de-pressurized nozzle with retracted filament. - -In addition, some toolhead systems are inherently better at seams compared to others. For example, high-flow nozzles with larger melt zones usually have poorer extrusion control as more of the material is in a molten state inside the nozzle. They tend to string more, ooze easier, and hence have poorer seam performance. Conversely, smaller melt zone nozzles have more of the filament solid in their heat zone, leading to more accurate extrusion control and better seam performance. - -So this is a trade-off between print speed and print quality. From experimental data, volcano-type nozzles tend to perform the worst at seams, followed by CHT-type nozzles, and finally regular flow nozzles. - -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. - -And the opposite is true too – **too high PA will result in under extrusion at the end of a print move**, shown as a larger-than-needed gap at the seam. Thankfully, tuning PA is straightforward, so run the calibration tests and pick the optimal value for your material, print speed, and acceleration. - -Furthermore, the printer mechanics have tolerances – the print head may be requested to stop at point XY but practically it cannot stop precisely at that point due to the limits of micro-stepping, belt tension, and toolhead rigidity. Here is where tuning the seam gap comes into effect. **A slightly larger seam gap will allow for more variance to be tolerated at the end of a print move before showing as a seam bulge**. Experiment with this value after you are certain your PA is tuned correctly and your travel speeds and retractions are set appropriately. - -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. diff --git a/doc/print_settings/quality/quality_settings_wall_and_surfaces.md b/doc/print_settings/quality/quality_settings_wall_and_surfaces.md deleted file mode 100644 index 5ff7f29431..0000000000 --- a/doc/print_settings/quality/quality_settings_wall_and_surfaces.md +++ /dev/null @@ -1,158 +0,0 @@ -# Wall and surfaces - -- [Walls printing order](#walls-printing-order) - - [Inner/Outer](#innerouter) - - [Inner/Outer/Inner](#innerouterinner) - - [Outer/Inner](#outerinner) - - [Print infill first](#print-infill-first) -- [Wall loop direction](#wall-loop-direction) -- [Surface flow ratio](#surface-flow-ratio) -- [Only one wall](#only-one-wall) - - [Threshold](#threshold) -- [Avoid crossing walls](#avoid-crossing-walls) - - [Max detour length](#max-detour-length) -- [Small area flow compensation](#small-area-flow-compensation) - - [Flow Compensation Model](#flow-compensation-model) - -## Walls printing order - -Print sequence of the internal (inner) and external (outer) walls. - -### Inner/Outer - -Use Inner/Outer for best overhangs. This is because the overhanging walls can adhere to a neighboring perimeter while printing. However, this option results in slightly reduced surface quality as the external perimeter is deformed by being squashed to the internal perimeter. - -![inner-outer](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/inner-outer.gif?raw=true) - -### Inner/Outer/Inner - -Use Inner/Outer/Inner for the best external surface finish and dimensional accuracy as the external wall is printed undisturbed from an internal perimeter. However, overhang performance will reduce as there is no internal perimeter to print the external wall against. This option requires a minimum of 3 walls to be effective as it prints the internal walls from the 3rd perimeter onwards first, then the external perimeter and, finally, the first internal perimeter. This option is recommended against the Outer/Inner option in most cases. - -![inner-outer-inner](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/inner-outer-inner.gif?raw=true) - -### Outer/Inner - -Use Outer/Inner for the same external wall quality and dimensional accuracy benefits of [Inner/Outer/Inner](#innerouterinner) option. However, the z seams will appear less consistent as the first extrusion of a new layer starts on a visible surface. - -![outer-inner](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/outer-inner.gif?raw=true) - -### Print infill first - -When this option is enabled, the [infill](strength_settings_infill) and [top/bottom shells](strength_settings_top_bottom_shells) are printed first, followed by the walls. This can be useful for some overhangs where the infill can support the walls. - -![infill-first](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/infill-first.gif?raw=true) - -**However**, the infill will slightly push out the printed walls where it is attached to them, resulting in a worse external surface finish. It can also cause the infill to shine through the external surfaces of the part. - -![infill-ghosting](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/infill-ghosting.png?raw=true) - -When using this option is recommended to use the [Precise Wall](quality_settings_precision#precise-wall), [Inner/Outer/Inner](#innerouterinner) wall printing order or reduce [Infill/Wall Overlap](strength_settings_infill#infill-wall-overlap) to avoid the infill pushing out the external wall. - -## Wall loop direction - -The direction which the wall loops are extruded when looking down from the top. -By default all walls are extruded in counter-clockwise, unless [Reverse on even](quality_settings_overhangs#reverse-on-even) is enabled. -Set this to any option other than Auto will force the wall direction regardless of the [Reverse on even](quality_settings_overhangs#reverse-on-even). - -> [!NOTE] -> This option will be disabled if spiral vase mode is enabled. - -## Surface flow ratio - -This factor affects the amount of material for [top or bottom solid infill](strength_settings_top_bottom_shells). You can decrease it slightly to have smooth surface finish. -The actual top or bottom surface flow used is calculated by multiplying this value by the filament flow ratio, and if set, the object's flow ratio. - -Other flow ratios, such as ratios for the first layer (does not affect brims and skirts), outer and inner walls, overhang perimeters, sparse infill, internal solid infill, gap fill, support, and support interfaces, can also be adjusted after enabling the "Set other flow ratios" option. - -> [!TIP] -> Before using a value other than 1, it is recommended to [calibrate the flow ratio](flow-rate-calib) to ensure that the flow ratio is set correctly for your printer and filament. - -## Only one wall - -Use only one wall on flat surfaces, to give more space to the [top infill pattern](strength_settings_top_bottom_shells#surface-pattern). -Specially useful in small features, like letters, where the top surface is very small and [concentric pattern](strength_settings_patterns#concentric) from walls would not cover it properly. - -![only-one-wall](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/only-one-wall.gif?raw=true) - -### Threshold - -If a top surface has to be printed and it's partially covered by another layer, it won't be considered at a top layer where its width is below this value. This can be useful to not let the 'one perimeter on top' trigger on surface that should be covered only by perimeters. -This value can be a mm or a % of the perimeter extrusion width. - -![only-one-wall-threshold](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/only-one-wall-threshold.png?raw=true) - -> [!WARNING] -> If enabled, artifacts can be created if you have some thin features on the next layer, like letters. Set this setting to 0 to remove these artifacts. - -## Avoid crossing walls - -This option instructs the slicer to avoid crossing perimeters (walls) during travel moves. -Instead of traveling directly through a wall, the print head will detour around it, which can significantly reduce surface defects and stringing. - -While this increases print time slightly, the improvement in print quality—especially with materials prone to stringing like **PETG** or **TPU**, often justifies the tradeoff. -Highly recommended for detailed or aesthetic prints. - -![avoid-crossing-walls](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/avoid-crossing-walls.png?raw=true) - -> [!NOTE] -> This feature is not compatible with Timelapse mode, as it can cause unexpected travel moves. - -### Max detour length - -Defines the maximum distance the printer is allowed to detour to avoid crossing a wall. -Can be set as: - -- **Absolute value in millimeters:** exactly how far the detour can extend (e.g., `5mm`). -- **Percentage** of the direct travel path (e.g., `50%`). -- **0** disables the **limit** and allows detours of **any length**. - -Use this setting to balance between print time and wall quality—longer detours mean fewer wall crossings but slower prints. - -## Small area flow compensation - -Enables adaptive flow control for small infill areas. -This feature helps address extrusion problems that often occur in small regions of solid infill, such as the tops of narrow letters or fine features. -In these cases, standard extrusion flow may be too much for the available space, leading to over-extrusion or poor surface quality. - -![flow-compensation-model](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/flow-compensation-model.png?raw=true) - -It works by dynamically adjusting the extrusion flow based on the length of the extrusion path, ensuring more precise material deposition in small spaces. - -This is a native implementation of @Alexander-T-Moss [Small Area Flow Compensation](https://github.com/Alexander-T-Moss/Small-Area-Flow-Comp). - -### Flow Compensation Model - -The model uses a list of Extrusion Length and Flow Correction Factor value pairs. Each pair defines how much flow should be used for a specific Extrusion Length. -For values between the listed points, the flow is calculated using linear interpolation. - -![flow-compensation-model-graph](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Wall-Order/flow-compensation-model-graph.png?raw=true) - -For example for the following model: - -| Extrusion Length | Flow Correction Factor | -|------------------|------------------------| -| 0 | 0 | -| 0.2 | 0.4444 | -| 0.4 | 0.6145 | -| 0.6 | 0.7059 | -| 0.8 | 0.7619 | -| 1.5 | 0.8571 | -| 2 | 0.8889 | -| 3 | 0.9231 | -| 5 | 0.952 | -| 10 | 1 | - -You should write it as: - -```c++ -0,0; -0.2,0.4444; -0.4,0.6145; -0.6,0.7059; -0.8,0.7619; -1.5,0.8571; -2,0.8889; -3,0.9231; -5,0.9520; -10,1; -``` diff --git a/doc/print_settings/quality/quality_settings_wall_generator.md b/doc/print_settings/quality/quality_settings_wall_generator.md deleted file mode 100644 index 52c76b86fe..0000000000 --- a/doc/print_settings/quality/quality_settings_wall_generator.md +++ /dev/null @@ -1,73 +0,0 @@ -# Wall Generator - -The Wall Generator defines how the outer and inner walls (perimeters) of the model are printed. - -- [Classic](#classic) -- [Arachne](#arachne) - - [Wall transitioning threshhold angle](#wall-transitioning-threshhold-angle) - - [Wall transitioning filter margin](#wall-transitioning-filter-margin) - - [Wall transitioning length](#wall-transitioning-length) - - [Wall distribution count](#wall-distribution-count) - - [Minimum wall width](#minimum-wall-width) - - [First layer minimum wall width](#first-layer-minimum-wall-width) - - [Minimum feature size](#minimum-feature-size) - - [Minimum wall length](#minimum-wall-length) - -## Classic - -The Classic wall generator is a simple and reliable method used in many slicers. It creates as many walls as possible (limited by [Wall Loops](strength_settings_walls#wall-loops)) by extruding along the model’s perimeter using the defined [Line Width](quality_settings_line_width). -This method does not vary extrusion width and is ideal for fast, predictable slicing. - -![wallgenerator-classic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/WallGenerator/wallgenerator-classic.png?raw=true) - -## Arachne - -The Arachne wall generator dynamically adjusts extrusion width to follow the shape of the model more closely. This allows better handling of thin features and smooth transitions between wall counts. - -![wallgenerator-arachne](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/WallGenerator/wallgenerator-arachne.png?raw=true) - -> [!NOTE] -> [A Framework for Adaptive Width Control of Dense Contour-Parallel Toolpaths in Fused Deposition Modeling](https://www.sciencedirect.com/science/article/pii/S0010448520301007?via%3Dihub) - -### Wall transitioning threshhold angle - -Defines the minimum angle (in degrees) required for the algorithm to create a transition between an even and odd number of walls. If a wedge shape exceeds this angle, no extra center wall will be added. Lowering this value reduces center walls but may cause under- or over-extrusion in sharp corners. - -### Wall transitioning filter margin - -Prevents rapid switching between more or fewer walls by defining a tolerance range around the minimum wall width. The extrusion width will stay within the range: - -```math -\left[ \text{Minimum Wall Width} - \text{Margin},\ 2 \times \text{Minimum Wall Width} + \text{Margin} \right] -``` - -Higher values reduce transitions, travel moves, and extrusion starts/stops, but may increase extrusion variability and introduce print quality issues. Expressed as a percentage of nozzle diameter. - -### Wall transitioning length - -Controls how far into the model the transition between wall counts extends. A lower value shortens or removes center walls, improving print time but potentially reducing coverage in tight areas. - -### Wall distribution count - -Sets how many walls (counted inward from the outer wall) are allowed to vary in width. Lower values constrain variation to inner walls, keeping outer walls consistent for best surface quality. - -### Minimum wall width - -Defines the narrowest wall that can be printed to represent thin features. If the feature is thinner than this value, the wall will match its width. Expressed as a percentage of nozzle diameter. - -#### First layer minimum wall width - -Specifies the minimum wall width for the first layer. It is recommended to match the nozzle diameter to improve adhesion and ensure stable base walls. - -### Minimum feature size - -Minimum width required for a model feature to be printed. Features below this value are skipped; features above it are widened to match the [Minimum Wall Width](#minimum-wall-width). Expressed as a percentage of nozzle diameter. - -### Minimum wall length - -Avoids very short or isolated wall segments that add unnecessary time. -Increasing this value removes short unconnected walls, **improving efficiency**. - -> [!NOTE] -> Top and bottom surfaces are not affected by this setting to avoid visual artifacts. -> Use the One Wall Threshold (in Advanced settings) to adjust how aggressively OrcaSlicer considers a region a top surface. This option only appears when this setting exceeds 0.5, or if single-wall top surfaces are enabled. diff --git a/doc/print_settings/speed/speed_settings_acceleration.md b/doc/print_settings/speed/speed_settings_acceleration.md deleted file mode 100644 index 1352a950c3..0000000000 --- a/doc/print_settings/speed/speed_settings_acceleration.md +++ /dev/null @@ -1,55 +0,0 @@ -# Acceleration - -Acceleration in 3D printing is usually set on the printer's firmware settings. -This setting will try to override the acceleration when [normal printing acceleration](#normal-printing) value is different than 0. -Orca will limit the acceleration to not exceed the acceleration set in the Printer's Motion Ability settings. - -- [Normal printing](#normal-printing) -- [Outer wall](#outer-wall) -- [Inner wall](#inner-wall) -- [Bridge](#bridge) -- [Sparse infill](#sparse-infill) -- [Internal solid infill](#internal-solid-infill) -- [Initial layer](#initial-layer) -- [Top surface](#top-surface) -- [Travel](#travel) - -## Normal printing - -The default acceleration of both normal printing and travel. - -> [!NOTE] -> If this value is set to 0, the acceleration will be set to the printer's default acceleration. - -## Outer wall - -Acceleration for [outer wall](speed_settings_other_layers_speed#outer-wall) printing. This is usually set to a lower value than normal printing to ensure better quality. - -## Inner wall - -Acceleration for [inner wall](speed_settings_other_layers_speed#inner-wall) printing. This is usually set to a higher value than outer wall printing to improve speed. - -## Bridge - -Acceleration of [bridges](speed_settings_overhang_speed#bridge-speed). If the value is expressed as a percentage (e.g. 50%), it will be calculated based on the outer wall acceleration. - -## Sparse infill - -Acceleration of [sparse infill](speed_settings_other_layers_speed#sparse-infill). If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration. - -## Internal solid infill - -Acceleration of [internal solid infill](speed_settings_other_layers_speed#internal-solid-infill). If the value is expressed as a percentage (e.g. 100%), it will be calculated based on the default acceleration. - -## Initial layer - -Acceleration of [initial layer](speed_settings_initial_layer_speed). Using a lower value can improve build plate adhesion. - -## Top surface - -Acceleration of [top surface infill](speed_settings_other_layers_speed#top-surface). Using a lower value may improve top surface quality. -Recommended to use a similar value to the [outer wall acceleration](#outer-wall). - -## Travel - -Acceleration of [travel](speed_settings_travel) moves. This is usually set to a higher value than normal printing to reduce travel time. diff --git a/doc/print_settings/speed/speed_settings_advanced.md b/doc/print_settings/speed/speed_settings_advanced.md deleted file mode 100644 index 1c1b2afb53..0000000000 --- a/doc/print_settings/speed/speed_settings_advanced.md +++ /dev/null @@ -1,193 +0,0 @@ -# Speed Advanced - Extrusion Rate Smoothing - -Extrusion Rate Smoothing (ERS) (pressure equalizer in PrusaSlicer) 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 feature is especially helpful when printing at high accelerations and large flow rates as the deviations are larger in these cases. - -![ers-intro](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ERS/ers-intro.png?raw=true) - -- [Theory](#theory) - - [Acceleration vs. Extrusion rate smoothing](#acceleration-vs-extrusion-rate-smoothing) - - [Pressure advance vs extrusion rate smoothing](#pressure-advance-vs-extrusion-rate-smoothing) -- [Finding the ideal Extrusion Rate smoothing value](#finding-the-ideal-extrusion-rate-smoothing-value) -- [A note for Bowden printers using Marlin without pressure advance](#a-note-for-bowden-printers-using-marlin-without-pressure-advance) -- [A note on ERS Segment length](#a-note-on-ers-segment-length) -- [Limitations](#limitations) -- [Credits](#credits) - -## 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. - -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 artifacts that show when the print speeds change suddenly. These artifacts are occurring because the extruder and firmware cannot perfectly adhere to the flow rates requested by the slicer, especially when the extrusion rate is changing rapidly. - -**The example below shows the artifact that is mitigated by ERS.** - -![ers-artefact](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ERS/ers-artefact.jpg?raw=true) - -The bulging visible above is due to the extruder not being able to respond fast enough to the required speed change when printing with high accelerations and high speeds and being 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/sec². **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 -3. **The acceleration profile of the printer** - higher accelerations mean higher pressure changes -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 G-code preview screen of OrcaSlicer. - -When a speed change is requested, the firmware look-ahead planner calculates the slowdown needed to achieve the target speed. The rate of slowdown is limited by the move's acceleration value. - -**Let's consider an example.** Assume printing an overhang wall with **2k external wall acceleration**, where the printer is called to slow down from **200mm/sec to 40mm/sec**. - -This deceleration move would happen over approximately 9.6mm. This is derived from the following equation: - -```math -d = \frac{v_f^2 - v_i^2}{2a} -``` - -Where: - -- vf = final speed. -- vi = initial speed. -- a = acceleration (in this case, it will be negative as it's a deceleration). -- d = distance. - -The time taken to decelerate to this new speed would be approx. 0.08 seconds, derived from the following equation: - -```math -t = \frac{v_f - v_i}{a} -``` - -A printer printing at 200mm/sec with a 0.42 line width and 0.16 layer height would be extruding plastic at approx. 12.16mm³/sec, as can also be seen from the below visual. - -![ers-printspeed](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/ERS/ers-printspeed.png?raw=true) - -When the printer is extruding at 40mm/sec with the same line width and layer height as above, the flow rate is 2.43mm³/sec. - -So what we are asking the extruder to do in this example is **slow down from 12.16mm³/sec flow to 2.43mm³/sec flow in 0.08 seconds** or an extrusion change rate of 121mm³/sec². - -**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.** - -**This value is also proportional to the line width - double the line width will result in double the extrusion rate change and vice versa. Same for layer height.** - -So, continuing with the worked example, a 2k acceleration produces an extrusion rate change ramp of 121mm³/sec². **Therefore, setting a value higher than this would not bring any benefit to the print quality as the motion system would slow down less aggressively based on its acceleration settings.** - -**Therefore, the acceleration values act as a meaningful upper limit to this setting.** An indicative set of values has been provided later in this page. - -### Pressure advance vs extrusion rate smoothing - -Then we need to consider pressure advance and smooth time as factors that influence extrusion rate. - -**Pressure Advance** adjusts the extruder's speed to account for the pressure changes inside the hot end's melt zone. When the print head moves and extrudes filament, there's a delay between the movement of the extruder gear and the plastic being extruded due to the compressibility of the molten plastic in the hot end. This delay can cause too much plastic to be extruded when the print head starts moving or not enough plastic when the print head stops, leading to issues like blobbing or under-extrusion. - -**Pressure Advance Smooth time** helps to mitigate potential negative effects on print quality due to the rapid changes in extruder flow rate, which are controlled by the Pressure Advance algorithm. This parameter essentially adds a smoothing effect to the adjustments made by Pressure Advance, aiming to prevent sharp or sudden changes in the extrusion rate. - -When Pressure Advance adjusts the extruder speed to compensate for the pressure build-up or reduction in the hot end, it can lead to abrupt changes in the flow rate. These abrupt changes can potentially cause issues like: - -1. Extruder motor skipping, -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 trade-off is extrusion accuracy. There is a deviation between the requested extrusion amount and the actual extrusion amount due to this smoothing. - -**1. Increasing Smooth Time:** Leads to more gradual changes in extrusion pressure. While this can reduce artifacts and stress on the extruder system, setting it too high may diminish the effectiveness of Pressure Advance, as the compensation becomes too delayed to counteract the pressure dynamics accurately. - -**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, **pressure 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 in [this Klipper forum post](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 the lower beneficial limit is through experimentation.** Print an object with sharp overhangs that are slowed down because of 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. - -**Below are some approximate ERS values for 0.42 line width and 0.16 layer height.** - -1. 30mm³/sec for 0.5k acceleration -2. 60.5mm³/sec for 1k acceleration -3. 121mm³/sec² for 2k acceleration -4. 242mm³/sec² for 4k acceleration - -**Below are some approximate ERS values for 0.42 line width and 0.20 layer height.** - -1. 38mm³/sec for 0.5k acceleration -2. 76mm³/sec for 1k acceleration -3. 150mm³/sec² for 2k acceleration -4. 300mm³/sec² for 4k acceleration - -**Below are some approximate ERS values for 0.45 line width and 0.16 layer height.** - -1. 32mm³/sec for 0.5k acceleration -2. 65mm³/sec for 1k acceleration -3. 129mm³/sec² for 2k acceleration -4. 260mm³/sec² for 4k acceleration - -**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-25mm³/sec for 0.5k acceleration -2. 35-50mm³/sec for 1k acceleration -3. 70-100mm³/sec² for 2k acceleration -4. 145-200mm³/sec² for 4k acceleration - -If you are printing with a 0.2 layer height, you can increase these values by 25% and similarly reduce if printing with lower. - -**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 experimentally 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 bulging on sharp overhangs where speed changes occur, like the hull of the Benchy, reduce this value by 10% and try again. - -If you're not noticing any artifacts, increase by 10%, but don't go over the maximum values recommended above because then this feature would have no effect on 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. - -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-10mm³/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 - -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 G-code that is too large, 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 OrcaSlicer 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 G-code 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 - -**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 behavior 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 slowdown, it cannot apply pre-emptive extrusion rate smoothing to the feature and instead, the changes are governed by the printer firmware exclusively. - -## Credits - -- **Original feature authors and creators:** The PrusaSlicer team, including [@bubnikv](https://github.com/bubnikv), [@hejllukas](https://github.com/hejllukas). -- **Enhanced by:** [@MGunlogson](https://github.com/MGunlogson), introducing the feature to external perimeters, enhancing it by taking into account travel, retraction and implementing near-contiguous extrusions pressure equalizer adjustments. -- **Ported to Orca:** [@igiannakas](https://github.com/igiannakas). -- **Enhanced by:** [@noisyfox](https://github.com/Noisyfox), per object pressure equalization and fixing calculation logic bugs. -- **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. diff --git a/doc/print_settings/speed/speed_settings_initial_layer_speed.md b/doc/print_settings/speed/speed_settings_initial_layer_speed.md deleted file mode 100644 index 05b9da9131..0000000000 --- a/doc/print_settings/speed/speed_settings_initial_layer_speed.md +++ /dev/null @@ -1,23 +0,0 @@ -# Initial layer speed - -Printing the first layer slower than the rest of the print is a widely recommended practice. This helps ensure strong adhesion to the print bed, reduces the chances of warping or curling at the edges, and allows better compensation for minor leveling inconsistencies. - -## Initial layer - -This setting determines the printing speed for the first layer, excluding [solid infill](strength_settings_top_bottom_shells) regions. It applies to the [outer/inner walls](strength_settings_walls), [sparse infill](strength_settings_infill) when [bottom layers](strength_settings_top_bottom_shells#shell-layers) is set to 0. -Adjusting this speed helps ensure proper adhesion and print quality for the initial layer. - -## Initial layer infill - -Defines the speed used specifically for [solid infill](strength_settings_top_bottom_shells#shell-layers) regions on the first layer. These areas require more precise and consistent extrusion to create a flat and stable surface for subsequent layers. Printing this section too fast may result in high internal stresses (increased risk of warping), poor layer uniformity, or adhesion failures. - -## Initial layer travel speed - -Sets the travel (non-printing movement) speed for the first layer. This doesn't affect the printing quality and can be set to a percentage of the [travel speed](speed_settings_travel). -Usually, this is set to 100% of the [travel speed](speed_settings_travel), but it can be reduced if you want to minimize vibrations or if your printer has issues with high-speed travel movements. - -## Number of slow layers - -Specifies how many of the first layers should be printed at a reduced speed. Instead of jumping straight to full speed after the first layer, the speed gradually increases in a linear fashion over this number of layers. This gradual ramp-up helps maintain adhesion and gives the print more stability in its early stages, especially on prints with a small contact area or materials prone to warping. - -![number-of-slow-layers](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/speed/number-of-slow-layers.png?raw=true) diff --git a/doc/print_settings/speed/speed_settings_jerk_xy.md b/doc/print_settings/speed/speed_settings_jerk_xy.md deleted file mode 100644 index 4fafcfe593..0000000000 --- a/doc/print_settings/speed/speed_settings_jerk_xy.md +++ /dev/null @@ -1,95 +0,0 @@ -# Jerk XY - -**Jerk** is the rate of change of acceleration and how quickly your printer can change between different accelerations. It controls direction changes and velocity transitions during movement. - -## Cornering Control Types - -- **Jerk**: Traditional method, sets a maximum speed for direction changes. - - Klipper: [Square corner velocity](https://www.klipper3d.org/Config_Reference.html#printer) - - RepRapFirmware: [Maximum instantaneous speed changes](https://docs.duet3d.com/User_manual/Reference/Gcodes#m566-set-allowable-instantaneous-speed-change) - - Marlin 2: [Classic Jerk](https://marlinfw.org/docs/configuration/configuration.html#jerk-) (deprecated in favor of [Junction Deviation](https://marlinfw.org/docs/configuration/configuration.html#junction-deviation-)) but can still be used. - - Marlin Legacy: [Classic Jerk](https://marlinfw.org/docs/configuration/configuration.html#jerk-). -- **[Junction Deviation](#junction-deviation)**: Modern method, calculates cornering speed based on acceleration and speed. - -> [!TIP] -> Calibrate your Cornering Values using the [Cornering Calibration guide](cornering-calib). - -## Key Effects - -- **Corner Control**: Lower values = smoother corners, better quality. Higher values = faster cornering, potential artifacts -- **Print Speed**: Higher jerk reduces deceleration at direction changes, increasing overall speed -- **Surface Quality**: Lower jerk minimizes vibrations and ringing, especially important for outer walls - -This setting overrides firmware jerk values when different motion types need specific settings. Orca limits jerk to not exceed the Printer's Motion Ability settings. - -> [!TIP] -> Jerk can work in conjunction with [Pressure Advance](pressure-advance-calib), [Adaptive Pressure Advance](adaptive-pressure-advance-calib), and [Input Shaping](input-shaping-calib) to optimize print quality and speed. -> It's recommended to follow the [calibration guide](calibration) order for best results. - -- [Cornering Control Types](#cornering-control-types) -- [Key Effects](#key-effects) -- [Default](#default) - - [Outer wall](#outer-wall) - - [Inner wall](#inner-wall) - - [Infill](#infill) - - [Top surface](#top-surface) - - [Initial layer](#initial-layer) - - [Travel](#travel) -- [Junction Deviation](#junction-deviation) -- [Useful links](#useful-links) - -## Default - -Default Jerk value. - -> [!NOTE] -> If this value is set to 0, the jerk will be set to the printer's default jerk. - -### Outer wall - -Jerk for outer wall printing. This is usually set to a lower value than normal printing to ensure better quality. - -### Inner wall - -Jerk for inner wall printing. This is usually set to a higher but still reasonable value than outer wall printing to improve speed. - -### Infill - -Jerk for infill printing. This is usually set to a value higher than inner wall printing to improve speed. - -### Top surface - -Jerk for top surface printing. This is usually set to a lower value than infill to ensure better quality. - -### Initial layer - -Jerk for initial layer printing. This is usually set to a lower value than top surface to improve adhesion. - -### Travel - -Jerk for travel printing. This is usually set to a higher value than infill to reduce travel time. - -## Junction Deviation - -Alternative to Jerk, Junction Deviation is the default method for controlling cornering speed in Marlin 2 printers. -Higher values result in more aggressive cornering speeds, while lower values produce smoother, more controlled cornering. - -> [!NOTE] -> Classic Jerk can still be used in Marlin 2, but it is deprecated in favor of Junction Deviation. -> If your printer uses Classic Jerk, you need to set your Junction Deviation to `0` to enable the use of Classic Jerk. - -This value will **only be overwritten** if it is lower than the Junction Deviation value set in Printer settings > Motion ability. If it is higher, the value configured in Motion ability will be used. - -```math -JD = 0,4 \cdot \frac{\text{Jerk}^2}{\text{Accel.}} -``` - -## Useful links - -- [Klipper Kinematics](https://www.klipper3d.org/Kinematics.html?h=accelerat#acceleration) -- [Marlin Junction Deviation](https://marlinfw.org/docs/configuration/configuration.html#junction-deviation-) -- [JD Explained and Visualized, by Paul Wanamaker](https://reprap.org/forum/read.php?1,739819) -- [Computing JD for Marlin Firmware](https://blog.kyneticcnc.com/2018/10/computing-junction-deviation-for-marlin.html) -- [Improving GRBL: Cornering Algorithm](https://onehossshay.wordpress.com/2011/09/24/improving_grbl_cornering_algorithm/) -- [Pressure Advance Calibration](pressure-advance-calib) -- [Adaptive Pressure Advance](adaptive-pressure-advance-calib) diff --git a/doc/print_settings/speed/speed_settings_other_layers_speed.md b/doc/print_settings/speed/speed_settings_other_layers_speed.md deleted file mode 100644 index c29277756d..0000000000 --- a/doc/print_settings/speed/speed_settings_other_layers_speed.md +++ /dev/null @@ -1,92 +0,0 @@ -# Other layers speed - -## Speed limitations - -> [!IMPORTANT] -> Every speed setting is limited by several parameters like: -> -> - [Maximum Volumetric Speed](volumetric-speed-calib) -> - Machine / Motion ability -> - [Acceleration](speed_settings_acceleration) -> - [Jerk settings](speed_settings_jerk_xy) - -- [Speed limitations](#speed-limitations) -- [Outer wall](#outer-wall) -- [Inner wall](#inner-wall) -- [Small perimeters](#small-perimeters) - - [Small perimeters threshold](#small-perimeters-threshold) -- [Sparse infill](#sparse-infill) -- [Internal solid infill](#internal-solid-infill) -- [Top surface](#top-surface) -- [Gap infill](#gap-infill) -- [Ironing speed](#ironing-speed) -- [Support](#support) -- [Support interface](#support-interface) - -## Outer wall - -Speed of outer wall which is outermost and visible. It's used to be slower than [inner wall speed](#inner-wall) to get better quality and good layer adhesion. -This setting is also limited by [Machine / Motion ability / Resonance avoidance speed settings](vfa-calib). - -## Inner wall - -Speed of inner wall which is printed faster than outer wall to reduce print time but is still recommended to be slower than the [maximum volumetric speed](volumetric-speed-calib) to ensure good layer adhesion and reduce material internal stresses. - -## Small perimeters - -Speed of outer wall with theoretical radius <= [small perimeters threshold](#small-perimeters-threshold). -Any shape (not only circles) will be considered as a small perimeter. - -If expressed as percentage (for example: 80%) it will be calculated on the [outer wall speed](#outer-wall). - -> [!NOTE] -> Zero will use [50%](https://github.com/OrcaSlicer/OrcaSlicer/blob/7d2a12aa3cbf2e7ca5d0523446bf1d1d4717f8d1/src/libslic3r/GCode.cpp#L4698) of [outer wall speed](#outer-wall). - -### Small perimeters threshold - -**Radius** in millimeters below which the speed of perimeters will be reduced to the [small perimeters speed](#small-perimeters). -To know the length of the perimeter, you can use the formula: - -```math -\frac{\text{Perimeter Length}}{2\pi} \leq \text{Threshold} -``` - -For example, if the threshold is set to 5 mm, then the perimeter length must be less than or equal to 31.4 mm (2 * π * 5 mm) to be considered a small perimeter. - -- A Circle with a diameter of 10 mm will have a perimeter length of approximately 31.4 mm, which is equal to the threshold, so it will be considered a small perimeter. -- A Cube of 10mm x 10mm will have a perimeter length of 40 mm, which is greater than the threshold, so it will not be considered a small perimeter. -- A Cube of 5mm x 5mm will have a perimeter length of 20 mm, which is less than the threshold, so it will be considered a small perimeter. - -> [!NOTE] -> Zero will disable [small perimeters speed](#small-perimeters) and will use the [outer wall speed](#outer-wall). - -## Sparse infill - -Speed of [sparse infill](strength_settings_infill) which is printed faster than solid infill to reduce print time. -In case you are using your [Infill Pattern](strength_settings_infill) as aesthetic feature, you may want to set it closer to the [outer wall speed](#outer-wall) to get better quality. - -## Internal solid infill - -Speed of internal solid infill, which fills the interior of the model with solid layers. -This is typically set faster than the [top surface speed](#top-surface) to optimize print time, while still ensuring adequate strength and layer adhesion. Adjusting this speed can help balance print quality and efficiency, especially for models requiring strong internal structures. -Solid infill is also considered when [infill % is set to 100%](strength_settings_infill#internal-solid-infill). - -## Top surface - -Speed of the [topmost solid layers](strength_settings_top_bottom_shells) of the print. This is usually set similar to the [outer wall speed](#outer-wall) to achieve a smoother and higher-quality finish on visible surfaces. Lower speeds help minimize surface defects and improve the appearance of the final printed object. - -## Gap infill - -Speed of [gap infill](strength_settings_infill#apply-gap-fill), which is used to fill small gaps or holes in the print. - -## Ironing speed - -[Ironing](quality_settings_ironing) and [Support Ironing](support_settings_ironing) speed, typically slower than the top surface speed to ensure a smooth finish. - -## Support - -Speed at which [support](support_settings_support) material is printed. Slower speeds help ensure that supports are stable and effective during the print process. - -## Support interface - -Speed for the support interface layers, which are the layers directly contacting the model. This is usually set even slower than the main [support speed](#support) to maximize surface quality where the support meets the model and to make support removal easier. diff --git a/doc/print_settings/speed/speed_settings_overhang_speed.md b/doc/print_settings/speed/speed_settings_overhang_speed.md deleted file mode 100644 index b2a23a0230..0000000000 --- a/doc/print_settings/speed/speed_settings_overhang_speed.md +++ /dev/null @@ -1,34 +0,0 @@ -# Overhang Speed - -- [Slow down for overhang](#slow-down-for-overhang) - - [Slow down for curled perimeters](#slow-down-for-curled-perimeters) - - [Speed](#speed) -- [Bridge speed](#bridge-speed) - -## Slow down for overhang - -Enable this option to slow printing down for different overhang degree. -This can help improve print quality and reduce issues like stringing or sagging. - -### Slow down for curled perimeters - -Enable this option to slow down printing in areas where perimeters may have curled upwards. For example, additional slowdown will be applied when printing overhangs on sharp corners like the front of the Benchy hull, reducing curling which compounds over multiple layers. - -![slow-down-for-curled-perimeters](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/speed/slow-down-for-curled-perimeters.png?raw=true) - -It is generally recommended to have this option switched on unless your printer cooling is powerful enough or the print speed slow enough that perimeter curling does not happen. If printing with a high external perimeter speed, this parameter may introduce slight artifacts when slowing down due to the large variance in print speeds. If you notice artifacts, ensure your pressure advance is tuned correctly. - -> [!NOTE] -> When this option is enabled, overhang perimeters are treated like overhangs, meaning the overhang speed is applied even if the overhanging perimeter is part of a bridge. For example, when the perimeters are 100% overhanging, with no wall supporting them from underneath, the 100% overhang speed will be applied. - -### Speed - -This is the speed for various overhang degrees. Overhang degrees are expressed as a percentage of [line width](quality_settings_line_width). - -> [!NOTE] -> 0 speed means no slowing down for the overhang degree range and wall speed is used. - -## Bridge speed - -Set speed for external and internal bridges. -It's usually recommended to increase internal bridge speed to reduce print time, while external bridge speed should be reduced to improve print quality. diff --git a/doc/print_settings/speed/speed_settings_travel.md b/doc/print_settings/speed/speed_settings_travel.md deleted file mode 100644 index f2f170f513..0000000000 --- a/doc/print_settings/speed/speed_settings_travel.md +++ /dev/null @@ -1,6 +0,0 @@ -# Travel - -![travel-lines](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/speed/travel-lines.png?raw=true) - -Travel speed is the speed at which the print head moves when not extruding filament. -This speed is typically faster than the printing speed, as there is no need to carefully place material. However, setting the travel speed too high can lead to issues such as missed steps or ringing artifacts. diff --git a/doc/print_settings/strength/infill-analysis/infill-analysis.7z b/doc/print_settings/strength/infill-analysis/infill-analysis.7z deleted file mode 100644 index 4d0404eb4f..0000000000 Binary files a/doc/print_settings/strength/infill-analysis/infill-analysis.7z and /dev/null differ diff --git a/doc/print_settings/strength/infill-analysis/infill_desc_calculator.xlsx b/doc/print_settings/strength/infill-analysis/infill_desc_calculator.xlsx deleted file mode 100644 index 8534aa34ec..0000000000 Binary files a/doc/print_settings/strength/infill-analysis/infill_desc_calculator.xlsx and /dev/null differ diff --git a/doc/print_settings/strength/strength_settings_advanced.md b/doc/print_settings/strength/strength_settings_advanced.md deleted file mode 100644 index e20e534fb5..0000000000 --- a/doc/print_settings/strength/strength_settings_advanced.md +++ /dev/null @@ -1,55 +0,0 @@ -# Strength Advanced - -- [Align infill direction to model](#align-infill-direction-to-model) -- [Bridge infill direction](#bridge-infill-direction) -- [Minimum sparse infill threshold](#minimum-sparse-infill-threshold) -- [Infill Combination](#infill-combination) - - [Max layer height](#max-layer-height) -- [Detect narrow internal solid infill](#detect-narrow-internal-solid-infill) -- [Ensure vertical shell thickness](#ensure-vertical-shell-thickness) - -## Align infill direction to model - -Aligns infill and surface fill directions to follow the model's orientation on the build plate. -When enabled, fill directions rotate with the model to maintain optimal characteristics. - -![fill-direction-to-model](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/fill-direction-to-model.png?raw=true) - -## Bridge infill direction - -Bridging angle override. -If left at zero, the bridging angle will be calculated automatically. Otherwise, the provided angle will be used for bridges. -Use 180° to represent a zero angle. - -## Minimum sparse infill threshold - -Sparse infill areas smaller than the threshold value are replaced by [internal solid infill](strength_settings_infill#internal-solid-infill). -This setting helps to ensure that small areas of sparse infill do not compromise the strength of the print. It is particularly useful for models with intricate designs or small features where sparse infill may not provide sufficient support. - -## Infill Combination - -Automatically combine [sparse infill](strength_settings_infill) of several layers so they print together and reduce print time and while increasing strength. While walls are still printed with the original [layer height](quality_settings_layer_height). - -![fill-combination](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/fill-combination.png?raw=true) - -### Max layer height - -Maximum layer height for the combined sparse infill. -Set it to 0 or 100% to use the nozzle diameter (for maximum reduction in print time), or to a value of ~80% to maximize sparse infill strength. - -The number of layers over which infill is combined is derived by dividing this value by the layer height and rounding down to the nearest decimal. - -Use either absolute mm values (e.g., 0.32mm for a 0.4mm nozzle) or percentages (e.g., 80%). This value must not be larger than the nozzle diameter. - -## Detect narrow internal solid infill - -This option auto-detects narrow internal solid infill areas. If enabled, the [concentric pattern](strength_settings_patterns#concentric) will be used in those areas to speed up printing. Otherwise, the [rectilinear pattern](strength_settings_patterns#rectilinear) will be used by default. - -## Ensure vertical shell thickness - -Add solid infill near sloping surfaces to guarantee the vertical shell thickness (top and bottom solid layers). - -- **None**: No solid infill will be added anywhere. **Caution:** Use this option carefully if your model has sloped surfaces. -- **Critical Only**: Avoid adding solid infill for walls. -- **Moderate**: Add solid infill for heavily sloping surfaces only. -- **All (default)**: Add solid infill for all suitable sloping surfaces. diff --git a/doc/print_settings/strength/strength_settings_infill.md b/doc/print_settings/strength/strength_settings_infill.md deleted file mode 100644 index b0bca4113c..0000000000 --- a/doc/print_settings/strength/strength_settings_infill.md +++ /dev/null @@ -1,217 +0,0 @@ -# Infill - -Infill is the internal structure of a 3D print, providing strength and support. It can be adjusted to balance material usage, print time, and part strength. - -- [Sparse infill density](#sparse-infill-density) -- [Fill Multiline](#fill-multiline) - - [Use cases](#use-cases) -- [Direction and Rotation](#direction-and-rotation) - - [Direction](#direction) - - [Rotation](#rotation) -- [Infill Wall Overlap](#infill-wall-overlap) -- [Apply gap fill](#apply-gap-fill) -- [Filter out tiny gaps](#filter-out-tiny-gaps) -- [Anchor](#anchor) -- [Internal Solid Infill](#internal-solid-infill) -- [Extra Solid Infill](#extra-solid-infill) - - [Interval Pattern](#interval-pattern) - - [Explicit Layer List](#explicit-layer-list) -- [Sparse Infill Pattern](#sparse-infill-pattern) -- [Credits](#credits) - -## Sparse infill density - -Infill density determines the amount of material used to fill the interior of a 3D print. It is usually expressed as a percentage, with 100% being completely solid. - -- Higher density increases - - Strength - - Material usage - - Print time. - -> [!NOTE] -> Density usually is calculated as a % of the total infill volume, not the total print volume. -> Nevertheless, **not all patterns interpret density the same way**, so the actual material usage may vary. -> You can see each pattern's material usage in the [Patterns section](strength_settings_patterns). - -## Fill Multiline - -This setting allows you to generate your selected [infill pattern](#sparse-infill-pattern) using multiple parallel lines while preserving both the defined [infill density](#sparse-infill-density) and the overall material usage. - -![infill-multiline-1-5](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-multiline-1-5.gif?raw=true) - -> [!NOTE] -> Orca's approach is different from other slicers that simply multiply the number of lines and material usage, generating a denser infill than expected. -> ->| Infill Density % | Infill Lines | Orca Density | Other Slicers Density | ->|--------------------|--------------|--------------|-----------------------| ->| 10% | 2 | 10% | 20% | ->| 25% | 2 | 25% | 50% | ->| 40% | 2 | 40% | 80% | ->| 10% | 3 | 10% | 30% | ->| 25% | 3 | 25% | 75% | ->| 40% | 3 | 40% | 120% * | ->| 10% | 5 | 10% | 50% | ->| 25% | 5 | 25% | 125% * | ->| 40% | 5 | 40% | 200% * | -> -> *Other slicers may limit the result to 100%. - -### Use cases - -- Increasing the number of lines (e.g., 2 or 3) can **improve part strength** and **print speed** without increasing material usage. -- **Fire-retardant applications:** Some flame-resistant materials (like PolyMax PC-FR) require a minimum printed wall/infill thickness—often 1.5–3 mm—to comply with standards. Since infill contributes to overall part thickness, using multiple lines helps achieve the necessary thickness without switching to a large nozzle or printing with 100% infill. This is especially useful for high-temperature materials like PC, which are prone to warping when fully solid. -- Creating **aesthetic** infill patterns (like [Grid](strength_settings_patterns#grid) or [Honeycomb](strength_settings_patterns#honeycomb)) with multiple line widths—without relying on CAD modeling or being limited to a single extrusion width. - -![infill-multiline-aesthetic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-multiline-aesthetic.gif?raw=true) - -> [!WARNING] -> For self intersecting infills (e.g. [Cubic](strength_settings_patterns#cubic), [Grid](strength_settings_patterns#grid)) multiline count greater than 3 may cause layer shift, extruder clog or other issues due to overlapping of lines on intersection points. -> -> ![infill-multiline-overlapping](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-multiline-overlapping.gif?raw=true) - -## Direction and Rotation - -> [!TIP] -> You can use [Template Metalanguage for infill rotation](strength_settings_infill_rotation_template_metalanguage) to create more complex patterns. - -### Direction - -Controls the direction of the infill lines to optimize or strengthen the print. - -![fill-direction](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/fill-direction.png?raw=true) - -### Rotation - -This parameter adds a rotation to the sparse infill direction for each layer according to the specified template. -The template is a comma-separated list of angles in degrees. - -For example: - -```c++ -0,90 -``` - -![fill-rotation](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/fill-rotation.png?raw=true) - -The first layer uses 0°, the second uses 90°, and the pattern repeats for subsequent layers. - -Other examples: - -```c++ -0,45,90 -``` - -```c++ -0,60,120,180 -``` - -> [!NOTE] -> If there are more layers than angles, the sequence repeats. - -> [!IMPORTANT] -> Not all sparse [patterns](strength_settings_patterns) support rotation. - -## Infill Wall Overlap - -Infill area is enlarged slightly to overlap with wall for better bonding. The percentage value is relative to line width of sparse infill. Set this value to ~10-15% to minimize potential over extrusion and accumulation of material resulting in rough surfaces. - -- **Infill Wall Overlap Off** - -![InfillWallOverlapOff](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/InfillWallOverlapOff.svg?raw=true) - -- **Infill Wall Overlap On** - -![InfillWallOverlapOn](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/InfillWallOverlapOn.svg?raw=true) - -## Apply gap fill - -Enables gap fill for the selected solid surfaces. -The minimum gap length that will be filled can be controlled from the filter out tiny gaps option. - -1. **Everywhere:** Applies gap fill to top, bottom and internal solid surfaces for maximum strength. -2. **Top and Bottom surfaces:** Applies gap fill to top and bottom surfaces only, balancing print speed, reducing potential over extrusion in the solid infill and making sure the top and bottom surfaces have no pinhole gaps. -3. **Nowhere:** Disables gap fill for all solid infill areas. - -Note that if using the [classic perimeter generator](quality_settings_wall_generator#classic), gap fill may also be generated between perimeters, if a full width line cannot fit between them. -That perimeter gap fill is not controlled by this setting. - -If you would like all gap fill, including the classic perimeter generated one, removed, set the filter out tiny gaps value to a large number, like 999999. - -However this is not advised, as gap fill between perimeters is contributing to the model's strength. For models where excessive gap fill is generated between perimeters, a better option would be to switch to the [arachne wall generator](quality_settings_wall_generator#arachne) and use this option to control whether the cosmetic top and bottom surface gap fill is generated. - -## Filter out tiny gaps - -Don't print gap fill with a length is smaller than the threshold specified (in mm). -This setting applies to top, bottom and solid infill and, if using the [classic perimeter generator](quality_settings_wall_generator#classic), to wall gap fill. - -## Anchor - -Connect an infill line to an internal perimeter with a short segment of an additional perimeter. If expressed as percentage (example: 15%) it is calculated over infill extrusion width. -OrcaSlicer tries to connect two close infill lines to a short perimeter segment. If no such perimeter segment shorter than this parameter is found, the infill line is connected to a perimeter segment at just one side and the length of the perimeter segment taken is limited to infill_anchor, but no longer than this parameter. If set to 0, the old algorithm for infill connection will be used, it should create the same result as with 1000 & 0. - -- **Anchor Off** - -![InfillAnchorOff](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/InfillAnchorOff.png?raw=true) - -- **Anchor On** - -![InfillAnchorOn](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/InfillAnchorOn.png?raw=true) -## Internal Solid Infill - -Line pattern of internal solid infill. If the [detect narrow internal solid infill](strength_settings_advanced#detect-narrow-internal-solid-infill) be enabled, the [concentric pattern](strength_settings_patterns#concentric) will be used for the small area. - - -## Extra Solid Infill - -Insert extra solid infills at specific layers to add strength at critical points in your print. This feature allows you to strategically reinforce your part without changing the overall sparse infill density. - -![extra-solid-infill](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/extra-solid-infill.gif?raw=true) - -The pattern supports two formats: - -### Interval Pattern -- **Simple interval**: `N` - Insert 1 solid layer every N layers, equal to `N#1` -- **Multiple layers**: `N#K` - Insert K consecutive solid layers every N layers -- **Optional K**: `N#` - Shorthand for `N#1` - -Examples: -``` -5 or 5#1 # Insert 1 solid layer every 5 layers -5# # Same as 5#1 -10#2 # Insert 2 consecutive solid layers every 10 layers -``` - -### Explicit Layer List -Specify exact layer numbers (1-based) using comma-separated values. Each entry may be a single layer `N` or a range `N#K` to insert K consecutive solid layers starting at layer N: - -``` -1,7,9 # Insert solid layers at layers 1, 7, and 9 -5,15,25 # Insert solid layers at layers 5, 15, and 25 -5,9#2,18 # Insert at 5; at 9 and 10 (because #2); and at 18 -``` - -> [!NOTE] -> - Layer numbers are 1-based (first layer is layer 1) -> - `#K` is optional in both interval and explicit list entries (`N#` equals `N#1`) -> - Solid layers are inserted in addition to the normal sparse infill pattern - -> [!TIP] -> Use this feature to: -> - Add strength at stress concentration points -> - Reinforce mounting holes or attachment points -> - Create internal structure for functional parts -> - Add periodic reinforcement for tall prints -> - Insert a single solid layer at a specific height by using an explicit list with a leading 0, which will be ignored because layer indices are 1-based. Example: `0,15` inserts a solid layer only at layer 15. - -> [!WARNING] -> Layers that include solid infill can take significantly longer than surrounding layers. This time differential may lead to z-banding-like bulges. Consider adjusting cooling or speeds if you observe artifacts. - -## Sparse Infill Pattern - -> [!TIP] -> See [Infill Patterns Wiki List](strength_settings_patterns) with **detailed specifications**, including their strengths and weaknesses. - -## Credits - -- **[Fill Multiline](#fill-multiline) implementation** - [@RF47](https://github.com/RF47) -- **Wiki page:** [IanAlexis](https://github.com/IanAlexis). diff --git a/doc/print_settings/strength/strength_settings_infill_rotation_template_metalanguage.md b/doc/print_settings/strength/strength_settings_infill_rotation_template_metalanguage.md deleted file mode 100644 index 7ecc608652..0000000000 --- a/doc/print_settings/strength/strength_settings_infill_rotation_template_metalanguage.md +++ /dev/null @@ -1,211 +0,0 @@ -# Infill rotation template metalanguage - -This metalanguage provides a way to define the [direction and rotation](strength_settings_infill#direction-and-rotation) of [patterns](strength_settings_patterns) in 3D printing. - -- [Basic instructions](#basic-instructions) - - [Quick examples](#quick-examples) - - [Defined angle](#defined-angle) - - [Runtime instructions](#runtime-instructions) - - [Joint sign](#joint-sign) - - [Counting](#counting) - - [Length modifier](#length-modifier) -- [Description of instructions and examples](#description-of-instructions-and-examples) - - [Simple absolute instructions](#simple-absolute-instructions) - - [Relative instructions](#relative-instructions) - - [Repetitive, adjusting and one-time instructions](#repetitive-adjusting-and-one-time-instructions) - - [Range instructions](#range-instructions) - - [Constant layer number instructions](#constant-layer-number-instructions) -- [Complex template examples](#complex-template-examples) -- [Credits](#credits) - -## Basic instructions - -## Quick examples - -- `0` - fixed direction at 0° (X-axis) -- `0, 90` - alternate 0° and 90° each layer -- `0, 15, 30` - alternate 0°, 15° and 30° each layer -- `+90` - rotate 90° each layer (sequence 90°, 180°, 270°, 0° ...) -- `+45` - rotate 45° each layer for higher dispersion -- `+30/50%` - linearly rotate by 30° over the next 50% of model height -- `+45/10#` - linearly rotate by 45° across 10 standard layers -- `+15#10` - keep the same angle for 10 layers, then rotate +15°; repeats every 10 layers -- `B!, +30` - skip the first bottom shell layers from rotation, then rotate 30° per layer -- `0, +30, +90` - use a repeating sequence of 0°, +30°, +90° - -`[±]α[*ℤ or !][joint sign, or its combinations][-][ℕ, B or T][length modifier][* or !]` - full length template instruction for the **sparse** infill - -`[±]α*` - just setting an initial rotation angle - - - -> [!NOTE] -> `[...]` - values in square brackets are optional - -### Defined angle - -`[±]α` - command for setting rotation infill angle (for joint infills at some height range, this angle is finite): - -- `α:β` - set the angle α value as a percentage of the full 360 degree rotation -- `+α` - set positive relative angle CCW -- `-α` - set negative relative angle CW - -### Runtime instructions - -`[*, *ℤ or !]` - runtime instructions: - -- `*` - the mark of "dummy" instruction. It's needed for setting an initial angle. No further action will be taken -- `*ℤ` - repeat the instruction ℤ times -- `!` - the one-time running instruction - - - -### Joint sign - -`[joint sign]` - the symbol which determines the method of connection for turning of the infill: - -- `/` - linear displacement of the infill. e.g. `+22.5/50%` - ![linear-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/linear-joint.png?raw=true) -- `#` - infill of multiple layers with vertical displacement at finish angle. e.g. `+22.5#50%` - ![multiple-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/multiple-joint.png?raw=true) -- `#-` - infill of multiple layers with vertical displacement at initial angle. e.g. `+22.5#-50%` - ![multiple-joint-initial-angle](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/multiple-joint-initial-angle.png?raw=true) -- `|` - infill of multiple layers with vertical displacement at middle angle. e.g. `+22.5|50%` - ![multiple-joint-middle-angle](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/multiple-joint-middle-angle.png?raw=true) -- `N` - infill formed by sinus function (vertical connection). e.g. `+22.5N50%` - ![v-sinus-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/v-sinus-joint.png?raw=true) -- `n` - infill formed by sinus function (vertical connection, lazy). e.g. `+22.5n50%` - ![v-sinus-joint-lazy](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/v-sinus-joint-lazy.png?raw=true) -- `Z` - infill formed by sinus function (horizontal connection). e.g. `+22.5Z50%` - ![z-h-sinus-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/z-h-sinus-joint.png?raw=true) -- `z` - infill formed by sinus function (horizontal connection, lazy). e.g. `+22.5z50%` - ![h-sinus-joint-lazy](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/h-sinus-joint-lazy.png?raw=true) -- `L` - infill formed by quarter of circle (horizontal to vertical connection). e.g. `+22.5L50%` - ![vh-quarter-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/vh-quarter-joint.png?raw=true) -- `l` - infill formed by quarter of circle (vertical to horizontal connection). e.g. `+22.5l50%` - ![hv-quarter-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/hv-quarter-joint.png?raw=true) -- `U` - infill formed by squared function. e.g. `+22.5U50%` - ![squared-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/squared-joint.png?raw=true) -- `u-` - infill formed by squared function (inverse). e.g. `+22.5u-50%` - ![squared-joint-inverse](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/squared-joint-inverse.png?raw=true) -- `Q` - infill formed by cubic function. e.g. `+22.5Q50%` - ![cubic-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/cubic-joint.png?raw=true) -- `q-` - infill formed by cubic function (inverse). e.g. `+22.5q-50%` - ![cubic-joint-inverse](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/cubic-joint-inverse.png?raw=true) -- `$` - infill formed by arcsinus method. e.g. `+22.5$50%` - ![arcsinus-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/arcsinus-joint.png?raw=true) -- `~` - infill formed with random angle. e.g. `+22.5~50%` - ![random-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/random-joint.png?raw=true) -- `^` - infill formed with pseudorandom angle. e.g. `+22.5^50%` - ![pseudorandom-joint](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/pseudorandom-joint.png?raw=true) - -### Counting - -`[-]ℕ` - counting the distance at which the turn will take place: - -- `ℕ` - the count will take place by ℕ layers. e.g. `+22.5/50%` - ![infill-counting](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/infill-counting.png?raw=true) -- `-ℕ` - indicates that the joint form will be flipped upward. e.g. `+22.5/-50%` - ![infill-counting-flipped](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/infill-counting-flipped.png?raw=true) -- `B` - the count will take place over the next layers equal to the bottom_shell_layers parameter -- `T` - the count will take place over the next layers equal to the top_shell_layers parameter - -### Length modifier - -`ℕ[length modifier]` - the distance at which the specified turn will take place: - -- `ℕmm` - the distance in millimeters -- `ℕcm` - the distance in centimeters -- `ℕm` - the distance in meters -- `ℕ'` - the distance in feet -- `ℕ"` - the distance in inches -- `ℕ#` - the distance in range of standard height of ℕ layers -- `ℕ%` - the distance as a percentage of model height - -## Description of instructions and examples - -Each instruction is written by a combination of symbols and numbers and separated by a comma or a space. -For more complex instructions, autoformatting is used to make the template easier to read. - -> [!NOTE] -> All examples are shown with a 5% density rectilinear infill on a model of a cube 20x20x20mm which has 100 layers of 0.2mm thickness. Without walls and upper and lower shells. Initial angle is 0. - -### Simple absolute instructions - -They include a simple definition of the angle for each layer. Note that the initial setting of this angle is also affected by the value in the infill angle field. - -- `0`, `15`, `45.5`, `256.5605`... - just fill at the existing angle. The initial direction starts at the X-axis, and the acceptable range of values is from 0 to 360 - - `0` as well as `+0`, `-0` or just empty template - ![0](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/0.png?raw=true) - - `45` - ![45](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/45.png?raw=true) - - `0, 30` - is a simple alternation through each layer in the direction of 0 and 30 degrees. - ![0-30](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/0-30.png?raw=true) -- `0%`, `10%`, `25%`, `100%`... - infill angle determined from relative terms from a full turn of 360 degree rotation. Rotate by 0, 36, 90, and 0 degrees. - - `25%` - the equivalent of `90` instruction. - ![90](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/90.png?raw=true) -- `30, 60, 90, 120, 150, 0` - a more complex command defines a turn every layer at 30 degrees. At the end of the template line, the next instruction is read first, and this process continues until the entire height of the model is filled. - -### Relative instructions - -- `+30` - this is a short instruction for counterclockwise rotation. The equivalent of `30, 60, 90, 120, 150, 180, 210, 240, 270, 300, 330, 0` or `30, 60, 90, 120, 150, 0` instruction. - ![+30](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/+30.png?raw=true) -- `-30` - this is the same instruction, but with clockwise rotation. The equivalent of `330, 300, 270, 240, 210, 180, 150, 120, 90, 60, 30, 0` or `330, 300, 270, 240, 210, 0` instruction. -- `+150` - you can specify a different multiple of the irrational angle for better fill dispersion = `150, 300, 90, 240, 30, 180, 330, 120, 270, 60, 210, 0` ... -- `+45` - The equivalent of `45, 90, 135, 180, 225, 270, 315, 0` or `45, 90, 135, 0` instruction. - ![+45](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/+45.png?raw=true) -- `+90` - The equivalent of `90, 180, 270, 0` or `90, 0` instruction. - ![+90](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/+90.png?raw=true) -- `+15%` - useful for dividing angles on a decimal basis = `54, 108, 162, 270, 324, 18, 72, 126, 180, 234, 288, 342, 36, 90, 144, 196, 252, 306, 0` ... -- `+30, +90` - a complex instruction setting the rotation of each layer in these positions = `30, 120, 150, 240, 270, 0` ... - ![+30+90](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/+30+90.png?raw=true) -- `0, +30, +90` - a complex instruction setting the rotation of each layer in these positions = `0, 30, 120` ... - ![0+30+90](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/0+30+90.png?raw=true) - -### Repetitive, adjusting and one-time instructions - -- `5, 10, +20` - simple instructions without modifiers. Sets the angles in sequence = 5, 10, 30, 5, 10, 30, 5, 10 ... -- `5, 10*, +20` - the `*` sign sets the initial angle without quantitative designation and without layer processing. It is useful for setting the orientation of a group of layers, which will be described below. Sets the angles in sequence = 5, 30, 5, 30, 5, 30, 5 ... -- `5, 10!, +20` - the `!` sign indicates that the instruction will be executed only once for the entire height of the model. Sets the angles in sequence = 5, 10, 30, 5, 25, 5, 25, 5 ... -- `5, 10*!, +20` - the combination of `*` and `!` signs is also usable = 5, 30, 5, 25, 5, 25, 5, 25 ... -- `5, 10*3, +20` - if a number is written after the `*` sign, it indicates the number of repetitions of this instruction. Sets the angles in sequence = 5, 10, 10, 10, 30, 5, 10, 10, 10, 30, 5, 10 ... - -### Range instructions - -A combined set of layers will be organized, where the rotation of one layer relative to the other will also be predetermined. -You can specify how many layers will be rotated by a certain angle, and according to which mathematical law this rotation will be performed. This law is determined by writing a certain symbol and specifying a numeric value after it. -The following signs are available that determine the shape of the turn: `/` `#` `#-` `|` `N` `n` `Z` `z` `L` `l` `U` `u` `Q` `q` `$` `~` `^`. For their purpose, see [joint sign](#joint-sign). - -Also, after the numeric value there is a range modifier, then this rotation will occur according to the described length. -The following modifiers are available that determine the range of turn: `mm` `cm` `m` `'` `"` `#` `%`. For their purpose, see [length modifier](#length-modifier). - -If there is a `-` sign before the numeric value, then the initial fill angle changes with the final one. This is useful for joining the linear infills in some cases. Absolute values of the rotation angle using the range instructions have no effect. -It is important to know that this will not be the exact length, but will be tied to the nearest layer from below. - -- `+45/100` - rotate the next 100 layers linearly at a 45 degree angle. For this model, this instruction is equivalent to `+45/100%` as it contains 100 layers. - ![+45-100](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/+45-100.png?raw=true) -- When changing the height of the instruction `+45/50` or `+45/50%` - the final angle will be 90, as the turn will occur twice. - ![+45-50](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/+45-50.png?raw=true) -- `-50%Z1cm` - rotate one centimeter of infill by sinus function at a 180 degree CW. - -### Constant layer number instructions - -There are 2 letter signs `T` and `B` that can determine the number of shell layers on the top and bottom of the model. It is useful for calculating skipping this amount to align the fill. - -- `B!, +30` - skip the first shell layers from rotation, then fill with 30 degree turn each layer -- `+30/1cm, T` - rotate one centimeter of infill linearly at a 30 degree angle, then skip the number of layers equal to the count of the upper shell layers without rotation. - - - -## Complex template examples - -- `+10L25%, -10l25%, -10L25%, +10l25%` - fill the model with sine period with 10 degree amplitude - ![10period](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/10period.png?raw=true) -- `+30/-10#` - rotate the infill at height of 10 standard layers (or @ standard layer height is 0.2mm x 10 = 2mm) inverse linearly at a 30 degree angle. - ![+30-10](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/+30-10.png?raw=true) -- `+360~100%` or `+100%~100%` - fill the model with infill with random direction at each layer. - ![+360-100p](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/Template-metalanguage/+360-100p.png?raw=true) - -## Credits - -- **Feature author:** [@pi-squared-studio](https://github.com/pi-squared-studio). diff --git a/doc/print_settings/strength/strength_settings_patterns.md b/doc/print_settings/strength/strength_settings_patterns.md deleted file mode 100644 index 9e5a24f777..0000000000 --- a/doc/print_settings/strength/strength_settings_patterns.md +++ /dev/null @@ -1,576 +0,0 @@ -# Patterns - -Patterns determine how material is distributed within a print. Different patterns can affect strength, flexibility and print speed using the same density setting. -The infill pattern also impacts the uniformity of the layer times, since the patterns may be constant, or present significant variations between adjacent layers. - -There is no one-size-fits-all solution, as the best pattern depends on the specific print and its requirements. - -Many patterns may look similar and have similar overall specifications, but they can behave very differently in practice. -As most settings in 3D printing, experience is the best way to determine which pattern works best for your specific needs. - -## Analysis parameters - -### Strength - -- **X-Y Direction**: The strength of the print in the "Horizontal" X-Y plane. Affected by the pattern's connections between walls, contact between layers, and path. -- **Z Direction**: The strength of the print in the "Vertical" Z direction. Affected by contact between layers. - -### Material Usage - -Not all patterns use the same amount of material due to their **Density Calculations** and adjustments to the paths. -This leads to patterns that do not use the specified percentage but rather variations of it. - -### Print Time - -Print time can vary significantly between patterns due to differences in their pathing and infill strategies. -Some patterns may complete faster due to more efficient use of the print head's movement, while others may take longer due to more complex paths. - -> [!NOTE] -> OrcaSlicer Time estimations are not always accurate, especially with complex patterns. -> This analysis was estimated with [Klipper Estimator](https://github.com/Annex-Engineering/klipper_estimator). - -### Layer Time Variability - -Layer time variability refers to the differences in time it takes to print each layer of a pattern. Some patterns may have consistent layer times, while others may experience significant fluctuations. These variations can potentially impact the outer appearance of the print due to differences in cooling and material flow between layers. - -![fill-layer-time-variability](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/fill-layer-time-variability.png?raw=true) - -## Patterns Quick Reference - -| - | Pattern | Strength | Material Usage | Print Time | Layer time Variability | -|---|---|---|---|---|---| -| param_monotonic | [Monotonic](#monotonic) | X-Y: ⚪️ Normal
Z: ⚪️ Normal | ⚪️ Normal | 🔘 Normal-Low | 🟢 None | -| param_monotonicline | [Monotonic line](#monotonic-line) | X-Y: ⚪️ Normal
Z: ⚪️ Normal | ⚪️ Normal | 🔘 Normal-Low | 🟢 None | -| param_rectilinear | [Rectilinear](#rectilinear) | X-Y: ⚪️ Normal-Low
Z: 🟡 Low | ⚪️ Normal | 🔘 Normal-Low | 🔵 Unnoticeable | -| param_alignedrectilinear | [Aligned Rectilinear](#aligned-rectilinear) | X-Y: ⚪️ Normal-Low
Z: ⚪️ Normal | ⚪️ Normal | 🔘 Normal-Low | 🔵 Unnoticeable | -| param_zigzag | [Zig Zag](#zig-zag) | X-Y: ⚪️ Normal-Low
Z: 🟡 Low | ⚪️ Normal | 🔘 Normal-Low | 🔵 Unnoticeable | -| param_crosszag | [Cross Zag](#cross-zag) | X-Y: ⚪️ Normal
Z: 🟡 Low | ⚪️ Normal | 🔘 Normal-Low | 🔵 Unnoticeable | -| param_lockedzag | [Locked Zag](#locked-zag) | X-Y: ⚪️ Normal-Low
Z: ⚪️ Normal-Low | ⚪️ Normal-High | ⚪️ Normal-High | 🟢 None | -| param_line | [Line](#line) | X-Y: 🟡 Low
Z: 🟡 Low | ⚪️ Normal | 🔘 Normal-Low | 🟢 None | -| param_grid | [Grid](#grid) | X-Y: 🟣 High
Z: 🟣 High | ⚪️ Normal | 🟣 Low | 🟢 None | -| param_triangles | [Triangles](#triangles) | X-Y: 🟣 High
Z: ⚪️ Normal | ⚪️ Normal | 🔘 Normal-Low | 🟢 None | -| param_tri-hexagon | [Tri-hexagon](#tri-hexagon) | X-Y: 🟣 High
Z: 🔘 Normal-High | ⚪️ Normal | 🔘 Normal-Low | 🟢 None | -| param_cubic | [Cubic](#cubic) | X-Y: 🟣 High
Z: 🟣 High | ⚪️ Normal | 🔘 Normal-Low | 🔵 Unnoticeable | -| param_adaptivecubic | [Adaptive Cubic](#adaptive-cubic) | X-Y: 🔘 Normal-High
Z: 🔘 Normal-High | 🟣 Low | 🟣 Low | 🔵 Unnoticeable | -| param_quartercubic | [Quarter Cubic](#quarter-cubic) | X-Y: 🟣 High
Z: 🟣 High | ⚪️ Normal | 🔘 Normal-Low | 🔵 Unnoticeable | -| param_supportcubic | [Support Cubic](#support-cubic) | X-Y: 🟡 Low
Z: 🟡 Low | 🔵 Extra-Low | 🔵 Extra-Low | 🔴 Likely Noticeable | -| param_lightning | [Lightning](#lightning) | X-Y: 🟡 Low
Z: 🟡 Low | 🟢 Ultra-Low | 🟢 Ultra-Low | 🔴 Likely Noticeable | -| param_honeycomb | [Honeycomb](#honeycomb) | X-Y: 🟣 High
Z: 🟣 High | 🟡 High | 🔴 Ultra-High | 🟢 None | -| param_3dhoneycomb | [3D Honeycomb](#3d-honeycomb) | X-Y: 🔘 Normal-High
Z: 🔘 Normal-High | 🔘 Normal-Low | 🟠 Extra-High | 🟡 Possibly Noticeable | -| param_lateral-honeycomb | [Lateral Honeycomb](#lateral-honeycomb) | X-Y: ⚪️ Normal-Low
Z: ⚪️ Normal-Low | ⚪️ Normal | 🔘 Normal-Low | 🟡 Possibly Noticeable | -| param_lateral-lattice | [Lateral Lattice](#lateral-lattice) | X-Y: ⚪️ Normal-Low
Z: 🟡 Low | ⚪️ Normal | 🔘 Normal-Low | 🔵 Unnoticeable | -| param_crosshatch | [Cross Hatch](#cross-hatch) | X-Y: 🔘 Normal-High
Z: 🔘 Normal-High | ⚪️ Normal | 🟡 High | 🔴 Likely Noticeable | -| param_tpmsd | [TPMS-D](#tpms-d) | X-Y: 🟣 High
Z: 🟣 High | ⚪️ Normal | 🟡 High | 🟡 Possibly Noticeable | -| param_tpmsfk | [TPMS-FK](#tpms-fk) | X-Y: 🔘 Normal-High
Z: 🔘 Normal-High | ⚪️ Normal | 🔴 Ultra-High | 🟡 Possibly Noticeable | -| param_gyroid | [Gyroid](#gyroid) | X-Y: 🟣 High
Z: 🟣 High | ⚪️ Normal | 🔴 Ultra-High | 🔵 Unnoticeable | -| param_concentric | [Concentric](#concentric) | X-Y: 🟡 Low
Z: ⚪️ Normal | ⚪️ Normal | 🔘 Normal-Low | 🟢 None | -| param_hilbertcurve | [Hilbert Curve](#hilbert-curve) | X-Y: 🟡 Low
Z: ⚪️ Normal | ⚪️ Normal | 🟠 Extra-High | 🟢 None | -| param_archimedeanchords | [Archimedean Chords](#archimedean-chords) | X-Y: 🟡 Low
Z: ⚪️ Normal | ⚪️ Normal | 🔘 Normal-Low | 🟢 None | -| param_octagramspiral | [Octagram Spiral](#octagram-spiral) | X-Y: 🟡 Low
Z: ⚪️ Normal | ⚪️ Normal | ⚪️ Normal | 🟢 None | - -> [!NOTE] -> This estimations are based in a Cube model to maintain consistency. -> This **WILL NOT** be the same for all models and only serves as a standard guideline. - -> [!TIP] -> You can see how this analysis was made in [infill-analysis](https://github.com/OrcaSlicer/OrcaSlicer/tree/main/doc/print_settings/strength/infill-analysis) folder: -> - [Infill calculator Project](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/print_settings/strength/infill-analysis/infill_calculator.3mf?raw=true) to generate the gcode files and images. -> - [infill_desc_calculator.xlsx](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/print_settings/strength/infill-analysis/infill_desc_calculator.xlsx?raw=true) used to calculate the values above. -> - Time, and material usage where simulated with the same [Klipper Estimator](https://github.com/Annex-Engineering/klipper_estimator) values to maintain consistency. - -## Monotonic - -[Rectilinear](#rectilinear) in a uniform direction for a smoother visual surface. - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal - - **Vertical (Z):** ⚪️ Normal -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - - **[Surface](strength_settings_top_bottom_shells)** - -![infill-top-monotonic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-monotonic.png?raw=true) - -## Monotonic line - -[Monotonic](#monotonic) but avoids overlapping with the perimeter, reducing excess material at joints. May introduce visible seams and increase print time. - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal - - **Vertical (Z):** ⚪️ Normal -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - - **[Surface](strength_settings_top_bottom_shells)** - -![infill-top-monotonic-line](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-monotonic-line.png?raw=true) - -## Rectilinear - -Parallel lines spaced according to infill density. Each layer is printed perpendicular to the previous, resulting in low vertical bonding. Consider using new [Zig Zag](#zig-zag) infill instead. - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal-Low - - **Vertical (Z):** 🟡 Low -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - - **[Surface](strength_settings_top_bottom_shells)** - - **[Ironing](quality_settings_ironing)** - -![infill-top-rectilinear](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-rectilinear.png?raw=true) - -## Aligned Rectilinear - -Parallel lines spaced by the infill spacing, each layer printed in the same direction as the previous layer. Good horizontal strength perpendicular to the lines, but terrible in parallel direction. -Recommended with layer anchoring to improve not perpendicular strength. - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal-Low - - **Vertical (Z):** ⚪️ Normal -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - - **[Surface](strength_settings_top_bottom_shells)** - -![infill-top-aligned-rectilinear](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-aligned-rectilinear.png?raw=true) - -## Zig Zag - -Similar to [rectilinear](#rectilinear) with consistent pattern between layers. Allows you to add a Symmetric infill Y axis for models with two symmetric parts. - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal-Low - - **Vertical (Z):** 🟡 Low -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-zig-zag](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-zig-zag.png?raw=true) - -## Cross Zag - -Similar to [Zig Zag](#zig-zag) but displacing each layer with Infill shift step parameter. - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal - - **Vertical (Z):** 🟡 Low -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-cross-zag](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-cross-zag.png?raw=true) - -## Locked Zag - -Version of [Zig Zag](#zig-zag) that adds extra skin. -When using this fill, you can individually modify the density of the skeleton and skin, as well as the size of the skin and how much interconnection there is between the skin and the skeleton (a lock depth of 50% of the skin depth is recommended). - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal-Low - - **Vertical (Z):** ⚪️ Normal-Low -- **Density Calculation:** Similar to [Zig Zag](#zig-zag). -Skin density * ( Infill Area - Skin Area + lock depth area) + ( Skin density * Skin area). - - **Material Usage:** ⚪️ Normal-High - - **Print Time:** ⚪️ Normal-High - - **Material/Time (Higher better):** ⚪️ Normal - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-locked-zag](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-locked-zag.png?raw=true) - -## Line - -Similar to [rectilinear](#rectilinear), but each line is slightly rotated to improve print speed. - -- **Strength** - - **Horizontal (X-Y):** 🟡 Low - - **Vertical (Z):** 🟡 Low -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-line](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-line.png?raw=true) - -## Grid - -Two-layer pattern of perpendicular lines, forming a grid. Overlapping points may cause noise or artifacts. - -- **Strength** - - **Horizontal (X-Y):** 🟣 High - - **Vertical (Z):** 🟣 High -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🟣 Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-grid](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-grid.png?raw=true) - -## Triangles - -Triangle-based grid, offering strong X-Y strength but with triple overlaps at intersections. - -- **Strength** - - **Horizontal (X-Y):** 🟣 High - - **Vertical (Z):** ⚪️ Normal -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-triangles](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-triangles.png?raw=true) - -## Tri-hexagon - -Similar to the [triangles](#triangles) pattern but offset to prevent triple overlaps at intersections. This design combines triangles and hexagons, providing excellent X-Y strength. - -- **Strength** - - **Horizontal (X-Y):** 🟣 High - - **Vertical (Z):** 🔘 Normal-High -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-tri-hexagon](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-tri-hexagon.png?raw=true) - -## Cubic - -3D cube pattern with corners facing down, distributing force in all directions. Triangles in the horizontal plane provide good X-Y strength. - -- **Strength** - - **Horizontal (X-Y):** 🟣 High - - **Vertical (Z):** 🟣 High -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-cubic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-cubic.png?raw=true) - -## Adaptive Cubic - -[Cubic](#cubic) pattern with adaptive density: denser near walls, sparser in the center. Saves material and time while maintaining strength, ideal for large prints. - -- **Strength** - - **Horizontal (X-Y):** 🔘 Normal-High - - **Vertical (Z):** 🔘 Normal-High -- **Density Calculation:** Same as [Cubic](#cubic) but reduced in the center - - **Material Usage:** 🟣 Low - - **Print Time:** 🟣 Low - - **Material/Time (Higher better):** ⚪️ Normal - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-adaptive-cubic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-adaptive-cubic.png?raw=true) - -## Quarter Cubic - -[Cubic](#cubic) pattern with extra internal divisions, improving X-Y strength. - -- **Strength** - - **Horizontal (X-Y):** 🟣 High - - **Vertical (Z):** 🟣 High -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-quarter-cubic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-quarter-cubic.png?raw=true) - -## Support Cubic - -Support |Cubic is a variation of the [Cubic](#cubic) infill pattern that is specifically designed for support top layers. Will use more material than Lightning infill but will provide better strength. Nevertheless, it is still a low-density infill pattern. - -- **Strength** - - **Horizontal (X-Y):** 🟡 Low - - **Vertical (Z):** 🟡 Low -- **Density Calculation:** % of layer before top shell layers - - **Material Usage:** 🔵 Extra-Low - - **Print Time:** 🔵 Extra-Low - - **Material/Time (Higher better):** 🟡 Low - - **Layer time Variability:** 🔴 Likely Noticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-support-cubic](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-support-cubic.png?raw=true) - -## Lightning - -Ultra-fast, ultra-low material infill. Designed for speed and efficiency, ideal for quick prints or non-structural prototypes. - -- **Strength** - - **Horizontal (X-Y):** 🟡 Low - - **Vertical (Z):** 🟡 Low -- **Density Calculation:** % of layer before top shell layers - - **Material Usage:** 🟢 Ultra-Low - - **Print Time:** 🟢 Ultra-Low - - **Material/Time (Higher better):** ⚪️ Normal-Low - - **Layer time Variability:** 🔴 Likely Noticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-lightning](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-lightning.png?raw=true) - -## Honeycomb - -Hexagonal pattern balancing strength and material use. Double walls in each hexagon increase material consumption. - -- **Strength** - - **Horizontal (X-Y):** 🟣 High - - **Vertical (Z):** 🟣 High -- **Density Calculation:** % of total infill volume - - **Material Usage:** 🟡 High - - **Print Time:** 🔴 Ultra-High - - **Material/Time (Higher better):** 🟡 Low - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-honeycomb](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-honeycomb.png?raw=true) - -## 3D Honeycomb - -This infill tries to generate a printable honeycomb structure by printing squares and octagons maintaining a vertical angle high enough to maintain contact with the previous layer. - -- **Strength** - - **Horizontal (X-Y):** 🔘 Normal-High - - **Vertical (Z):** 🔘 Normal-High -- **Density Calculation:** Unknown - - **Material Usage:** 🔘 Normal-Low - - **Print Time:** 🟠 Extra-High - - **Material/Time (Higher better):** 🟡 Low - - **Layer time Variability:** 🟡 Possibly Noticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-3d-honeycomb](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-3d-honeycomb.png?raw=true) - -## Lateral Honeycomb - -Vertical Honeycomb pattern. Acceptable torsional stiffness. Developed for low densities structures like wings. Improve over [Lateral Lattice](#lateral-lattice) offers same performance with lower densities.This infill includes a Overhang angle parameter to improve the point of contact between layers and reduce the risk of delamination. - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal-Low - - **Vertical (Z):** ⚪️ Normal-Low -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟡 Possibly Noticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-lateral-honeycomb](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-lateral-honeycomb.png?raw=true) - -## Lateral Lattice - -Low-strength pattern with good flexibility. You can adjust **Angle 1** and **Angle 2** to optimize the infill for your specific model. Each angle adjusts the plane of each layer generated by the pattern. 0° is vertical. - -- **Strength** - - **Horizontal (X-Y):** ⚪️ Normal-Low - - **Vertical (Z):** 🟡 Low -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-lateral-lattice](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-lateral-lattice.png?raw=true) - -## Cross Hatch - -Similar to [Gyroid](#gyroid) but with linear patterns, creating weak points at internal corners. -Easier to slice but consider using [TPMS-D](#tpms-d) or [Gyroid](#gyroid) for better strength and flexibility. - -- **Strength** - - **Horizontal (X-Y):** 🔘 Normal-High - - **Vertical (Z):** 🔘 Normal-High -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🟡 High - - **Material/Time (Higher better):** 🟡 Low - - **Layer time Variability:** 🔴 Likely Noticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-cross-hatch](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-cross-hatch.png?raw=true) - -## TPMS-D - -Triply Periodic Minimal Surface (Schwarz Diamond). Hybrid between [Cross Hatch](#cross-hatch) and [Gyroid](#gyroid), combining rigidity and smooth transitions. Isotropic and strong in all directions. This geometry is faster to slice than Gyroid, but slower than Cross Hatch. - -- **Strength** - - **Horizontal (X-Y):** 🟣 High - - **Vertical (Z):** 🟣 High -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🟡 High - - **Material/Time (Higher better):** 🟡 Low - - **Layer time Variability:** 🟡 Possibly Noticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-tpms-d](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-tpms-d.png?raw=true) - -## TPMS-FK - -Triply Periodic Minimal Surface (Fischer–Koch S) pattern. Its smooth, continuous geometry resembles trabecular bone microstructure, offering a balance between rigidity and energy absorption. Compared to [TPMS-D](#tpms-d), it has more complex curvature, which can improve load distribution and shock absorption in functional parts. - -- **Strength** - - **Horizontal (X-Y):** 🔘 Normal-High - - **Vertical (Z):** 🔘 Normal-High -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔴 Ultra-High - - **Material/Time (Higher better):** 🟡 Low - - **Layer time Variability:** 🟡 Possibly Noticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-tpms-fk](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-tpms-fk.png?raw=true) - -## Gyroid - -Mathematical, isotropic surface providing equal strength in all directions. Excellent for strong, flexible prints and resin filling due to its interconnected structure. This pattern may require more time to slice because of all the points needed to generate each curve. If your model has complex geometry, consider using a simpler infill pattern like [TPMS-D](#tpms-d) or [Cross Hatch](#cross-hatch). - -- **Strength** - - **Horizontal (X-Y):** 🟣 High - - **Vertical (Z):** 🟣 High -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔴 Ultra-High - - **Material/Time (Higher better):** 🟡 Low - - **Layer time Variability:** 🔵 Unnoticeable -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - -![infill-top-gyroid](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-gyroid.png?raw=true) - -## Concentric - -Fills the area with progressively smaller versions of the outer contour, creating a concentric pattern. Ideal for 100% infill or flexible prints. - -- **Strength** - - **Horizontal (X-Y):** 🟡 Low - - **Vertical (Z):** ⚪️ Normal -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - - **[Surface](strength_settings_top_bottom_shells)** - - **[Ironing](quality_settings_ironing)** - -![infill-top-concentric](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-concentric.png?raw=true) - -## Hilbert Curve - -Hilbert Curve is a space-filling curve that can be used to create a continuous infill pattern. It is known for its aesthetic appeal and ability to fill space efficiently. -Print speed is very low due to the complexity of the path, which can lead to longer print times. It is not recommended for structural parts but can be used for aesthetic purposes. - -- **Strength** - - **Horizontal (X-Y):** 🟡 Low - - **Vertical (Z):** ⚪️ Normal -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🟠 Extra-High - - **Material/Time (Higher better):** 🟡 Low - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - - **[Surface](strength_settings_top_bottom_shells)** - -![infill-top-hilbert-curve](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-hilbert-curve.png?raw=true) - -## Archimedean Chords - -Spiral pattern that fills the area with concentric arcs, creating a smooth and continuous infill. Can be filled with resin thanks to its interconnected hollow structure, which allows the resin to flow through it and cure properly. - -- **Strength** - - **Horizontal (X-Y):** 🟡 Low - - **Vertical (Z):** ⚪️ Normal -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** 🔘 Normal-Low - - **Material/Time (Higher better):** 🔘 Normal-High - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - - **[Surface](strength_settings_top_bottom_shells)** - -![infill-top-archimedean-chords](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-archimedean-chords.png?raw=true) - -## Octagram Spiral - -Aesthetic pattern with low strength and high print time. - -- **Strength** - - **Horizontal (X-Y):** 🟡 Low - - **Vertical (Z):** ⚪️ Normal -- **Density Calculation:** % of total infill volume - - **Material Usage:** ⚪️ Normal - - **Print Time:** ⚪️ Normal - - **Material/Time (Higher better):** ⚪️ Normal - - **Layer time Variability:** 🟢 None -- **Applies to:** - - **[Sparse Infill](strength_settings_infill#sparse-infill-density)** - - **[Solid Infill](strength_settings_infill#internal-solid-infill)** - - **[Surface](strength_settings_top_bottom_shells)** - -![infill-top-octagram-spiral](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/fill/infill-top-octagram-spiral.png?raw=true) diff --git a/doc/print_settings/strength/strength_settings_top_bottom_shells.md b/doc/print_settings/strength/strength_settings_top_bottom_shells.md deleted file mode 100644 index 674fa94b8f..0000000000 --- a/doc/print_settings/strength/strength_settings_top_bottom_shells.md +++ /dev/null @@ -1,50 +0,0 @@ -# Top and Bottom Shells - -Controls how the top and bottom solid layers (shells) are generated. - -![top-bottom-shells](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/top-bottom-shells/top-bottom-shells.png?raw=true) - -## Shell Layers - -This is the number of solid shell layers, including the surface layer. -When the thickness calculated from this value is less than [shell thickness](#shell-thickness), the shell layers will be increased. - -These layers are printed over the [sparse infill](strength_settings_infill), so increasing **shell layers** will increase overall part strength and top surface quality. -It's usually recommended to have at least 3 shell layers for most prints. - -## Shell Thickness - -The number of solid layers is increased during slicing if the thickness calculated from shell layers is thinner than this value. This avoids having too thin a shell when layer height is small. -0 means this setting is disabled and shell thickness is determined entirely by [shell layers](#shell-layers). - -## Surface Density - -This setting controls the density of the top and bottom surfaces. A value of 100% means a solid surface, while lower values create a sparse surface. -This can be used for aesthetic purposes, improving grip or creating interfaces. - -## Infill/Wall Overlap - -The top solid infill area is slightly enlarged to overlap with walls for better bonding and to minimize pinholes where the infill meets the walls. -A value of 25-30% is a good starting point. The percentage value is relative to the line width of the sparse infill. - -> [!TIP] -> Check [Monotonic Line](strength_settings_patterns#monotonic-line) to learn about its overlaying differences with [Monotonic](strength_settings_patterns#monotonic) and [Rectilinear](strength_settings_patterns#rectilinear). - -## Surface Pattern - -This setting controls the pattern of the surfaces. -If [Shell Layers](#shell-layers) is greater than 1, the surface pattern will be applied to the outermost shell layer only and the rest will use [Internal Solid Infill Pattern](strength_settings_infill#internal-solid-infill). - -> [!TIP] -> See [Infill Patterns Wiki List](strength_settings_patterns) with **detailed specifications**, including their strengths and weaknesses. - - The surface patterns are: - -- **[Concentric](strength_settings_patterns#concentric)** -- **[Rectilinear](strength_settings_patterns#rectilinear)** -- **[Monotonic](strength_settings_patterns#monotonic)** -- **[Monotonic Line](strength_settings_patterns#monotonic-line)** Usually Recommended for Top. -- **[Aligned Rectilinear](strength_settings_patterns#aligned-rectilinear)** -- **[Hilbert Curve](strength_settings_patterns#hilbert-curve)** -- **[Archimedean Chords](strength_settings_patterns#archimedean-chords)** -- **[Octagram Spiral](strength_settings_patterns#octagram-spiral)** diff --git a/doc/print_settings/strength/strength_settings_walls.md b/doc/print_settings/strength/strength_settings_walls.md deleted file mode 100644 index a2ffcb1ee0..0000000000 --- a/doc/print_settings/strength/strength_settings_walls.md +++ /dev/null @@ -1,45 +0,0 @@ -# Walls - -In 3D printing, "walls" refer to the outer layers of a printed object that provide its shape and structural integrity. -Adjusting wall settings can significantly affect layer adhesion, strength, appearance and print time of your model. - -![walls](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/walls/walls.png?raw=true) - -- [Wall loops](#wall-loops) -- [Alternate extra wall](#alternate-extra-wall) -- [Detect thin wall](#detect-thin-wall) - -## Wall loops - -"Wall loops" refers to the number of times the outer wall is printed in a loop. -Increasing the wall loops will: -- Enhance: - - Layer adhesion - - Strength - - Rigidity -- Reduce infill ghosting -- Increase print time - -## Alternate extra wall - -This setting adds an extra wall to every other layer. This way the infill gets wedged vertically between the walls, resulting in stronger prints. -When this option is enabled, the ensure vertical shell thickness option needs to be disabled. - -> [!WARNING] -> It's not recommended to use this option with: -> - [Lightning infill](strength_settings_patterns#lightning) as there is limited infill to anchor the extra perimeters to. -> - **[Ensure vertical shell thickness: ALL](strength_settings_advanced#ensure-vertical-shell-thickness)** - -## Detect thin wall - -By default, walls are printed as closed loops. When a wall is too thin to contain two line widths, enabling "Detect thin walls" prints it as a single extrusion line. -Thin walls printed this way may have reduced surface quality and strength because they are not closed loops. - -> [!TIP] -> Usually, it is recommended to use [Arachne wall generator](quality_settings_wall_generator#arachne) which will disable "Detect thin walls" because it uses a different approach to wall generation. - -- In small details it can generate details that wouldn't be possible with traditional wall generation methods. - ![walls-small-detect-thin-off](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/walls/walls-small-detect-thin-off.png?raw=true) - ![walls-small-detect-thin-on](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/walls/walls-small-detect-thin-on.png?raw=true) -- In large prints, it can generate defects more easily due to the reduced wall thickness. - ![walls-big-detect-thin-off-on](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/walls/walls-big-detect-thin-off-on.png?raw=true) diff --git a/doc/print_settings/support/support_settings_advanced.md b/doc/print_settings/support/support_settings_advanced.md deleted file mode 100644 index b90a679b7c..0000000000 --- a/doc/print_settings/support/support_settings_advanced.md +++ /dev/null @@ -1,67 +0,0 @@ -# Support Advanced - -- [Z distance](#z-distance) -- [Support wall loops](#support-wall-loops) -- [Base Pattern](#base-pattern) - - [Base pattern spacing](#base-pattern-spacing) -- [Pattern angle](#pattern-angle) -- [Interface layers](#interface-layers) -- [Interface pattern](#interface-pattern) -- [Interface spacing](#interface-spacing) -- [Normal support expansion](#normal-support-expansion) -- [Support/object XY distance](#supportobject-xy-distance) -- [Support/object first layer gap](#supportobject-first-layer-gap) -- [Don't support bridges](#dont-support-bridges) -- [Independent support layer height](#independent-support-layer-height) - -## Z distance - -The Z gap between support interface and object. - -## Support wall loops - -This setting specifies the count of support walls in the range of [0,2]. 0 means auto. - -## Base Pattern - -Line pattern for the base of the support. - -### Base pattern spacing - -Spacing between support lines. - -## Pattern angle - -Use this setting to rotate the support pattern on the horizontal plane. - -## Interface layers - -The number of interface layers. - -## Interface pattern - -The pattern used for the support interface. - -## Interface spacing - -Spacing of interface lines. Zero means solid interface. - -## Normal support expansion - -Expand (+) or shrink (-) the horizontal span of normal support. - -## Support/object XY distance - -XY separation between an object and its support. - -## Support/object first layer gap - -XY separation between an object and its support at the first layer. - -## Don't support bridges - -Don't support the whole bridge area which make support very large. Bridges can usually be printed directly without support if not very long. - -## Independent support layer height - -Support layer uses layer height independent with object layer. This is to support customizing z-gap and save print time. This option will be invalid when the prime tower is enabled. diff --git a/doc/print_settings/support/support_settings_filament.md b/doc/print_settings/support/support_settings_filament.md deleted file mode 100644 index 07903d51db..0000000000 --- a/doc/print_settings/support/support_settings_filament.md +++ /dev/null @@ -1,15 +0,0 @@ -# Support Filament - -Support filament settings allow you to customize the material used for support structures in your 3D prints. This can include settings for the base layer, interface, and support style. - -## Base - -Filament to print support base and raft. "Default" means no specific filament for support and current filament is used. - -## Interface - -Filament to print support interface. "Default" means no specific filament for support interface and current filament is used. - -### Avoid interface filament for base - -Avoid using support interface filament to print support base if possible. diff --git a/doc/print_settings/support/support_settings_ironing.md b/doc/print_settings/support/support_settings_ironing.md deleted file mode 100644 index 52a8d6258e..0000000000 --- a/doc/print_settings/support/support_settings_ironing.md +++ /dev/null @@ -1,15 +0,0 @@ -# Support Ironing - -Ironing is using small flow to print on same height of surface again to make flat surface more smooth. This setting controls which layer being ironed. - -## Pattern - -Select the ironing pattern to use. - -## Flow - -The amount of material to extrude during ironing. Relative to flow of normal layer height. Too high value results in overextrusion on the surface. - -## Line Spacing - -The distance between the lines of ironing. diff --git a/doc/print_settings/support/support_settings_raft.md b/doc/print_settings/support/support_settings_raft.md deleted file mode 100644 index 4677895424..0000000000 --- a/doc/print_settings/support/support_settings_raft.md +++ /dev/null @@ -1,11 +0,0 @@ -# Raft - -Raft is a base layer that is printed under the object to improve adhesion and prevent warping. It consists of multiple layers of material that create a stable foundation for the print. - -## Layers - -Object will be raised by this number of support layers. - -## Contact Z distance - -Z gap between object and raft. Ignored for soluble interface. diff --git a/doc/print_settings/support/support_settings_support.md b/doc/print_settings/support/support_settings_support.md deleted file mode 100644 index e17fd793a6..0000000000 --- a/doc/print_settings/support/support_settings_support.md +++ /dev/null @@ -1,100 +0,0 @@ -# Support - -Support structures are used in 3D printing to provide stability to overhangs and complex geometries. - -- [Type](#type) - - [Normal](#normal) - - [Tree](#tree) - - [Support critical regions only](#support-critical-regions-only) - - [Auto](#auto) - - [Manual](#manual) -- [Style](#style) - - [Grid](#grid) - - [Snug](#snug) - - [Organic](#organic) - - [Tree Slim](#tree-slim) - - [Tree Strong](#tree-strong) - - [Tree Hybrid](#tree-hybrid) -- [Threshold angle](#threshold-angle) -- [Threshold overlap](#threshold-overlap) -- [Initial layer density](#initial-layer-density) -- [Initial layer expansion](#initial-layer-expansion) -- [On build plate only](#on-build-plate-only) -- [Ignore small overhangs](#ignore-small-overhangs) - -## Type - -Support structures can be generated in various styles, each suited for different printing needs: - -### Normal - -Normal support structures are generated in a grid pattern, providing a stable base for overhangs and complex geometries. - -### Tree - -Tree-like support structures are designed to minimize material usage while still providing adequate support. They branch out from a central trunk, allowing for more efficient printing. - -#### Support critical regions only - -Only create support for critical regions including sharp tail, cantilever, etc. - -### Auto - -Automatically generates support structures where needed, based on the model's geometry and overhangs and manual placement in the prepare view. - -### Manual - -Limit support generation to specific areas defined by manual placement in the prepare view. - -## Style - -Style and shape of the support. - -### Grid - -Default in normal support, projecting the supports into a regular grid will create more stable supports. - -### Snug - -Snug support towers will save material and reduce object scarring. - -### Organic - -Default style for tree support, which merges slim and organic style branches more aggressively and saves material. - -### Tree Slim - -Slim tree support branches are designed to be more delicate and use less material while still providing adequate support. - -### Tree Strong - -Strong tree support branches are designed to be more robust and provide additional support for heavier overhangs. - -### Tree Hybrid - -Create similar structure to normal support under large flat overhangs. - -## Threshold angle - -Support will be generated for overhangs whose slope angle is below the threshold. - -## Threshold overlap - -If threshold angle is zero, support will be generated for overhangs whose overlap is below the threshold. -The smaller this value is, the steeper the overhang that can be printed without support. - -## Initial layer density - -Density of the first raft or support layer. - -## Initial layer expansion - -Expand the first raft or support layer to improve bed plate adhesion. - -## On build plate only - -Don't create support on model surface, only on build plate. - -## Ignore small overhangs - -With this setting small overhangs that possibly need no supports will be ignored from support generation. diff --git a/doc/print_settings/support/support_settings_tree.md b/doc/print_settings/support/support_settings_tree.md deleted file mode 100644 index 3f7b86a159..0000000000 --- a/doc/print_settings/support/support_settings_tree.md +++ /dev/null @@ -1,31 +0,0 @@ -# Tree Support - -This section contains specific settings for tree support structures. - -## Tip Diameter - -Branch tip diameter for organic supports. - -## Branch Distance - -This setting determines the distance between neighboring tree support nodes. - -## Branch Density - -Adjusts the density of the support structure used to generate the tips of the branches. A higher value results in better overhangs but the supports are harder to remove, thus it is recommended to enable top support interfaces instead of a high branch density value if dense interfaces are needed. - -## Branch Diameter - -This setting determines the initial diameter of support nodes. - -## Branch Diameter Angle - -The angle of the branches' diameter as they gradually become thicker towards the bottom. An angle of 0 will cause the branches to have uniform thickness over their length. A bit of an angle can increase stability of the organic support. - -## Branch Angle - -This setting determines the maximum overhang angle that the branches of tree support are allowed to make. If the angle is increased, the branches can be printed more horizontally, allowing them to reach farther. - -### Preferred Branch Angle - -The preferred angle of the branches, when they do not have to avoid the model. Use a lower angle to make them more vertical and more stable. Use a higher angle for branches to merge faster. diff --git a/doc/printer_settings/Auxiliary-fan.md b/doc/printer_settings/Auxiliary-fan.md deleted file mode 100644 index b273ca1383..0000000000 --- a/doc/printer_settings/Auxiliary-fan.md +++ /dev/null @@ -1,141 +0,0 @@ -# Auxiliary Fan - -OrcaSlicer uses `M106 P#` / `M107 P#` to control any fans managed by the slicer. - -- `P0`: part cooling fan (default layer fan) -- `P1` (if present): an additional fan -- `P2`: often used as Aux / CPAP / Booster -- `P3` (and higher): sometimes Exhaust / Enclosure, etc. - -With Klipper you can create macros that translate both the OrcaSlicer numeric fan index `P` and **human‑readable names** for your physical fans. This keeps compatibility with generated G‑code (M106 P0 / M106 P2 …) while letting you address fans by name internally. - -> [!WARNING] -> Adjust pin names and parameters (power, cycle_time, etc.) to match your hardware. - -- [Simple option (indexes only → fan0, fan2, fan3)](#simple-option-indexes-only--fan0-fan2-fan3) -- [Advanced option (Index ⇄ Name mapping)](#advanced-option-index--name-mapping) - - [Quick customization](#quick-customization) - - [Usage](#usage) - -## Simple option (indexes only → fan0, fan2, fan3) - -This is the original basic example where the `P` index is concatenated (`fan0`, `fan2`, `fan3`). Use it if you don't need custom names: - -```ini -# Part cooling fan -[fan_generic fan0] -pin: PA7 -cycle_time: 0.01 -hardware_pwm: false - -# Auxiliary fan (comment out if you don't have it) -[fan_generic fan2] -pin: PA8 -cycle_time: 0.01 -hardware_pwm: false - -# Exhaust / enclosure fan (comment out if you don't have it) -[fan_generic fan3] -pin: PA9 -cycle_time: 0.01 -hardware_pwm: false - -[gcode_macro M106] -gcode: - {% set fan = 'fan' + (params.P|int if params.P is defined else 0)|string %} - {% set speed = (params.S|float / 255 if params.S is defined else 1.0) %} - SET_FAN_SPEED FAN={fan} SPEED={speed} - -[gcode_macro M107] -gcode: - {% set fan = 'fan' + (params.P|int if params.P is defined else 0)|string %} - {% if params.P is defined %} - SET_FAN_SPEED FAN={fan} SPEED=0 - {% else %} - # No P -> turn off typical defined fans - SET_FAN_SPEED FAN=fan0 SPEED=0 - SET_FAN_SPEED FAN=fan2 SPEED=0 - SET_FAN_SPEED FAN=fan3 SPEED=0 - {% endif %} -``` - -## Advanced option (Index ⇄ Name mapping) - -Lets you use descriptive names like `CPAP`, `EXHAUST`, etc. Useful if you re‑wire or repurpose fans without changing slicer output. Just keep `fan_map` updated. - -```ini -# Example with friendly names + comments showing OrcaSlicer index - -[fan_generic CPAP] # fan 0 OrcaSlicer -pin: PB7 -max_power: 0.8 -shutdown_speed: 0 -kick_start_time: 0.100 -cycle_time: 0.005 -hardware_pwm: False -off_below: 0.10 - -[fan_generic EXHAUST] # fan 3 OrcaSlicer -pin: PE5 -#max_power: -#shutdown_speed: -cycle_time: 0.01 -hardware_pwm: False -#kick_start_time: -off_below: 0.2 - -# If you had another (e.g. P2) add here: -# [fan_generic AUX] -# pin: PXn - -[gcode_macro M106] -description: "Set fan speed (Orca compatible)" -gcode: - {% set fan_map = { - 0: "CPAP", # Orca P0 → CPAP blower - 3: "EXHAUST", # Orca P3 → Exhaust - # 2: "AUX", # Uncomment if you define AUX - } %} - {% set p = params.P|int if 'P' in params else 0 %} - {% set fan = fan_map[p] if p in fan_map else fan_map[0] %} - {% set speed = (params.S|float / 255 if 'S' in params else 1.0) %} - SET_FAN_SPEED FAN={fan} SPEED={speed} - -[gcode_macro M107] -description: "Turn off fans. No P = all, P# = specific" -gcode: - {% set fan_map = { - 0: "CPAP", - 3: "EXHAUST", - # 2: "AUX", - } %} - {% if 'P' in params %} - {% set p = params.P|int %} - {% if p in fan_map %} - SET_FAN_SPEED FAN={fan_map[p]} SPEED=0 - {% else %} - RESPOND PREFIX="warn" MSG="Unknown fan index P{{p}}" - {% endif %} - {% else %} - # No P -> turn off all mapped fans - {% for f in fan_map.values() %} - SET_FAN_SPEED FAN={f} SPEED=0 - {% endfor %} - {% endif %} -``` - -### Quick customization - -1. Add / remove entries in `fan_map` to reflect the indexes the slicer may use. -2. Keep comments like `# fan X OrcaSlicer` next to each `[fan_generic]` for easy correlation. -3. Tune `max_power`, `off_below`, `cycle_time` according to fan type (CPAP blower vs axial exhaust). - -### Usage - -- From OrcaSlicer: `M106 P0 S255` (100% CPAP), `M106 P3 S128` (~50% EXHAUST). -- Turn one off: `M107 P3`. Turn all off: `M107`. -- You can still manually use `SET_FAN_SPEED FAN=CPAP SPEED=0.7` in the Klipper console. - ---- - -Pick the variant that best fits your workflow; the advanced version provides extra clarity and flexibility while remaining fully compatible with standard OrcaSlicer G-code output. diff --git a/doc/printer_settings/Chamber-temperature.md b/doc/printer_settings/Chamber-temperature.md deleted file mode 100644 index c8be8da497..0000000000 --- a/doc/printer_settings/Chamber-temperature.md +++ /dev/null @@ -1,66 +0,0 @@ -# Chamber Temperature Control - -OrcaSlicer use `M141/M191` command to control active chamber heater. - -If your Filament's `Activate temperature control` and your printer `Support control chamber temperature` option are checked , OrcaSlicer will insert `M191` command at the beginning of the gcode (before `Machine G-code`). - -![Chamber-Temperature-Control-Printer](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Chamber/Chamber-Temperature-Control-Printer.png?raw=true) -![Chamber-Temperature-Control-Material](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Chamber/Chamber-Temperature-Control-Material.png?raw=true) - - -> [!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. - -## 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 -# Orca note: here the temperature sensor should be the sensor you are using for chamber temperature, not the PTC sensor -sensor_type:NTC 100K MGB18-104F39050L32 -sensor_pin:PA1 -control = pid -pid_Kp = 63.418 -pid_ki = 0.960 -pid_kd = 1244.716 -min_temp:0 -max_temp:70 - -[gcode_macro M141] -gcode: - SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={params.S|default(0)} - -[gcode_macro M191] -gcode: - {% set s = params.S|float %} - {% if s == 0 %} - # If target temperature is 0, do nothing - M117 Chamber heating cancelled - {% else %} - SET_HEATER_TEMPERATURE HEATER=chamber_heater TARGET={s} - # Orca: uncomment the following line if you want to use heat bed to assist chamber heating - # M140 S100 - TEMPERATURE_WAIT SENSOR="heater_generic chamber_heater" MINIMUM={s-1} MAXIMUM={s+1} - M117 Chamber at target temperature - {% endif %} -``` diff --git a/doc/printer_settings/adaptive-bed-mesh.md b/doc/printer_settings/adaptive-bed-mesh.md deleted file mode 100644 index e964824f0d..0000000000 --- a/doc/printer_settings/adaptive-bed-mesh.md +++ /dev/null @@ -1,57 +0,0 @@ -# Adaptive Bed Mesh Support - -OrcaSlicer introduces comprehensive support for adaptive bed meshing across a variety of firmware, including Marlin, Klipper, and RepRapFirmware (RRF). - -This feature allows users to seamlessly integrate adaptive bed mesh commands within the Machine Start G-code. - -The implementation is designed to be straightforward, requiring no additional plugins or alterations to firmware settings, thereby enhancing user experience and print quality directly from OrcaSlicer. - -![ABM-PrinterConfig](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Adaptative-Bed-Mesh/ABM-PrinterConfig.png?raw=true) - -## Settings in OrcaSlicer - -`Bed mesh min`: This option sets the min point for the allowed bed mesh area. Due to the probe's XY offset, most printers are unable to probe the entire bed. To ensure the probe point does not go outside the bed area, the minimum and maximum points of the bed mesh should be set appropriately. OrcaSlicer ensures that adaptive_bed_mesh_min/adaptive_bed_mesh_max values do not exceed these min/max points. This information can usually be obtained from your printer manufacturer. The default setting is (-99999, -99999), which means there are no limits, thus allowing probing across the entire bed. - -`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] -> Klipper users: OrcaSlicer will adjust adaptive bed mesh area according to the margin. It is recommended to set the margin to 0 in Klipper config or pass 0 when calling BED_MESH_CALIBRATE command(please refer to the example below). - -## Available g-code variables for Adaptive Bed Mesh Command - -`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`. - -## Example of Adaptive Bed Mesh usage in OrcaSlicer - -### Marlin - -```gcode -; Marlin don't support specify 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]} -``` - -![ABM-Machine-G-code](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/Adaptative-Bed-Mesh/ABM-Machine-G-code.png?raw=true) diff --git a/doc/printer_settings/air-filtration.md b/doc/printer_settings/air-filtration.md deleted file mode 100644 index ec38d632f9..0000000000 --- a/doc/printer_settings/air-filtration.md +++ /dev/null @@ -1,39 +0,0 @@ -# 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 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] -pin: PA7 -cycle_time: 0.01 -hardware_pwm: false - -# this is the auxiliary fan -# comment out it if you don't have auxiliary fan -[fan_generic fan2] -pin: PA8 -cycle_time: 0.01 -hardware_pwm: false - -# this is the exhaust fan -# comment out it if you don't have exhaust fan -[fan_generic fan3] -pin: PA9 -cycle_time: 0.01 -hardware_pwm: false - -[gcode_macro M106] -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} -``` diff --git a/doc/printer_settings/bed-types.md b/doc/printer_settings/bed-types.md deleted file mode 100644 index eb079689d5..0000000000 --- a/doc/printer_settings/bed-types.md +++ /dev/null @@ -1,28 +0,0 @@ -# Multiple bed types - -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. - -![bed-types](https://github.com/OrcaSlicer/OrcaSlicer/blob/main/doc/images/bed-types.gif?raw=true) - -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} - SET_GCODE_OFFSET Z=0.0 -{endif} -``` - -available bed types are: - -```c++ -"Cool Plate" -"Engineering Plate" -"High Temp Plate" -"Textured PEI Plate" -```