diff --git a/build_linux.sh b/build_linux.sh
index eb3c1bc920..2af0f63599 100755
--- a/build_linux.sh
+++ b/build_linux.sh
@@ -30,7 +30,7 @@ function check_available_memory_and_disk() {
}
function usage() {
- echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-h][-i][-j N][-p][-r][-s][-u]"
+ echo "Usage: ./${SCRIPT_NAME} [-1][-b][-c][-d][-h][-i][-j N][-p][-r][-s][-u][-l]"
echo " -1: limit builds to one core (where possible)"
echo " -j N: limit builds to N cores (where possible)"
echo " -b: build in debug mode"
@@ -43,6 +43,7 @@ function usage() {
echo " -r: skip RAM and disk checks (low RAM compiling)"
echo " -s: build the Orca Slicer (optional)"
echo " -u: install system dependencies (asks for sudo password; build prerequisite)"
+ echo " -l: use Clang instead of GCC (default: GCC)"
echo "For a first use, you want to './${SCRIPT_NAME} -u'"
echo " and then './${SCRIPT_NAME} -dsi'"
}
@@ -50,7 +51,7 @@ function usage() {
SLIC3R_PRECOMPILED_HEADERS="ON"
unset name
-while getopts ":1j:bcCdhiprsu" opt ; do
+while getopts ":1j:bcCdhiprsul" opt ; do
case ${opt} in
1 )
export CMAKE_BUILD_PARALLEL_LEVEL=1
@@ -88,6 +89,9 @@ while getopts ":1j:bcCdhiprsu" opt ; do
u )
UPDATE_LIB="1"
;;
+ l )
+ USE_CLANG="1"
+ ;;
esac
done
@@ -139,6 +143,11 @@ if ! [[ -n "${SKIP_RAM_CHECK}" ]] ; then
check_available_memory_and_disk
fi
+export CMAKE_C_CXX_COMPILER_CLANG=""
+if [[ -n "${USE_CLANG}" ]] ; then
+ export CMAKE_C_CXX_COMPILER_CLANG="-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++"
+fi
+
if [[ -n "${BUILD_DEPS}" ]] ; then
echo "Configuring dependencies..."
BUILD_ARGS="${DEPS_EXTRA_BUILD_ARGS} -DDEP_WX_GTK3=ON"
@@ -155,13 +164,13 @@ if [[ -n "${BUILD_DEPS}" ]] ; then
if [ ! -d "deps/build/release" ] ; then
mkdir deps/build/release
fi
- cmake -S deps -B deps/build/release -DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} -G Ninja -DDESTDIR="${SCRIPT_PATH}/deps/build/destdir" -DDEP_DOWNLOAD_DIR="${SCRIPT_PATH}/deps/DL_CACHE" ${COLORED_OUTPUT} ${BUILD_ARGS}
+ cmake ${CMAKE_C_CXX_COMPILER_CLANG} -S deps -B deps/build/release -DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} -G Ninja -DDESTDIR="${SCRIPT_PATH}/deps/build/destdir" -DDEP_DOWNLOAD_DIR="${SCRIPT_PATH}/deps/DL_CACHE" ${COLORED_OUTPUT} ${BUILD_ARGS}
cmake --build deps/build/release
BUILD_ARGS="${BUILD_ARGS} -DCMAKE_BUILD_TYPE=Debug"
fi
- echo "cmake -S deps -B deps/build -G Ninja ${BUILD_ARGS}"
- cmake -S deps -B deps/build -G Ninja ${COLORED_OUTPUT} ${BUILD_ARGS}
+ echo "cmake -S deps -B deps/build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja ${BUILD_ARGS}"
+ cmake -S deps -B deps/build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja ${COLORED_OUTPUT} ${BUILD_ARGS}
cmake --build deps/build
fi
@@ -180,7 +189,7 @@ if [[ -n "${BUILD_ORCA}" ]] ; then
BUILD_ARGS="${BUILD_ARGS} -DBBL_RELEASE_TO_PUBLIC=1 -DBBL_INTERNAL_TESTING=0"
fi
- CMAKE_CMD="cmake -S . -B build -G Ninja \
+ CMAKE_CMD="cmake -S . -B build ${CMAKE_C_CXX_COMPILER_CLANG} -G Ninja \
-DSLIC3R_PCH=${SLIC3R_PRECOMPILED_HEADERS} \
-DCMAKE_PREFIX_PATH="${SCRIPT_PATH}/deps/build/destdir/usr/local" \
-DSLIC3R_STATIC=1 \
diff --git a/doc/Home.md b/doc/Home.md
index 9d775f3cb6..f6ea7bc1ac 100644
--- a/doc/Home.md
+++ b/doc/Home.md
@@ -2,32 +2,56 @@
Orca slicer is a powerful open source slicer for FFF (FDM) 3D Printers. This wiki page aims to provide an detailed explanation of the slicer settings, how to get the most out of them as well as how to calibrate and setup your printer.
-- [Prepare](#prepare)
-- [Print Settings, Tips and Tricks](#print-settings-tips-and-tricks)
- - [Quality Settings](#quality-settings)
- - [Speed Settings](#speed-settings)
- - [Strength Settings](#strength-settings)
+- [Printer Settings](#printer-settings)
- [Material Settings](#material-settings)
- - [Printer Settings](#printer-settings)
-- [Printer Calibration](#printer-calibration)
+- [Prepare](#prepare)
+- [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)
+- [Calibrations](#calibrations)
- [Developer Section](#developer-section)
> [!NOTE]
> The Wiki is **Work In Progress** so bear with us while we get it up and running!
> Please consider contributing to the wiki following the [How to contribute to the wiki](How-to-wiki) guide.
+## Printer Settings
+
+
+
+- [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
+
+
+
+- [Single Extruder Multimaterial](semm)
+- [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient)
+
## Prepare
First steps to prepare your model/s for printing.
- [STL Transformation](stl-transformation)
-## Print Settings, Tips and Tricks
+## Process Settings
+
+
The below sections provide a detailed settings explanation as well as tips and tricks in setting these for optimal print results.
### Quality Settings
+
+
- [Layer Height Settings](quality_settings_layer_height)
- [Line Width Settings](quality_settings_line_width)
- [Seam Settings](quality_settings_seam)
@@ -44,28 +68,38 @@ The below sections provide a detailed settings explanation as well as tips and t
- [Polyholes](quality_settings_precision#polyholes)
- [Wall generator](quality_settings_wall_generator)
-### Speed Settings
-
-- [Extrusion rate smoothing](speed_extrusion_rate_smoothing)
-
### Strength Settings
+
+
+- [Top and Bottom Shells](strength_settings_top_bottom_shells)
- [Infill](strength_settings_infill)
-## Material Settings
+### Speed Settings
-- [Single Extruder Multimaterial](semm)
-- [Pellet Printers (pellet flow coefficient)](pellet-flow-coefficient)
+
-### Printer Settings
+- [Extrusion rate smoothing](speed_settings_extrusion_rate_smoothing)
-- [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)
+### Support Settings
-## Printer Calibration
+
+
+WIP...
+
+### Multimaterial Settings
+
+
+
+WIP...
+
+### Others Settings
+
+
+
+WIP...
+
+## Calibrations
The [Calibration Guide](Calibration) outlines Orca’s key calibration tests and their suggested order of execution.
diff --git a/doc/calibration/Calibration.md b/doc/calibration/Calibration.md
index 5c4e6820cd..c8d8718dae 100644
--- a/doc/calibration/Calibration.md
+++ b/doc/calibration/Calibration.md
@@ -25,7 +25,7 @@ The recommended order for calibration is as follows:
- **[Adaptative 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.
-
+
2. **[Retraction](retraction-calib):** Calibrate the retraction settings to minimize stringing and improve print quality. Doing this after Flow and
@@ -47,10 +47,9 @@ The recommended order for calibration is as follows:
-### VFA
+7. **[VFA](vfa-calib):** A VFA speed test is available to find resonance speeds.
-Vertical Fine Artifacts (VFA) are small artifacts that can occur on the surface of a 3D print, particularly in areas where there are sharp corners or changes in direction. These artifacts can be caused by a variety of factors, including mechanical vibrations, resonance, and other factors that can affect the quality of the print.
-Because of the nature of these artifacts the methods to reduce them can be mechanical such as changing motors, belts and pulleys or with advanced calibrations such as Jerk/[Junction Deviation](junction-deviation) corrections or [Input Shaping](input-shaping).
+
---
@@ -62,4 +61,3 @@ _Credits:_
- _The temp tower model is remixed from [Smart compact temperature calibration tower](https://www.thingiverse.com/thing:2729076)._
- _The max flowrate test was inspired by Stefan (CNC Kitchen), and the model used in the test is a remix of his [Extrusion Test Structure](https://www.printables.com/model/342075-extrusion-test-structure)._
- _ZV Input Shaping is inspired by [Marlin Input Shaping](https://marlinfw.org/docs/features/input_shaping.html) and [Ringing Tower 3D STL](https://marlinfw.org/assets/stl/ringing_tower.stl)._
-- _ChatGPT_ ;)
diff --git a/doc/calibration/cornering-calib.md b/doc/calibration/cornering-calib.md
index e8d78f5742..f5634eb875 100644
--- a/doc/calibration/cornering-calib.md
+++ b/doc/calibration/cornering-calib.md
@@ -4,7 +4,7 @@ Cornering is a critical aspect of 3D printing that affects the quality and accur
## Jerk
-WIP... TODO: Jerk calibration not implemented yet.
+TODO: Jerk calibration not implemented yet.
## Junction Deviation
diff --git a/doc/calibration/input-shaping-calib.md b/doc/calibration/input-shaping-calib.md
index c2b6f8324c..2624aedf17 100644
--- a/doc/calibration/input-shaping-calib.md
+++ b/doc/calibration/input-shaping-calib.md
@@ -3,7 +3,10 @@
During high-speed movements, vibrations can cause a phenomenon called "ringing," where periodic ripples appear on the print surface. Input Shaping provides an effective solution by counteracting these vibrations, improving print quality and reducing wear on components without needing to significantly lower print speeds.
- [Klipper](#klipper)
+ - [Resonance Compensation](#resonance-compensation)
- [Marlin](#marlin)
+ - [ZV Input Shaping](#zv-input-shaping)
+ - [Fixed-Time Motion](#fixed-time-motion)
## Klipper
@@ -125,5 +128,4 @@ ZV Input Shaping introduces an anti-vibration signal into the stepper motion for
### Fixed-Time Motion
-WIP...
-This calibration test is currently under development. See the [Marlin documentation](https://marlinfw.org/docs/gcode/M493.html) for more information.
+TODO: This calibration test is currently under development. See the [Marlin documentation](https://marlinfw.org/docs/gcode/M493.html) for more information.
diff --git a/doc/calibration/vfa-calib.md b/doc/calibration/vfa-calib.md
new file mode 100644
index 0000000000..f449e6baea
--- /dev/null
+++ b/doc/calibration/vfa-calib.md
@@ -0,0 +1,13 @@
+# VFA
+
+Vertical Fine Artifacts (VFA) are small artifacts that can occur on the surface of a 3D print, particularly in areas where there are sharp corners or changes in direction. These artifacts can be caused by a variety of factors, including mechanical vibrations, resonance, and other factors that can affect the quality of the print.
+
+Because of the nature of these artifacts the methods to reduce them can be mechanical such as changing motors, belts and pulleys or with advanced calibrations such as [Jerk/Junction Deviation](cornering-calib) corrections or [Input Shaping](input-shaping-calib).
+
+## VFA Test
+
+OrcaSlicer's VFA test is used to identify the print speed that minimizes ringing artifacts. It prints a tower with walls at key angles while gradually increasing the print speed. The goal is to find the speed at which VFA artifacts are least visible, revealing the optimal range for clean surfaces.
+
+
+
+
\ No newline at end of file
diff --git a/doc/calibration/volumetric-speed-calib.md b/doc/calibration/volumetric-speed-calib.md
index e904e3e50c..6eb40f5203 100644
--- a/doc/calibration/volumetric-speed-calib.md
+++ b/doc/calibration/volumetric-speed-calib.md
@@ -1,4 +1,4 @@
-# Max Volumetric speed
+# Max Volumetric Speed (FlowRate) Calibration
This is a test designed to calibrate the maximum volumetric speed of the specific filament. The generic or 3rd party filament types may not have the correct volumetric flow rate set in the filament. This test will help you to find the maximum volumetric speed of the filament.
@@ -6,15 +6,15 @@ You will be promted to enter the settings for the test: start volumetric speed,
Once printed, take note of where the layers begin to fail and where the quality begins to suffer. Pay attention to changes from matte to shiny as well.
-
+
Using calipers or a ruler, measure the height of the print at that point. Use the following calculation to determine the correct max flow value: `start + (height-measured * step)` . For example in the photo below, and using the default setting values, the print quality began to suffer at 19mm measured, so the calculation would be: `5 + (19 * 0.5)` , or `13mm³/s` using the default values. Enter your number into the "Max volumetric speed" value in the filament settings.
-
+
-You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filmanet.
+You can also return to OrcaSlicer in the "Preview" tab, make sure the color scheme "flow" is selected. Scroll down to the layer height that you measured, and click on the toolhead slider. This will indicate the max flow level for your filament.
-
+
> [!NOTE]
> You may also choose to conservatively reduce the flow by 5-10% to ensure print quality.
diff --git a/doc/developer-reference/How-to-build.md b/doc/developer-reference/How-to-build.md
index a480a2f94a..ee2a772330 100644
--- a/doc/developer-reference/How-to-build.md
+++ b/doc/developer-reference/How-to-build.md
@@ -1,10 +1,33 @@
# 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 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 (Recommended)](#using-docker-recommended)
+ - [Docker Dependencies](#docker-dependencies)
+ - [Docker Instructions](#docker-instructions)
+ - [Troubleshooting](#troubleshooting)
+- [Ubuntu](#ubuntu)
+ - [Ubuntu Dependencies](#ubuntu-dependencies)
+ - [Ubuntu Instructions](#ubuntu-instructions)
+- [Portable User Configuration](#portable-user-configuration)
+ - [Example folder structure](#example-folder-structure)
+
## Windows 64-bit
-This guide is for building your Visual Studio 2022 solution for OrcaSlicer on Windows 64-bit.
+How to building with Visual Studio 2022 on Windows 64-bit.
-### Tools Required
+### Windows Tools Required
- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/) or Visual Studio 2019
```shell
@@ -33,7 +56,7 @@ This guide is for building your Visual Studio 2022 solution for OrcaSlicer on Wi
> winget install --id=GitHub.GitHubDesktop -e
> ```
-### Instructions
+### Windows Instructions
1. Clone the repository:
- If using GitHub Desktop clone the repository from the GUI.
@@ -74,9 +97,11 @@ This guide is for building your Visual Studio 2022 solution for OrcaSlicer on Wi
> [!NOTE]
> If the build fails, try deleting the `build/` and `deps/build/` directories to clear any cached build data. Rebuilding after a clean-up is usually sufficient to resolve most issues.
-## macOS 64-bit
+## MacOS 64-bit
-### Tools Required
+How to building with Xcode on MacOS 64-bit.
+
+### MacOS Tools Required
- Xcode
- CMake (version 3.31.x is mandatory)
@@ -114,7 +139,7 @@ cmake --version
> [!IMPORTANT]
> If you've recently upgraded Xcode, be sure to open Xcode at least once and install the required macOS build support.
-### Instructions
+### MacOS Instructions
1. Clone the repository:
```shell
@@ -147,14 +172,18 @@ To build and debug directly in Xcode:
## Linux
+Linux instructions are available in two formats: using Docker (recommended) or building directly on your system.
+
### Using Docker (Recommended)
-#### Dependencies
+How to build and run OrcaSlicer using Docker.
+
+#### Docker Dependencies
- Docker
- Git
-#### Instructions
+#### Docker Instructions
```shell
git clone https://github.com/SoftFever/OrcaSlicer && cd OrcaSlicer && ./DockerBuild.sh && ./DockerRun.sh
@@ -179,7 +208,9 @@ By uncommenting and using these options as needed, you can often resolve issues
## Ubuntu
-### Dependencies
+How to build OrcaSlicer on Ubuntu.
+
+### Ubuntu Dependencies
All required dependencies will be installed automatically by the provided shell script, including:
@@ -199,9 +230,27 @@ All required dependencies will be installed automatically by the provided shell
- git
- texinfo
-### Instructions
+### Ubuntu Instructions
```shell
`./build_linux.sh -u` # install dependencies
`./build_linux.sh -disr` # build OrcaSlicer
```
+
+## 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-wiki.md b/doc/developer-reference/How-to-wiki.md
index 86f3779257..bb650dcac1 100644
--- a/doc/developer-reference/How-to-wiki.md
+++ b/doc/developer-reference/How-to-wiki.md
@@ -150,10 +150,13 @@ 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/SoftFever/OrcaSlicer/blob/main/doc/images/
```
+
- Raw tag:
+
```markdown
?raw=true
```
@@ -167,6 +170,7 @@ Format = `![[filename]](` + Base URL + filename.extension + Raw tag + `)`
```
- For an image in a subdirectory like `doc/images/calibration/pa-example.svg`:
+
```markdown

```
@@ -194,6 +198,7 @@ If resizing is necessary (e.g., for thumbnails), use the following syntax:
HTML Format = `
```
diff --git a/doc/developer-reference/Preset-and-bundle.md b/doc/developer-reference/Preset-and-bundle.md
index ca2d680f0d..55ad3632f1 100644
--- a/doc/developer-reference/Preset-and-bundle.md
+++ b/doc/developer-reference/Preset-and-bundle.md
@@ -9,15 +9,15 @@ As the name might suggest this class deals with presets for various things. It d
- `TYPE_PRINT`: Refers to a process preset. It's called 'Print' probably due to some legacy code.
-
+
- `TYPE_FILAMENT`: As the name suggests this preset is for filaments
-
+
- `TYPE_PRINTER`: Preset for printers.
-
+
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.
diff --git a/doc/developer-reference/plater-sidebar-tab-combobox.md b/doc/developer-reference/plater-sidebar-tab-combobox.md
index e7a4c51895..45d5c460de 100644
--- a/doc/developer-reference/plater-sidebar-tab-combobox.md
+++ b/doc/developer-reference/plater-sidebar-tab-combobox.md
@@ -5,24 +5,24 @@ WIP...
> [!WARNING]
> !! incomplete, possibly inaccurate, being updated with new info !!
-## [`Plater`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Plater.hpp)
+## [`Plater`](https://github.com/SoftFever/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/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Plater.hpp)
+## [`Sidebar`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/gui/Plater.hpp)
This is relating the the sidebar in the application window
-
+
-## [`ComboBox`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Widgets/ComboBox.hpp)
+## [`ComboBox`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/gui/Widgets/ComboBox.hpp)
The drop down menus where you can see and select presets
-
+
-## [`Tab`](https://github.com/SoftFever/OrcaSlicer/blob/main/src/slic3r/GUI/Tab.hpp)
+## [`Tab`](https://github.com/SoftFever/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.
-
\ No newline at end of file
+
diff --git a/doc/images/combobox.png b/doc/images/GUI/combobox.png
similarity index 100%
rename from doc/images/combobox.png
rename to doc/images/GUI/combobox.png
diff --git a/doc/images/filament-preset.png b/doc/images/GUI/filament-preset.png
similarity index 100%
rename from doc/images/filament-preset.png
rename to doc/images/GUI/filament-preset.png
diff --git a/doc/images/full-sidebar.png b/doc/images/GUI/full-sidebar.png
similarity index 100%
rename from doc/images/full-sidebar.png
rename to doc/images/GUI/full-sidebar.png
diff --git a/doc/images/printer-preset.png b/doc/images/GUI/printer-preset.png
similarity index 100%
rename from doc/images/printer-preset.png
rename to doc/images/GUI/printer-preset.png
diff --git a/doc/images/GUI/process-preset.png b/doc/images/GUI/process-preset.png
new file mode 100644
index 0000000000..85f329314d
Binary files /dev/null and b/doc/images/GUI/process-preset.png differ
diff --git a/doc/images/GUI/process/process-multimaterial.png b/doc/images/GUI/process/process-multimaterial.png
new file mode 100644
index 0000000000..83bd9115f8
Binary files /dev/null and b/doc/images/GUI/process/process-multimaterial.png differ
diff --git a/doc/images/GUI/process/process-others.png b/doc/images/GUI/process/process-others.png
new file mode 100644
index 0000000000..002c85ccb6
Binary files /dev/null and b/doc/images/GUI/process/process-others.png differ
diff --git a/doc/images/GUI/process/process-quality.png b/doc/images/GUI/process/process-quality.png
new file mode 100644
index 0000000000..b84f855870
Binary files /dev/null and b/doc/images/GUI/process/process-quality.png differ
diff --git a/doc/images/GUI/process/process-speed.png b/doc/images/GUI/process/process-speed.png
new file mode 100644
index 0000000000..75145adad7
Binary files /dev/null and b/doc/images/GUI/process/process-speed.png differ
diff --git a/doc/images/GUI/process/process-strength.png b/doc/images/GUI/process/process-strength.png
new file mode 100644
index 0000000000..8f92633e50
Binary files /dev/null and b/doc/images/GUI/process/process-strength.png differ
diff --git a/doc/images/GUI/process/process-support.png b/doc/images/GUI/process/process-support.png
new file mode 100644
index 0000000000..1d44decf2b
Binary files /dev/null and b/doc/images/GUI/process/process-support.png differ
diff --git a/doc/images/tab-popup.png b/doc/images/GUI/tab-popup.png
similarity index 100%
rename from doc/images/tab-popup.png
rename to doc/images/GUI/tab-popup.png
diff --git a/doc/images/caliper_sample_mvf.jpg b/doc/images/MVF/mvf_caliper_sample_mvf.jpg
similarity index 100%
rename from doc/images/caliper_sample_mvf.jpg
rename to doc/images/MVF/mvf_caliper_sample_mvf.jpg
diff --git a/doc/images/max_volumetric_flow.jpg b/doc/images/MVF/mvf_gui_flow.jpg
similarity index 100%
rename from doc/images/max_volumetric_flow.jpg
rename to doc/images/MVF/mvf_gui_flow.jpg
diff --git a/doc/images/vmf_measurement_point.jpg b/doc/images/MVF/mvf_measurement_point.jpg
similarity index 100%
rename from doc/images/vmf_measurement_point.jpg
rename to doc/images/MVF/mvf_measurement_point.jpg
diff --git a/doc/images/Precision/PreciseWallOff.svg b/doc/images/Precision/PreciseWallOff.svg
index f920f06f41..99fe13f6f7 100644
--- a/doc/images/Precision/PreciseWallOff.svg
+++ b/doc/images/Precision/PreciseWallOff.svg
@@ -1,3 +1,3 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/images/Precision/PreciseWallOn.svg b/doc/images/Precision/PreciseWallOn.svg
index 5d27354d1e..48d1fcac7f 100644
--- a/doc/images/Precision/PreciseWallOn.svg
+++ b/doc/images/Precision/PreciseWallOn.svg
@@ -1,3 +1,3 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/doc/images/STL-Transformation/stl-transformation.png b/doc/images/STL-Transformation/stl-transformation.png
index 4390b85403..6527e14826 100644
Binary files a/doc/images/STL-Transformation/stl-transformation.png and b/doc/images/STL-Transformation/stl-transformation.png differ
diff --git a/doc/images/fill/InfillAnchorOff.png b/doc/images/fill/InfillAnchorOff.png
new file mode 100644
index 0000000000..291f41bb34
Binary files /dev/null and b/doc/images/fill/InfillAnchorOff.png differ
diff --git a/doc/images/fill/InfillAnchorOn.png b/doc/images/fill/InfillAnchorOn.png
new file mode 100644
index 0000000000..5757a4f9be
Binary files /dev/null and b/doc/images/fill/InfillAnchorOn.png differ
diff --git a/doc/images/fill/InfillWallOverlapOff.svg b/doc/images/fill/InfillWallOverlapOff.svg
new file mode 100644
index 0000000000..a524a6bf73
--- /dev/null
+++ b/doc/images/fill/InfillWallOverlapOff.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/doc/images/fill/InfillWallOverlapOn.svg b/doc/images/fill/InfillWallOverlapOn.svg
new file mode 100644
index 0000000000..cc348c099b
--- /dev/null
+++ b/doc/images/fill/InfillWallOverlapOn.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/doc/images/fill/infill-top-2d-honeycomb.png b/doc/images/fill/infill-top-2d-honeycomb.png
new file mode 100644
index 0000000000..e557f81002
Binary files /dev/null and b/doc/images/fill/infill-top-2d-honeycomb.png differ
diff --git a/doc/images/fill/infill-top-2d-lattice.png b/doc/images/fill/infill-top-2d-lattice.png
index a67d27a4f4..01900ad1f1 100644
Binary files a/doc/images/fill/infill-top-2d-lattice.png and b/doc/images/fill/infill-top-2d-lattice.png differ
diff --git a/doc/images/fill/infill-top-3d-honeycomb.png b/doc/images/fill/infill-top-3d-honeycomb.png
index 749df03131..30134a3f83 100644
Binary files a/doc/images/fill/infill-top-3d-honeycomb.png and b/doc/images/fill/infill-top-3d-honeycomb.png differ
diff --git a/doc/images/fill/infill-top-adaptive-cubic.png b/doc/images/fill/infill-top-adaptive-cubic.png
index 8fdb765017..31cb7220be 100644
Binary files a/doc/images/fill/infill-top-adaptive-cubic.png and b/doc/images/fill/infill-top-adaptive-cubic.png differ
diff --git a/doc/images/fill/infill-top-aligned-rectilinear.png b/doc/images/fill/infill-top-aligned-rectilinear.png
index 0df2b714d9..b31ad33c3f 100644
Binary files a/doc/images/fill/infill-top-aligned-rectilinear.png and b/doc/images/fill/infill-top-aligned-rectilinear.png differ
diff --git a/doc/images/fill/infill-top-archimedean-chords.png b/doc/images/fill/infill-top-archimedean-chords.png
index 3e2f78d47a..f70f98cde5 100644
Binary files a/doc/images/fill/infill-top-archimedean-chords.png and b/doc/images/fill/infill-top-archimedean-chords.png differ
diff --git a/doc/images/fill/infill-top-concentric.png b/doc/images/fill/infill-top-concentric.png
index fe981fe792..605f182e65 100644
Binary files a/doc/images/fill/infill-top-concentric.png and b/doc/images/fill/infill-top-concentric.png differ
diff --git a/doc/images/fill/infill-top-coss-zag.png b/doc/images/fill/infill-top-coss-zag.png
new file mode 100644
index 0000000000..1c037b69e4
Binary files /dev/null and b/doc/images/fill/infill-top-coss-zag.png differ
diff --git a/doc/images/fill/infill-top-cross-hatch.png b/doc/images/fill/infill-top-cross-hatch.png
index 15e6b67a9a..1bcc7b217a 100644
Binary files a/doc/images/fill/infill-top-cross-hatch.png and b/doc/images/fill/infill-top-cross-hatch.png differ
diff --git a/doc/images/fill/infill-top-cubic.png b/doc/images/fill/infill-top-cubic.png
index 0f3a1af305..2c240e8ec0 100644
Binary files a/doc/images/fill/infill-top-cubic.png and b/doc/images/fill/infill-top-cubic.png differ
diff --git a/doc/images/fill/infill-top-grid.png b/doc/images/fill/infill-top-grid.png
index 6a853404a6..0582468d68 100644
Binary files a/doc/images/fill/infill-top-grid.png and b/doc/images/fill/infill-top-grid.png differ
diff --git a/doc/images/fill/infill-top-gyroid.png b/doc/images/fill/infill-top-gyroid.png
index dee06c34cd..930f4e7de9 100644
Binary files a/doc/images/fill/infill-top-gyroid.png and b/doc/images/fill/infill-top-gyroid.png differ
diff --git a/doc/images/fill/infill-top-hilbert-curve.png b/doc/images/fill/infill-top-hilbert-curve.png
index 60399e2e9f..4c74acbe7e 100644
Binary files a/doc/images/fill/infill-top-hilbert-curve.png and b/doc/images/fill/infill-top-hilbert-curve.png differ
diff --git a/doc/images/fill/infill-top-honeycomb.png b/doc/images/fill/infill-top-honeycomb.png
index bf6ec72ef2..16face86f1 100644
Binary files a/doc/images/fill/infill-top-honeycomb.png and b/doc/images/fill/infill-top-honeycomb.png differ
diff --git a/doc/images/fill/infill-top-infill-top-2d-honeycomb.png b/doc/images/fill/infill-top-infill-top-2d-honeycomb.png
deleted file mode 100644
index 257dd83c7c..0000000000
Binary files a/doc/images/fill/infill-top-infill-top-2d-honeycomb.png and /dev/null differ
diff --git a/doc/images/fill/infill-top-lightning.png b/doc/images/fill/infill-top-lightning.png
index cd9903e34c..9892bbb5c7 100644
Binary files a/doc/images/fill/infill-top-lightning.png and b/doc/images/fill/infill-top-lightning.png differ
diff --git a/doc/images/fill/infill-top-line.png b/doc/images/fill/infill-top-line.png
index 67b1ff61fa..d028a2e442 100644
Binary files a/doc/images/fill/infill-top-line.png and b/doc/images/fill/infill-top-line.png differ
diff --git a/doc/images/fill/infill-top-locked-zag.png b/doc/images/fill/infill-top-locked-zag.png
new file mode 100644
index 0000000000..b9592186c5
Binary files /dev/null and b/doc/images/fill/infill-top-locked-zag.png differ
diff --git a/doc/images/fill/infill-top-octagram-spiral.png b/doc/images/fill/infill-top-octagram-spiral.png
index 94afbd3eab..51c76c400e 100644
Binary files a/doc/images/fill/infill-top-octagram-spiral.png and b/doc/images/fill/infill-top-octagram-spiral.png differ
diff --git a/doc/images/fill/infill-top-quarter-cubic.png b/doc/images/fill/infill-top-quarter-cubic.png
index 1041e01f29..aae74aa1f3 100644
Binary files a/doc/images/fill/infill-top-quarter-cubic.png and b/doc/images/fill/infill-top-quarter-cubic.png differ
diff --git a/doc/images/fill/infill-top-rectilinear.png b/doc/images/fill/infill-top-rectilinear.png
index c4b5639b4f..2f0b84e36c 100644
Binary files a/doc/images/fill/infill-top-rectilinear.png and b/doc/images/fill/infill-top-rectilinear.png differ
diff --git a/doc/images/fill/infill-top-support-cubic.png b/doc/images/fill/infill-top-support-cubic.png
index 309910eab4..248276a56f 100644
Binary files a/doc/images/fill/infill-top-support-cubic.png and b/doc/images/fill/infill-top-support-cubic.png differ
diff --git a/doc/images/fill/infill-top-tpms-d.png b/doc/images/fill/infill-top-tpms-d.png
index 21159fe3ab..f86cae3058 100644
Binary files a/doc/images/fill/infill-top-tpms-d.png and b/doc/images/fill/infill-top-tpms-d.png differ
diff --git a/doc/images/fill/infill-top-tri-hexagon.png b/doc/images/fill/infill-top-tri-hexagon.png
index e2229ae195..2adfc583fc 100644
Binary files a/doc/images/fill/infill-top-tri-hexagon.png and b/doc/images/fill/infill-top-tri-hexagon.png differ
diff --git a/doc/images/fill/infill-top-triangles.png b/doc/images/fill/infill-top-triangles.png
index e8bbed4e8d..921b6db9eb 100644
Binary files a/doc/images/fill/infill-top-triangles.png and b/doc/images/fill/infill-top-triangles.png differ
diff --git a/doc/images/fill/infill-top-zig-zag.png b/doc/images/fill/infill-top-zig-zag.png
new file mode 100644
index 0000000000..3a9adb7ca7
Binary files /dev/null and b/doc/images/fill/infill-top-zig-zag.png differ
diff --git a/doc/images/process-preset.png b/doc/images/gui/process-preset-full.png
similarity index 100%
rename from doc/images/process-preset.png
rename to doc/images/gui/process-preset-full.png
diff --git a/doc/images/vfa/vfa_test_menu.png b/doc/images/vfa/vfa_test_menu.png
new file mode 100644
index 0000000000..40580284ab
Binary files /dev/null and b/doc/images/vfa/vfa_test_menu.png differ
diff --git a/doc/images/vfa/vfa_test_print.jpg b/doc/images/vfa/vfa_test_print.jpg
new file mode 100644
index 0000000000..0423a2d1b8
Binary files /dev/null and b/doc/images/vfa/vfa_test_print.jpg differ
diff --git a/doc/material_settings/semm.md b/doc/material_settings/semm.md
index a5e22f3584..b0c84dacc0 100644
--- a/doc/material_settings/semm.md
+++ b/doc/material_settings/semm.md
@@ -16,4 +16,3 @@ Ramming is a technique used to push the filament through the nozzle to ensure th
## Manual filament change
Manual filament change is a feature that allows the user to change the filament during the print. This can be useful for multi-material prints or when changing colors. The user can specify the position and timing of the filament change, as well as the speed and distance of the ramming process.
-WIP...
diff --git a/doc/print_settings/quality/quality_settings_wall_generator.md b/doc/print_settings/quality/quality_settings_wall_generator.md
index f7279aa253..fe39915e17 100644
--- a/doc/print_settings/quality/quality_settings_wall_generator.md
+++ b/doc/print_settings/quality/quality_settings_wall_generator.md
@@ -1,23 +1,58 @@
# Wall Generator
-WIP...
+The Wall Generator defines how the outer and inner walls (perimeters) of the model are printed.
## Classic
-WIP...
+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.

## Arachne
-WIP...
+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.

-- Wall transitioning threshhold angle
-- Wall transitioning filter
-- Wall transitioning length
-- Wall distribution count
-- First layer minimum wall width
-- Minimum feature size
-- Minimum wall length
+### 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**. 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_extrusion_rate_smoothing.md b/doc/print_settings/speed/speed_settings_extrusion_rate_smoothing.md
similarity index 100%
rename from doc/print_settings/speed/speed_extrusion_rate_smoothing.md
rename to doc/print_settings/speed/speed_settings_extrusion_rate_smoothing.md
diff --git a/doc/print_settings/strength/infill_desc_calculator.xlsx b/doc/print_settings/strength/infill_desc_calculator.xlsx
index d2eb743142..3cefcb777e 100644
Binary files a/doc/print_settings/strength/infill_desc_calculator.xlsx and b/doc/print_settings/strength/infill_desc_calculator.xlsx differ
diff --git a/doc/print_settings/strength/strength_settings_infill.md b/doc/print_settings/strength/strength_settings_infill.md
index 394ab8720e..6730bf4b5d 100644
--- a/doc/print_settings/strength/strength_settings_infill.md
+++ b/doc/print_settings/strength/strength_settings_infill.md
@@ -2,6 +2,41 @@
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)
+- [Direction and Rotation](#direction-and-rotation)
+ - [Direction](#direction)
+ - [Rotation](#rotation)
+- [Infill Wall Overlap](#infill-wall-overlap)
+- [Apply gap fill](#apply-gap-fill)
+- [Anchor](#anchor)
+- [Internal Solid Infill](#internal-solid-infill)
+- [Sparse Infill Pattern](#sparse-infill-pattern)
+ - [Concentric](#concentric)
+ - [Rectilinear](#rectilinear)
+ - [Grid](#grid)
+ - [2D Lattice](#2d-lattice)
+ - [Line](#line)
+ - [Cubic](#cubic)
+ - [Triangles](#triangles)
+ - [Tri-hexagon](#tri-hexagon)
+ - [Gyroid](#gyroid)
+ - [TPMS-D](#tpms-d)
+ - [Honeycomb](#honeycomb)
+ - [Adaptive Cubic](#adaptive-cubic)
+ - [Aligned Rectilinear](#aligned-rectilinear)
+ - [2D Honeycomb](#2d-honeycomb)
+ - [3D Honeycomb](#3d-honeycomb)
+ - [Hilbert Curve](#hilbert-curve)
+ - [Archimedean Chords](#archimedean-chords)
+ - [Octagram Spiral](#octagram-spiral)
+ - [Support Cubic](#support-cubic)
+ - [Lightning](#lightning)
+ - [Cross Hatch](#cross-hatch)
+ - [Quarter Cubic](#quarter-cubic)
+ - [Zig Zag](#zig-zag)
+ - [Coss Zag](#coss-zag)
+ - [Locked Zag](#locked-zag)
+
## Sparse infill density
Density usually should be calculated as a % of the total infill volume, not the total print volume.
@@ -9,6 +44,82 @@ Higher density increases strength but also material usage and print time. Lower
Nevertheless, **not all patterns interpret density the same way**, so the actual material usage may vary. You can see each pattern's material usage in the [Sparse Infill Pattern](#sparse-infill-pattern) section.
+## Direction and Rotation
+
+### Direction
+
+Controls the direction of the infill lines to optimize or strengthen the print.
+
+### 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
+```
+
+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
+```
+
+If there are more layers than angles, the sequence repeats.
+> [!NOTE]
+> Not all sparse infill 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**
+
+
+
+- **Infill Wall Overlap On**
+
+
+
+## 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.
+
+## 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**
+
+
+
+- **Anchor On**
+
+
+
+## Internal Solid Infill
+
+Line pattern of internal solid infill. If the [detect narrow internal solid infill](strength_settings_advanced#detect-narrow-internal-solid-infill) be enabled, the concentric pattern will be used for the small area.
+
## Sparse Infill Pattern
Infill patterns determine how material is distributed within a print. Different patterns can affect strength, flexibility, and print speed using the same density setting.
@@ -18,30 +129,33 @@ There is no one-size-fits-all solution, as the best pattern depends on the speci
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.
-| Infill | X-Y Strength | Z Strength | Material Usage | Print Time |
-|---------------------------------------------|--------------|-------------|----------------|-------------|
-| [Concentric](#concentric) | Low | Normal | Normal | Normal |
-| [Rectilinear](#rectilinear) | Normal-Low | Low | Normal | Normal |
-| [Grid](#grid) | High | High | Normal | Normal |
-| [2D Lattice](#2d-lattice) | Normal-Low | Low | Normal | Normal |
-| [Line](#line) | Low | Low | Normal | Normal-Low |
-| [Cubic](#cubic) | High | High | Normal | Normal-Low |
-| [Triangles](#triangles) | High | Normal | Normal | Normal-Low |
-| [Tri-hexagon](#tri-hexagon) | High | Normal-High | Normal | Normal-Low |
-| [Gyroid](#gyroid) | High | High | Normal | Normal-High |
-| [TPMS-D](#tpms-d) | High | High | Normal | High |
-| [Honeycomb](#honeycomb) | High | High | High | Ultra-High |
-| [Adaptive Cubic](#adaptive-cubic) | Normal-High | Normal-High | Low | Low |
-| [Aligned Rectilinear](#aligned-rectilinear) | Normal-Low | Normal | Normal | Normal |
-| [2D Honeycomb](#2d-honeycomb) | Normal-Low | Normal-Low | Normal | Normal-Low |
-| [3D Honeycomb](#3d-honeycomb) | Normal-High | Normal-High | Normal-Low | High |
-| [Hilbert Curve](#hilbert-curve) | Low | Normal | Normal | High |
-| [Archimedean Chords](#archimedean-chords) | Low | Normal | Normal | Normal-Low |
-| [Octagram Spiral](#octagram-spiral) | Low | Normal | Normal | Normal-High |
-| [Support Cubic](#support-cubic) | Low | Low | Extra-Low | Extra-Low |
-| [Lightning](#lightning) | Low | Low | Ultra-Low | Ultra-Low |
-| [Cross Hatch](#cross-hatch) | Normal-High | Normal-High | Normal | Normal-High |
-| [Quarter Cubic](#quarter-cubic) | High | High | Normal | Normal-Low |
+| Pattern | X-Y Strength | Z Strength | Material Usage | Print Time |
+|-----------------------------------------------|--------------|-------------|----------------|-------------|
+| [Concentric](#concentric) | Low | Normal | Normal | Normal |
+| [Rectilinear](#rectilinear) | Normal-Low | Low | Normal | Normal-Low |
+| [Grid](#grid) | High | High | Normal | Normal-Low |
+| [2D Lattice](#2d-lattice) | Normal-Low | Low | Normal | Normal-Low |
+| [Line](#line) | Low | Low | Normal | Normal-Low |
+| [Cubic](#cubic) | High | High | Normal | Normal-Low |
+| [Triangles](#triangles) | High | Normal | Normal | Normal-Low |
+| [Tri-hexagon](#tri-hexagon) | High | Normal-High | Normal | Normal-Low |
+| [Gyroid](#gyroid) | High | High | Normal | Normal-High |
+| [TPMS-D](#tpms-d) | High | High | Normal | High |
+| [Honeycomb](#honeycomb) | High | High | High | Ultra-High |
+| [Adaptive Cubic](#adaptive-cubic) | Normal-High | Normal-High | Low | Low |
+| [Aligned Rectilinear](#aligned-rectilinear) | Normal-Low | Normal | Normal | Normal-Low |
+| [2D Honeycomb](#2d-honeycomb) | Normal-Low | Normal-Low | Normal | Normal-Low |
+| [3D Honeycomb](#3d-honeycomb) | Normal-High | Normal-High | Normal-Low | High |
+| [Hilbert Curve](#hilbert-curve) | Low | Normal | Normal | High |
+| [Archimedean Chords](#archimedean-chords) | Low | Normal | Normal | Normal-Low |
+| [Octagram Spiral](#octagram-spiral) | Low | Normal | Normal | Normal |
+| [Support Cubic](#support-cubic) | Low | Low | Extra-Low | Extra-Low |
+| [Lightning](#lightning) | Low | Low | Ultra-Low | Ultra-Low |
+| [Cross Hatch](#cross-hatch) | Normal-High | Normal-High | Normal | Normal-High |
+| [Quarter Cubic](#quarter-cubic) | High | High | Normal | Normal-Low |
+| [Zig Zag](#zig-zag) | Normal-Low | Low | Normal | Normal |
+| [Coss Zag](#coss-zag) | Normal | Low | Normal | Normal |
+| [Locked Zag](#locked-zag) | Normal-Low | Normal-Low | Normal-High | Extra-High |
> [!NOTE]
> You can download [infill_desc_calculator.xlsx](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/print_settings/strength/infill_desc_calculator.xlsx?raw=true) used to calculate the values above.
@@ -61,14 +175,14 @@ Fills the area with progressively smaller versions of the outer contour, creatin
### Rectilinear
-Parallel lines spaced according to infill density. Each layer is printed perpendicular to the previous, resulting in low vertical bonding.
+Parallel lines spaced according to infill density. Each layer is printed perpendicular to the previous, resulting in low vertical bonding. Considere using new [Zig Zag](#zig-zag) infill instead.
- **Horizontal Strength (X-Y):** Normal-Low
- **Vertical Strength (Z):** Low
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
-- **Print Time:** Normal
-- **Material/Time (Higher better):** Normal-High
+- **Print Time:** Normal-Low
+- **Material/Time (Higher better):** Normal

@@ -80,7 +194,7 @@ Two-layer pattern of perpendicular lines, forming a grid. Overlapping points may
- **Vertical Strength (Z):** High
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
-- **Print Time:** Normal
+- **Print Time:** Normal-Low
- **Material/Time (Higher better):** Normal

@@ -93,7 +207,7 @@ Low-strength pattern with good flexibility. Angle 1 and angle 2 TBD.
- **Vertical Strength (Z):** Low
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
-- **Print Time:** Normal
+- **Print Time:** Normal-Low
- **Material/Time (Higher better):** Normal

@@ -159,7 +273,7 @@ Mathematical, isotropic surface providing equal strength in all directions. Exce
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
- **Print Time:** Normal-High
-- **Material/Time (Higher better):** Low
+- **Material/Time (Higher better):** Normal-Low

@@ -172,7 +286,7 @@ Triply Periodic Minimal Surface - D. Hybrid between [Cross Hatch](#cross-hatch)
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
- **Print Time:** High
-- **Material/Time (Higher better):** Low
+- **Material/Time (Higher better):** Normal-Low

@@ -185,7 +299,7 @@ Hexagonal pattern balancing strength and material use. Double walls in each hexa
- **Density Calculation:** % of total infill volume
- **Material Usage:** High
- **Print Time:** Ultra-High
-- **Material/Time (Higher better):** Extra Low
+- **Material/Time (Higher better):** Low

@@ -211,7 +325,7 @@ Recommended with layer anchoring to improve not perpendicular strength.
- **Vertical Strength (Z):** Normal
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
-- **Print Time:** Normal
+- **Print Time:** Normal-Low
- **Material/Time (Higher better):** Normal

@@ -238,7 +352,7 @@ This infill tries to generate a printable honeycomb structure by printing square
- **Density Calculation:** Unknown
- **Material Usage:** Normal-Low
- **Print Time:** High
-- **Material/Time (Higher better):** Extra Low
+- **Material/Time (Higher better):** Low

@@ -252,7 +366,7 @@ Print speed is very low due to the complexity of the path, which can lead to lon
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
- **Print Time:** High
-- **Material/Time (Higher better):** Extra Low
+- **Material/Time (Higher better):** Low

@@ -277,8 +391,8 @@ Esthetic pattern with low strength and high print time.
- **Vertical Strength (Z):** Normal
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
-- **Print Time:** Normal-High
-- **Material/Time (Higher better):** Normal
+- **Print Time:** Normal
+- **Material/Time (Higher better):** Normal-Low

@@ -304,7 +418,7 @@ Ultra-fast, ultra-low material infill. Designed for speed and efficiency, ideal
- **Density Calculation:** % of layer before top shell layers
- **Material Usage:** Ultra-Low
- **Print Time:** Ultra-Low
-- **Material/Time (Higher better):** Extra Low
+- **Material/Time (Higher better):** Low

@@ -317,7 +431,7 @@ Similar to [Gyroid](#gyroid) but with linear patterns, creating weak points at i
- **Density Calculation:** % of total infill volume
- **Material Usage:** Normal
- **Print Time:** Normal-High
-- **Material/Time (Higher better):** Low
+- **Material/Time (Higher better):** Normal-Low

@@ -333,3 +447,42 @@ Similar to [Gyroid](#gyroid) but with linear patterns, creating weak points at i
- **Material/Time (Higher better):** Normal

+
+### Zig Zag
+
+Similar to [rectilinear](#rectilinear) with consistent pattern between layers. Allows you to add a Symmetric infil Y axis for models with two symmetric parts.
+
+- **Horizontal Strength (X-Y):** Normal-Low
+- **Vertical Strength (Z):** Low
+- **Density Calculation:** % of total infill volume
+- **Material Usage:** Normal
+- **Print Time:** Normal
+- **Material/Time (Higher better):** Normal
+
+
+
+### Coss Zag
+
+Similar to [Zig Zag](#zig-zag) but displacing each lager with Infill shift step parammeter.
+
+- **Horizontal Strength (X-Y):** Normal
+- **Vertical Strength (Z):** Low
+- **Density Calculation:** % of total infill volume
+- **Material Usage:** Normal
+- **Print Time:** Normal
+- **Material/Time (Higher better):** Normal
+
+
+
+### Locked Zag
+
+Adaptative version of [Zig Zag](#zig-zag) adding an external skin texture to interlock layers and a low material skeleton.
+
+- **Horizontal Strength (X-Y):** Normal-Low
+- **Vertical Strength (Z):** Normal-Low
+- **Density Calculation:** Same as [Zig Zag](#zig-zag) but increasing near walls
+- **Material Usage:** Normal-High
+- **Print Time:** Extra-High
+- **Material/Time (Higher better):** Low
+
+
diff --git a/doc/print_settings/strength/strength_settings_top_bottom_shells.md b/doc/print_settings/strength/strength_settings_top_bottom_shells.md
new file mode 100644
index 0000000000..aa960ac6c8
--- /dev/null
+++ b/doc/print_settings/strength/strength_settings_top_bottom_shells.md
@@ -0,0 +1,19 @@
+# Top and Bottom Shells
+
+Controls how the top and bottom solid layers (shells) are generated in the print.
+
+- **Shells:** This is the number of solid layers of shell, including the surface layer. When the thickness calculated by this value is thinner than shell thickness, the shell layers will be increased.
+- **Shell Thickness:** The number of solid layers is increased when slicing if the thickness calculated by shell layers is thinner than this value. This can avoid having too thin shell when layer height is small. 0 means that this setting is disabled and thickness of shell is absolutely determined by shell layers.
+- **Infill/Wall Overlap:** Top solid infill area is enlarged slightly to overlap with wall for better bonding and to minimize the appearance of pinholes where the infill meets the walls. A value of 25-30% is a good starting point, minimizing the appearance of pinholes. The percentage value is relative to line width of sparse infill.
+- **Surface Pattern:** This setting controls the pattern of the surface. The options are:
+ - **Concentric:** Fills the surface with inward-tracing loops that follow the outer contour.
+ - **Rectilinear:** Fills the surface with straight lines alternating direction per layer.
+ - **Monotonic:** Prints lines in a uniform direction for a smoother visual surface.
+ - **Monotonic Lines:** Similar to Monotonic but avoids overlapping with the perimeter, reducing excess material at joints. May introduce visible seams.
+ - **Aligned Rectilinear:** The surface is printed with rectilinear lines that are aligned with the infill pattern.
+ - **Hilbert Curve:** Applies a space-filling curve for even material distribution and a unique appearance. Slow to print but useful in esthetic applications.
+ - **Archimedean Chords:** Generates concentric arc-like lines, promoting uniform material spread.
+ - **Octagram Spiral:** Creates an octagonal spiral for decorative, esthetic surfaces.
+
+> [!NOTE]
+> Some patterns may have further information in its [Sparse Infill Pattern Wiki](strength_settings_infill#sparse-infill-pattern)
diff --git a/localization/i18n/list.txt b/localization/i18n/list.txt
index f922c7878b..f3792b3453 100644
--- a/localization/i18n/list.txt
+++ b/localization/i18n/list.txt
@@ -1,3 +1,7 @@
+src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.h
+src/slic3r/GUI/DeviceTab/uiAmsHumidityPopup.cpp
+src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.h
+src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp
src/slic3r/GUI/Gizmos/GLGizmoFdmSupports.cpp
src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp
src/slic3r/GUI/Gizmos/GLGizmoMmuSegmentation.cpp
diff --git a/resources/images/air_pump.svg b/resources/images/air_pump.svg
new file mode 100644
index 0000000000..799588ec2e
--- /dev/null
+++ b/resources/images/air_pump.svg
@@ -0,0 +1,396 @@
+
diff --git a/resources/images/air_pump_dark.svg b/resources/images/air_pump_dark.svg
new file mode 100644
index 0000000000..2f075c2132
--- /dev/null
+++ b/resources/images/air_pump_dark.svg
@@ -0,0 +1,396 @@
+
diff --git a/resources/images/ams_drying.svg b/resources/images/ams_drying.svg
new file mode 100644
index 0000000000..e6f9fb9f63
--- /dev/null
+++ b/resources/images/ams_drying.svg
@@ -0,0 +1,10 @@
+
diff --git a/resources/images/ams_is_drying.svg b/resources/images/ams_is_drying.svg
new file mode 100644
index 0000000000..a6c02f1a79
--- /dev/null
+++ b/resources/images/ams_is_drying.svg
@@ -0,0 +1,3 @@
+
diff --git a/resources/images/cut.svg b/resources/images/cut.svg
new file mode 100644
index 0000000000..f04edf7b39
--- /dev/null
+++ b/resources/images/cut.svg
@@ -0,0 +1,177 @@
+
diff --git a/resources/images/hum_level1_no_num_dark.svg b/resources/images/hum_level1_no_num_dark.svg
new file mode 100644
index 0000000000..865a6c4a7f
--- /dev/null
+++ b/resources/images/hum_level1_no_num_dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level1_no_num_light.svg b/resources/images/hum_level1_no_num_light.svg
new file mode 100644
index 0000000000..be7c282e14
--- /dev/null
+++ b/resources/images/hum_level1_no_num_light.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level2_no_num_dark.svg b/resources/images/hum_level2_no_num_dark.svg
new file mode 100644
index 0000000000..9b47beef09
--- /dev/null
+++ b/resources/images/hum_level2_no_num_dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level2_no_num_light.svg b/resources/images/hum_level2_no_num_light.svg
new file mode 100644
index 0000000000..b84791da26
--- /dev/null
+++ b/resources/images/hum_level2_no_num_light.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level3_no_num_dark.svg b/resources/images/hum_level3_no_num_dark.svg
new file mode 100644
index 0000000000..b5b08a1505
--- /dev/null
+++ b/resources/images/hum_level3_no_num_dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level3_no_num_light.svg b/resources/images/hum_level3_no_num_light.svg
new file mode 100644
index 0000000000..e1fbd560f7
--- /dev/null
+++ b/resources/images/hum_level3_no_num_light.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level4_no_num_dark.svg b/resources/images/hum_level4_no_num_dark.svg
new file mode 100644
index 0000000000..980ada05d8
--- /dev/null
+++ b/resources/images/hum_level4_no_num_dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level4_no_num_light.svg b/resources/images/hum_level4_no_num_light.svg
new file mode 100644
index 0000000000..4fb5bc7c61
--- /dev/null
+++ b/resources/images/hum_level4_no_num_light.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level5_no_num_dark.svg b/resources/images/hum_level5_no_num_dark.svg
new file mode 100644
index 0000000000..ab55eff332
--- /dev/null
+++ b/resources/images/hum_level5_no_num_dark.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/hum_level5_no_num_light.svg b/resources/images/hum_level5_no_num_light.svg
new file mode 100644
index 0000000000..c96f344b07
--- /dev/null
+++ b/resources/images/hum_level5_no_num_light.svg
@@ -0,0 +1,4 @@
+
diff --git a/resources/images/input_access_code_h2d_cn.png b/resources/images/input_access_code_h2d_cn.png
new file mode 100644
index 0000000000..1a29777339
Binary files /dev/null and b/resources/images/input_access_code_h2d_cn.png differ
diff --git a/resources/images/input_access_code_h2d_en.png b/resources/images/input_access_code_h2d_en.png
new file mode 100644
index 0000000000..a5bfc3b154
Binary files /dev/null and b/resources/images/input_access_code_h2d_en.png differ
diff --git a/resources/images/laser.svg b/resources/images/laser.svg
new file mode 100644
index 0000000000..7380a6d806
--- /dev/null
+++ b/resources/images/laser.svg
@@ -0,0 +1,249 @@
+
diff --git a/resources/images/param_tpmsd.svg b/resources/images/param_tpmsd.svg
index 247f77c6d2..c66ea26347 100644
--- a/resources/images/param_tpmsd.svg
+++ b/resources/images/param_tpmsd.svg
@@ -22,93 +22,16 @@
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
- inkscape:zoom="24.479167"
- inkscape:cx="12.214468"
- inkscape:cy="12.88851"
+ inkscape:zoom="45.254834"
+ inkscape:cx="17.987029"
+ inkscape:cy="12.805262"
inkscape:window-width="2560"
inkscape:window-height="1377"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg10"
- showguides="true">
-
-
-
-
-
-
-
-
-
-
-
-
-
+ showguides="true" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
diff --git a/resources/images/printer_thumbnail_h2d.svg b/resources/images/printer_thumbnail_h2d.svg
new file mode 100644
index 0000000000..9108233afc
--- /dev/null
+++ b/resources/images/printer_thumbnail_h2d.svg
@@ -0,0 +1,531 @@
+
diff --git a/resources/images/printer_thumbnail_h2d_dark.svg b/resources/images/printer_thumbnail_h2d_dark.svg
new file mode 100644
index 0000000000..050c20f449
--- /dev/null
+++ b/resources/images/printer_thumbnail_h2d_dark.svg
@@ -0,0 +1,533 @@
+
diff --git a/resources/images/rename_edit.svg b/resources/images/rename_edit.svg
new file mode 100644
index 0000000000..03e40f40c7
--- /dev/null
+++ b/resources/images/rename_edit.svg
@@ -0,0 +1,10 @@
+
diff --git a/resources/printers/C11.json b/resources/printers/C11.json
index a2cbbb078a..83c403b44a 100644
--- a/resources/printers/C11.json
+++ b/resources/printers/C11.json
@@ -84,5 +84,10 @@
},
"support_user_preset":true
}
+ },
+ "01.07.50.00": {
+ "print": {
+ "support_print_all": true
+ }
}
}
diff --git a/resources/printers/C12.json b/resources/printers/C12.json
index 5cc12a1a66..66f7f3a974 100644
--- a/resources/printers/C12.json
+++ b/resources/printers/C12.json
@@ -76,5 +76,10 @@
},
"support_user_preset":true
}
+ },
+ "01.07.50.00": {
+ "print": {
+ "support_print_all": true
+ }
}
}
diff --git a/resources/printers/O1D.json b/resources/printers/O1D.json
new file mode 100644
index 0000000000..3892481cdd
--- /dev/null
+++ b/resources/printers/O1D.json
@@ -0,0 +1,74 @@
+{
+ "00.00.00.00": {
+ "display_name": "Bambu Lab H2D",
+ "print": {
+ "2D": {
+ "laser": {
+ "power": [ 10, 40 ]
+ }
+ },
+ "ipcam": {
+ "resolution_supported": [ "1080p" ],
+ "virtual_camera": "enabled",
+ "liveview": {
+ "remote": "tutk"
+ },
+ "file": {
+ "local": "local",
+ "remote": "tutk",
+ "model_download": "enabled"
+ }
+ },
+ "nozzle_temp_range": [ 20, 350 ],
+ "bed_temp_range": [ 20, 120 ],
+ "support_motor_noise_cali": false,
+ "support_tunnel_mqtt": true,
+ "support_mqtt_alive": true,
+ "support_command_ams_switch": true,
+ "support_ssl_for_mqtt": true,
+ "support_cloud_print_only": false,
+ "support_1080dpi": true,
+ "support_prompt_sound": false,
+ "support_ams_humidity": true,
+ "support_auto_recovery_step_loss": true,
+ "support_bed_leveling": 2,
+ "support_update_remain": true,
+ "support_timelapse": true,
+ "support_filament_backup": true,
+ "support_chamber_fan": true,
+ "support_aux_fan": true,
+ "support_send_to_sd": true,
+ "support_print_all": true,
+ "support_print_without_sd": true,
+ "support_flow_calibration": true,
+ "support_auto_flow_calibration": true,
+ "support_build_plate_marker_detect": true,
+ "support_build_plate_marker_detect_type": 2,
+ "support_lidar_calibration": false,
+ "support_nozzle_offset_calibration": true,
+ "support_high_tempbed_calibration": true,
+ "support_ai_monitoring": true,
+ "support_first_layer_inspect": false,
+ "support_save_remote_print_file_to_storage": true,
+ "support_chamber_temp_edit": true,
+ "support_chamber_temp_edit_range": [ 20, 65 ],
+ "support_chamber_temp_switch_heating": 40,
+ "support_extrusion_cali": false,
+ "support_user_preset": false
+ },
+ "model_id": "O1D",
+ "printer_modes": [ "fdm", "laser", "cut" ],
+ "compatible_machine": [],
+ "printer_type": "O1D",
+ "printer_thumbnail_image": "printer_thumbnail_h2d",
+ "printer_connect_help_image": "input_access_code_h2d",
+ "printer_use_ams_image": "ams_icon",
+ "printer_ext_image": ["ext_image_o_right", "ext_image_o_left"],
+ "use_ams_type": "generic",
+ "printer_arch": "core_xy",
+ "printer_series": "series_o",
+ "has_cali_line": true,
+ "printer_is_enclosed": true,
+ "enable_set_nozzle_info": false
+ }
+}
\ No newline at end of file
diff --git a/resources/profiles/BBL.json b/resources/profiles/BBL.json
index 9ac95694b3..41232f6cda 100644
--- a/resources/profiles/BBL.json
+++ b/resources/profiles/BBL.json
@@ -40,92 +40,92 @@
"sub_path": "process/fdm_process_common.json"
},
{
- "name": "fdm_process_bbl_common",
- "sub_path": "process/fdm_process_bbl_common.json"
+ "name": "fdm_process_single_common",
+ "sub_path": "process/fdm_process_single_common.json"
},
{
- "name": "fdm_process_bbl_0.08",
- "sub_path": "process/fdm_process_bbl_0.08.json"
+ "name": "fdm_process_single_0.08",
+ "sub_path": "process/fdm_process_single_0.08.json"
},
{
- "name": "fdm_process_bbl_0.10_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.10_nozzle_0.2.json"
+ "name": "fdm_process_single_0.10_nozzle_0.2",
+ "sub_path": "process/fdm_process_single_0.10_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.40_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.40_nozzle_0.8.json"
+ "name": "fdm_process_single_0.40_nozzle_0.8",
+ "sub_path": "process/fdm_process_single_0.40_nozzle_0.8.json"
},
{
- "name": "fdm_process_bbl_0.30_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.30_nozzle_0.6.json"
+ "name": "fdm_process_single_0.30_nozzle_0.6",
+ "sub_path": "process/fdm_process_single_0.30_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.12",
- "sub_path": "process/fdm_process_bbl_0.12.json"
+ "name": "fdm_process_single_0.12",
+ "sub_path": "process/fdm_process_single_0.12.json"
},
{
- "name": "fdm_process_bbl_0.16",
- "sub_path": "process/fdm_process_bbl_0.16.json"
+ "name": "fdm_process_single_0.16",
+ "sub_path": "process/fdm_process_single_0.16.json"
},
{
- "name": "fdm_process_bbl_0.20",
- "sub_path": "process/fdm_process_bbl_0.20.json"
+ "name": "fdm_process_single_0.20",
+ "sub_path": "process/fdm_process_single_0.20.json"
},
{
- "name": "fdm_process_bbl_0.24",
- "sub_path": "process/fdm_process_bbl_0.24.json"
+ "name": "fdm_process_single_0.24",
+ "sub_path": "process/fdm_process_single_0.24.json"
},
{
- "name": "fdm_process_bbl_0.28",
- "sub_path": "process/fdm_process_bbl_0.28.json"
+ "name": "fdm_process_single_0.28",
+ "sub_path": "process/fdm_process_single_0.28.json"
},
{
- "name": "fdm_process_bbl_0.06_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.06_nozzle_0.2.json"
+ "name": "fdm_process_single_0.06_nozzle_0.2",
+ "sub_path": "process/fdm_process_single_0.06_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.08_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.08_nozzle_0.2.json"
+ "name": "fdm_process_single_0.08_nozzle_0.2",
+ "sub_path": "process/fdm_process_single_0.08_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.12_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.12_nozzle_0.2.json"
+ "name": "fdm_process_single_0.12_nozzle_0.2",
+ "sub_path": "process/fdm_process_single_0.12_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.14_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.14_nozzle_0.2.json"
+ "name": "fdm_process_single_0.14_nozzle_0.2",
+ "sub_path": "process/fdm_process_single_0.14_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.18_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.18_nozzle_0.6.json"
+ "name": "fdm_process_single_0.18_nozzle_0.6",
+ "sub_path": "process/fdm_process_single_0.18_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.24_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.24_nozzle_0.6.json"
+ "name": "fdm_process_single_0.24_nozzle_0.6",
+ "sub_path": "process/fdm_process_single_0.24_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.36_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.36_nozzle_0.6.json"
+ "name": "fdm_process_single_0.36_nozzle_0.6",
+ "sub_path": "process/fdm_process_single_0.36_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.42_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.42_nozzle_0.6.json"
+ "name": "fdm_process_single_0.42_nozzle_0.6",
+ "sub_path": "process/fdm_process_single_0.42_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.24_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.24_nozzle_0.8.json"
+ "name": "fdm_process_single_0.24_nozzle_0.8",
+ "sub_path": "process/fdm_process_single_0.24_nozzle_0.8.json"
},
{
- "name": "fdm_process_bbl_0.32_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.32_nozzle_0.8.json"
+ "name": "fdm_process_single_0.32_nozzle_0.8",
+ "sub_path": "process/fdm_process_single_0.32_nozzle_0.8.json"
},
{
- "name": "fdm_process_bbl_0.48_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.48_nozzle_0.8.json"
+ "name": "fdm_process_single_0.48_nozzle_0.8",
+ "sub_path": "process/fdm_process_single_0.48_nozzle_0.8.json"
},
{
- "name": "fdm_process_bbl_0.56_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.56_nozzle_0.8.json"
+ "name": "fdm_process_single_0.56_nozzle_0.8",
+ "sub_path": "process/fdm_process_single_0.56_nozzle_0.8.json"
},
{
"name": "0.08mm Extra Fine @BBL X1C",
diff --git a/resources/profiles/BBL/process/0.06mm Fine @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Fine @BBL A1 0.2 nozzle.json
index a46163008e..48e6ad9c26 100644
--- a/resources/profiles/BBL/process/0.06mm Fine @BBL A1 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.06mm Fine @BBL A1 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.06mm Fine @BBL A1 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_0.06_nozzle_0.2",
"from": "system",
"setting_id": "GP084",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.06mm Fine @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Fine @BBL A1M 0.2 nozzle.json
index 829e917675..1ca4fc711f 100644
--- a/resources/profiles/BBL/process/0.06mm Fine @BBL A1M 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.06mm Fine @BBL A1M 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.06mm Fine @BBL A1M 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_0.06_nozzle_0.2",
"from": "system",
"setting_id": "GP050",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json
index d05620a789..fbbc791445 100644
--- a/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.06mm Fine @BBL P1P 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.06mm Fine @BBL P1P 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_0.06_nozzle_0.2",
"from": "system",
"setting_id": "GP063",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json
index 19c218e4e3..7af52f3efe 100644
--- a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.06mm High Quality @BBL A1 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_0.06_nozzle_0.2",
"from": "system",
"setting_id": "GP118",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json
index 15f97d190e..2bd36aafe7 100644
--- a/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL A1M 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.06mm High Quality @BBL A1M 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_0.06_nozzle_0.2",
"from": "system",
"setting_id": "GP117",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json
index da1f6a89c3..a7c62f4522 100644
--- a/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL P1P 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.06mm High Quality @BBL P1P 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_0.06_nozzle_0.2",
"from": "system",
"setting_id": "GP116",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json
index 56388c0b15..14e6f9474a 100644
--- a/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.06mm High Quality @BBL X1C 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.06mm High Quality @BBL X1C 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_0.06_nozzle_0.2",
"from": "system",
"setting_id": "GP115",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json
index 15ac55524b..63826577bf 100644
--- a/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.06mm Standard @BBL X1C 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.06mm Standard @BBL X1C 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_0.06_nozzle_0.2",
"from": "system",
"setting_id": "GP024",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1.json
index a77c85e631..01cdcd2446 100644
--- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1.json
+++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm Extra Fine @BBL A1",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_single_0.08",
"from": "system",
"setting_id": "GP076",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1M.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1M.json
index b54ff1ac71..cb8b2ee21f 100644
--- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1M.json
+++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL A1M.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm Extra Fine @BBL A1M",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_single_0.08",
"from": "system",
"setting_id": "GP049",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json
index 080e4005ec..45b7282822 100644
--- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm Extra Fine @BBL P1P",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_single_0.08",
"from": "system",
"setting_id": "GP018",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json
index 22ed2d7954..c7c1a7eb8d 100644
--- a/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.08mm Extra Fine @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm Extra Fine @BBL X1C",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_single_0.08",
"from": "system",
"setting_id": "GP001",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json
index 7745977387..6fe64c28c9 100644
--- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm High Quality @BBL A1 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_0.08_nozzle_0.2",
"from": "system",
"setting_id": "GP119",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json
index 7d7f7be457..1ec74ae790 100644
--- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json
+++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm High Quality @BBL A1",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_single_0.08",
"from": "system",
"setting_id": "GP102",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json
index 2d181eae1b..a3e9d1d41f 100644
--- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm High Quality @BBL A1M 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_0.08_nozzle_0.2",
"from": "system",
"setting_id": "GP120",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json
index 71e2f43b7d..209ce23d83 100644
--- a/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json
+++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL A1M.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm High Quality @BBL A1M",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_single_0.08",
"from": "system",
"setting_id": "GP101",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json
index 6424eae3c0..937db1fd86 100644
--- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm High Quality @BBL P1P 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_0.08_nozzle_0.2",
"from": "system",
"setting_id": "GP121",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json
index f135573cf2..ba9af3803e 100644
--- a/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm High Quality @BBL P1P",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_single_0.08",
"from": "system",
"setting_id": "GP100",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json
index dc0de89bc6..cad7de9e3b 100644
--- a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm High Quality @BBL X1C 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_0.08_nozzle_0.2",
"from": "system",
"setting_id": "GP122",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json
index 778b1b9bef..7ec94c385c 100644
--- a/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.08mm High Quality @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm High Quality @BBL X1C",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_single_0.08",
"from": "system",
"setting_id": "GP099",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm Optimal @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Optimal @BBL A1 0.2 nozzle.json
index 072bfd59b0..77c8e762e1 100644
--- a/resources/profiles/BBL/process/0.08mm Optimal @BBL A1 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.08mm Optimal @BBL A1 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm Optimal @BBL A1 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_0.08_nozzle_0.2",
"from": "system",
"setting_id": "GP085",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm Optimal @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Optimal @BBL A1M 0.2 nozzle.json
index 19f8577822..ed91cd4952 100644
--- a/resources/profiles/BBL/process/0.08mm Optimal @BBL A1M 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.08mm Optimal @BBL A1M 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm Optimal @BBL A1M 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_0.08_nozzle_0.2",
"from": "system",
"setting_id": "GP051",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json
index 9995057586..690daff805 100644
--- a/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.08mm Optimal @BBL P1P 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm Optimal @BBL P1P 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_0.08_nozzle_0.2",
"from": "system",
"setting_id": "GP064",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json
index 905fef5e09..b8bceee19c 100644
--- a/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.08mm Standard @BBL X1C 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.08mm Standard @BBL X1C 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_0.08_nozzle_0.2",
"from": "system",
"setting_id": "GP025",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json
index 23393e37b9..7507788031 100644
--- a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.10mm High Quality @BBL A1 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.10_nozzle_0.2",
+ "inherits": "fdm_process_single_0.10_nozzle_0.2",
"from": "system",
"setting_id": "GP114",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json
index cb96b785af..ba7728beea 100644
--- a/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL A1M 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.10mm High Quality @BBL A1M 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.10_nozzle_0.2",
+ "inherits": "fdm_process_single_0.10_nozzle_0.2",
"from": "system",
"setting_id": "GP113",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json
index f463a9e060..4d15aa5af6 100644
--- a/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL P1P 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.10mm High Quality @BBL P1P 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.10_nozzle_0.2",
+ "inherits": "fdm_process_single_0.10_nozzle_0.2",
"from": "system",
"setting_id": "GP112",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json
index b1ab2d897b..b89a17a330 100644
--- a/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.10mm High Quality @BBL X1C 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.10mm High Quality @BBL X1C 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.10_nozzle_0.2",
+ "inherits": "fdm_process_single_0.10_nozzle_0.2",
"from": "system",
"setting_id": "GP111",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL A1 0.2 nozzle.json
index 56a9bfaced..384b4f319a 100644
--- a/resources/profiles/BBL/process/0.10mm Standard @BBL A1 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.10mm Standard @BBL A1 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.10mm Standard @BBL A1 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.10_nozzle_0.2",
+ "inherits": "fdm_process_single_0.10_nozzle_0.2",
"from": "system",
"setting_id": "GP083",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json
index 37a2a12777..9e5597170d 100644
--- a/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.10mm Standard @BBL P1P 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.10mm Standard @BBL P1P 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.10_nozzle_0.2",
+ "inherits": "fdm_process_single_0.10_nozzle_0.2",
"from": "system",
"setting_id": "GP014",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json
index 64f47b93a5..19291675f5 100644
--- a/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.10mm Standard @BBL X1C 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.10mm Standard @BBL X1C 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.10_nozzle_0.2",
+ "inherits": "fdm_process_single_0.10_nozzle_0.2",
"from": "system",
"setting_id": "GP007",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm Draft @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Draft @BBL A1 0.2 nozzle.json
index 549a6d7fe5..5adf553981 100644
--- a/resources/profiles/BBL/process/0.12mm Draft @BBL A1 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.12mm Draft @BBL A1 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm Draft @BBL A1 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.12_nozzle_0.2",
+ "inherits": "fdm_process_single_0.12_nozzle_0.2",
"from": "system",
"setting_id": "GP086",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm Draft @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Draft @BBL A1M 0.2 nozzle.json
index 66a9004da7..18427473b1 100644
--- a/resources/profiles/BBL/process/0.12mm Draft @BBL A1M 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.12mm Draft @BBL A1M 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm Draft @BBL A1M 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.12_nozzle_0.2",
+ "inherits": "fdm_process_single_0.12_nozzle_0.2",
"from": "system",
"setting_id": "GP052",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json
index 675c21747d..4ba21cba5a 100644
--- a/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.12mm Draft @BBL P1P 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm Draft @BBL P1P 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.12_nozzle_0.2",
+ "inherits": "fdm_process_single_0.12_nozzle_0.2",
"from": "system",
"setting_id": "GP065",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL A1.json b/resources/profiles/BBL/process/0.12mm Fine @BBL A1.json
index 6cb7369ad2..4769cf9030 100644
--- a/resources/profiles/BBL/process/0.12mm Fine @BBL A1.json
+++ b/resources/profiles/BBL/process/0.12mm Fine @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm Fine @BBL A1",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_single_0.12",
"from": "system",
"setting_id": "GP077",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL A1M.json b/resources/profiles/BBL/process/0.12mm Fine @BBL A1M.json
index 74d30722a0..d0894a61d3 100644
--- a/resources/profiles/BBL/process/0.12mm Fine @BBL A1M.json
+++ b/resources/profiles/BBL/process/0.12mm Fine @BBL A1M.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm Fine @BBL A1M",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_single_0.12",
"from": "system",
"setting_id": "GP044",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json b/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json
index 172d506eca..2ba69e4d6e 100644
--- a/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.12mm Fine @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm Fine @BBL P1P",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_single_0.12",
"from": "system",
"setting_id": "GP019",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json b/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json
index b51e89eb5b..603658d686 100644
--- a/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.12mm Fine @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm Fine @BBL X1C",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_single_0.12",
"from": "system",
"setting_id": "GP002",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json
index 0a1a283141..819c415474 100644
--- a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json
+++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm High Quality @BBL A1",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_single_0.12",
"from": "system",
"setting_id": "GP106",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json
index dbe1743fbc..5a4483795f 100644
--- a/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json
+++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL A1M.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm High Quality @BBL A1M",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_single_0.12",
"from": "system",
"setting_id": "GP105",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json
index 1acd431c12..c649920532 100644
--- a/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm High Quality @BBL P1P",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_single_0.12",
"from": "system",
"setting_id": "GP104",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json
index d49e931485..93f395c1cb 100644
--- a/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.12mm High Quality @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm High Quality @BBL X1C",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_single_0.12",
"from": "system",
"setting_id": "GP103",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json
index 703993972e..d0f25e9a0a 100644
--- a/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.12mm Standard @BBL X1C 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.12mm Standard @BBL X1C 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.12_nozzle_0.2",
+ "inherits": "fdm_process_single_0.12_nozzle_0.2",
"from": "system",
"setting_id": "GP026",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json
index c1ff7b34a3..05ce32c6af 100644
--- a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.14mm Extra Draft @BBL A1 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.14_nozzle_0.2",
+ "inherits": "fdm_process_single_0.14_nozzle_0.2",
"from": "system",
"setting_id": "GP087",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json
index c8b97600b7..c60278482b 100644
--- a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL A1M 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.14mm Extra Draft @BBL A1M 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.14_nozzle_0.2",
+ "inherits": "fdm_process_single_0.14_nozzle_0.2",
"from": "system",
"setting_id": "GP053",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json
index d19c428cd4..b5ac82bf57 100644
--- a/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.14mm Extra Draft @BBL P1P 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.14mm Extra Draft @BBL P1P 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.14_nozzle_0.2",
+ "inherits": "fdm_process_single_0.14_nozzle_0.2",
"from": "system",
"setting_id": "GP066",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json b/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json
index be951de13b..dcec738364 100644
--- a/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json
+++ b/resources/profiles/BBL/process/0.14mm Standard @BBL X1C 0.2 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.14mm Standard @BBL X1C 0.2 nozzle",
- "inherits": "fdm_process_bbl_0.14_nozzle_0.2",
+ "inherits": "fdm_process_single_0.14_nozzle_0.2",
"from": "system",
"setting_id": "GP027",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json
index 5632bdbe26..4769751992 100644
--- a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json
+++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.16mm High Quality @BBL A1",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_single_0.16",
"from": "system",
"setting_id": "GP110",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json
index fe51c4740f..97cd71e5cf 100644
--- a/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json
+++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL A1M.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.16mm High Quality @BBL A1M",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_single_0.16",
"from": "system",
"setting_id": "GP109",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json
index a3cd2eb87c..41e8831710 100644
--- a/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.16mm High Quality @BBL P1P",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_single_0.16",
"from": "system",
"setting_id": "GP108",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json
index 2e8fb3e44a..9517c6cb27 100644
--- a/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.16mm High Quality @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.16mm High Quality @BBL X1C",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_single_0.16",
"from": "system",
"setting_id": "GP107",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL A1.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL A1.json
index eedbf6577d..a3d0c291e1 100644
--- a/resources/profiles/BBL/process/0.16mm Optimal @BBL A1.json
+++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.16mm Optimal @BBL A1",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_single_0.16",
"from": "system",
"setting_id": "GP078",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL A1M.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL A1M.json
index 509404f9cd..10778bcc73 100644
--- a/resources/profiles/BBL/process/0.16mm Optimal @BBL A1M.json
+++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL A1M.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.16mm Optimal @BBL A1M",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_single_0.16",
"from": "system",
"setting_id": "GP045",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json
index 6df7fae3f2..9c707bbbce 100644
--- a/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.16mm Optimal @BBL P1P",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_single_0.16",
"from": "system",
"setting_id": "GP020",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json b/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json
index 5dc996d120..39bae7f05a 100644
--- a/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.16mm Optimal @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.16mm Optimal @BBL X1C",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_single_0.16",
"from": "system",
"setting_id": "GP003",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.18mm Fine @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Fine @BBL A1 0.6 nozzle.json
index f19e70c25f..ef37b46793 100644
--- a/resources/profiles/BBL/process/0.18mm Fine @BBL A1 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.18mm Fine @BBL A1 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.18mm Fine @BBL A1 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.18_nozzle_0.6",
+ "inherits": "fdm_process_single_0.18_nozzle_0.6",
"from": "system",
"setting_id": "GP088",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.18mm Fine @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Fine @BBL A1M 0.6 nozzle.json
index 7b1612a79d..c7ca32e214 100644
--- a/resources/profiles/BBL/process/0.18mm Fine @BBL A1M 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.18mm Fine @BBL A1M 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.18mm Fine @BBL A1M 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.18_nozzle_0.6",
+ "inherits": "fdm_process_single_0.18_nozzle_0.6",
"from": "system",
"setting_id": "GP062",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json
index 53d29a785f..0fdea76fe9 100644
--- a/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.18mm Fine @BBL P1P 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.18mm Fine @BBL P1P 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.18_nozzle_0.6",
+ "inherits": "fdm_process_single_0.18_nozzle_0.6",
"from": "system",
"setting_id": "GP072",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json
index 6395e965b0..3ebf14f69c 100644
--- a/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.18mm Standard @BBL X1C 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.18mm Standard @BBL X1C 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.18_nozzle_0.6",
+ "inherits": "fdm_process_single_0.18_nozzle_0.6",
"from": "system",
"setting_id": "GP028",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.20mm Bambu Support W @BBL X1C.json b/resources/profiles/BBL/process/0.20mm Bambu Support W @BBL X1C.json
index 0a01e92daa..c7d9745406 100644
--- a/resources/profiles/BBL/process/0.20mm Bambu Support W @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.20mm Bambu Support W @BBL X1C.json
@@ -4,7 +4,7 @@
"name": "0.20mm Bambu Support W @BBL X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_single_0.20",
"enable_support": "1",
"support_interface_top_layers": "3",
"support_top_z_distance": "0.2",
diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL A1.json b/resources/profiles/BBL/process/0.20mm Standard @BBL A1.json
index 91feaa6774..960717592f 100644
--- a/resources/profiles/BBL/process/0.20mm Standard @BBL A1.json
+++ b/resources/profiles/BBL/process/0.20mm Standard @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.20mm Standard @BBL A1",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_single_0.20",
"from": "system",
"setting_id": "GP079",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json b/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json
index cea5a44b6d..226241d6f3 100644
--- a/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.20mm Standard @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.20mm Standard @BBL P1P",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_single_0.20",
"from": "system",
"setting_id": "GP015",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json b/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json
index 01133f83ec..d0df6bc446 100644
--- a/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.20mm Standard @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.20mm Standard @BBL X1C",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_single_0.20",
"from": "system",
"setting_id": "GP004",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL A1.json b/resources/profiles/BBL/process/0.20mm Strength @BBL A1.json
index 30e9ca38ee..063459a6fc 100644
--- a/resources/profiles/BBL/process/0.20mm Strength @BBL A1.json
+++ b/resources/profiles/BBL/process/0.20mm Strength @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.20mm Strength @BBL A1",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_single_0.20",
"from": "system",
"setting_id": "GP080",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json b/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json
index 9edb0342ad..bd131693f4 100644
--- a/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.20mm Strength @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.20mm Strength @BBL P1P",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_single_0.20",
"from": "system",
"setting_id": "GP021",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json b/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json
index 6635305deb..8700ad327e 100644
--- a/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.20mm Strength @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.20mm Strength @BBL X1C",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_single_0.20",
"from": "system",
"setting_id": "GP013",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL A1.json b/resources/profiles/BBL/process/0.24mm Draft @BBL A1.json
index 20e452f19b..195a3c7538 100644
--- a/resources/profiles/BBL/process/0.24mm Draft @BBL A1.json
+++ b/resources/profiles/BBL/process/0.24mm Draft @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Draft @BBL A1",
- "inherits": "fdm_process_bbl_0.24",
+ "inherits": "fdm_process_single_0.24",
"from": "system",
"setting_id": "GP081",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL A1M.json b/resources/profiles/BBL/process/0.24mm Draft @BBL A1M.json
index 4c791c4600..82a34774fb 100644
--- a/resources/profiles/BBL/process/0.24mm Draft @BBL A1M.json
+++ b/resources/profiles/BBL/process/0.24mm Draft @BBL A1M.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Draft @BBL A1M",
- "inherits": "fdm_process_bbl_0.24",
+ "inherits": "fdm_process_single_0.24",
"from": "system",
"setting_id": "GP047",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json b/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json
index ed3bd535f9..d78362d4a6 100644
--- a/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.24mm Draft @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Draft @BBL P1P",
- "inherits": "fdm_process_bbl_0.24",
+ "inherits": "fdm_process_single_0.24",
"from": "system",
"setting_id": "GP022",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json b/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json
index cc2806ac9f..3c2667ba65 100644
--- a/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.24mm Draft @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Draft @BBL X1C",
- "inherits": "fdm_process_bbl_0.24",
+ "inherits": "fdm_process_single_0.24",
"from": "system",
"setting_id": "GP005",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Fine @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Fine @BBL A1 0.8 nozzle.json
index 629884dc7c..0a1938f842 100644
--- a/resources/profiles/BBL/process/0.24mm Fine @BBL A1 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.24mm Fine @BBL A1 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Fine @BBL A1 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.8",
+ "inherits": "fdm_process_single_0.24_nozzle_0.8",
"from": "system",
"setting_id": "GP092",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Fine @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Fine @BBL A1M 0.8 nozzle.json
index ca2631fb71..4187b5e97d 100644
--- a/resources/profiles/BBL/process/0.24mm Fine @BBL A1M 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.24mm Fine @BBL A1M 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Fine @BBL A1M 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.8",
+ "inherits": "fdm_process_single_0.24_nozzle_0.8",
"from": "system",
"setting_id": "GP057",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json
index 7f7934ad5a..99e6c8558e 100644
--- a/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.24mm Fine @BBL P1P 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Fine @BBL P1P 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.8",
+ "inherits": "fdm_process_single_0.24_nozzle_0.8",
"from": "system",
"setting_id": "GP068",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Optimal @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Optimal @BBL A1 0.6 nozzle.json
index f8388f6262..ba27278086 100644
--- a/resources/profiles/BBL/process/0.24mm Optimal @BBL A1 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.24mm Optimal @BBL A1 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Optimal @BBL A1 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.6",
+ "inherits": "fdm_process_single_0.24_nozzle_0.6",
"from": "system",
"setting_id": "GP089",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Optimal @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Optimal @BBL A1M 0.6 nozzle.json
index 28082afef5..eff76ccaeb 100644
--- a/resources/profiles/BBL/process/0.24mm Optimal @BBL A1M 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.24mm Optimal @BBL A1M 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Optimal @BBL A1M 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.6",
+ "inherits": "fdm_process_single_0.24_nozzle_0.6",
"from": "system",
"setting_id": "GP054",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json
index a143d7b635..4a31ef5a0f 100644
--- a/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.24mm Optimal @BBL P1P 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Optimal @BBL P1P 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.6",
+ "inherits": "fdm_process_single_0.24_nozzle_0.6",
"from": "system",
"setting_id": "GP069",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json
index 2675aaa373..9b213430a5 100644
--- a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Standard @BBL X1C 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.6",
+ "inherits": "fdm_process_single_0.24_nozzle_0.6",
"from": "system",
"setting_id": "GP029",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json
index 9ff95902a7..33d9f25254 100644
--- a/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.24mm Standard @BBL X1C 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.24mm Standard @BBL X1C 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.8",
+ "inherits": "fdm_process_single_0.24_nozzle_0.8",
"from": "system",
"setting_id": "GP032",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1.json
index 490c0026cd..e8ec96ac25 100644
--- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1.json
+++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.28mm Extra Draft @BBL A1",
- "inherits": "fdm_process_bbl_0.28",
+ "inherits": "fdm_process_single_0.28",
"from": "system",
"setting_id": "GP082",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1M.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1M.json
index f1923e0d69..a0c3058a71 100644
--- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1M.json
+++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL A1M.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.28mm Extra Draft @BBL A1M",
- "inherits": "fdm_process_bbl_0.28",
+ "inherits": "fdm_process_single_0.28",
"from": "system",
"setting_id": "GP048",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json
index 4f9bb7b53e..a1dbdc67e6 100644
--- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json
+++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL P1P.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.28mm Extra Draft @BBL P1P",
- "inherits": "fdm_process_bbl_0.28",
+ "inherits": "fdm_process_single_0.28",
"from": "system",
"setting_id": "GP023",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json
index 4d544e0f97..0dbb703749 100644
--- a/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json
+++ b/resources/profiles/BBL/process/0.28mm Extra Draft @BBL X1C.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.28mm Extra Draft @BBL X1C",
- "inherits": "fdm_process_bbl_0.28",
+ "inherits": "fdm_process_single_0.28",
"from": "system",
"setting_id": "GP006",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL A1 0.6 nozzle.json
index 26ad6e5806..dce6cbfc30 100644
--- a/resources/profiles/BBL/process/0.30mm Standard @BBL A1 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.30mm Standard @BBL A1 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.30mm Standard @BBL A1 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_0.30_nozzle_0.6",
"from": "system",
"setting_id": "GP096",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json
index 164c03866f..4fffef2b26 100644
--- a/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.30mm Standard @BBL P1P 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.30mm Standard @BBL P1P 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_0.30_nozzle_0.6",
"from": "system",
"setting_id": "GP016",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json
index e501731193..d622c05aba 100644
--- a/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.30mm Standard @BBL X1 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_0.30_nozzle_0.6",
"from": "system",
"setting_id": "GP011",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json
index 7a62910257..55a49f3888 100644
--- a/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.30mm Standard @BBL X1C 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.30mm Standard @BBL X1C 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_0.30_nozzle_0.6",
"from": "system",
"setting_id": "GP010",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL A1 0.6 nozzle.json
index 775523f0d6..67cf897a41 100644
--- a/resources/profiles/BBL/process/0.30mm Strength @BBL A1 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.30mm Strength @BBL A1 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.30mm Strength @BBL A1 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_0.30_nozzle_0.6",
"from": "system",
"setting_id": "GP097",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL A1M 0.6 nozzle.json
index 044c7c24cb..e5c6026fb5 100644
--- a/resources/profiles/BBL/process/0.30mm Strength @BBL A1M 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.30mm Strength @BBL A1M 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.30mm Strength @BBL A1M 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_0.30_nozzle_0.6",
"from": "system",
"setting_id": "GP061",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json
index 284206f4fa..8a711ba4a6 100644
--- a/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.30mm Strength @BBL P1P 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.30mm Strength @BBL P1P 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_0.30_nozzle_0.6",
"from": "system",
"setting_id": "GP067",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json
index 7d39dcfa0c..dc25f49cb3 100644
--- a/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.30mm Strength @BBL X1C 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.30mm Strength @BBL X1C 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_0.30_nozzle_0.6",
"from": "system",
"setting_id": "GP036",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.32mm Optimal @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Optimal @BBL A1 0.8 nozzle.json
index b1e8658fce..799c9c96c2 100644
--- a/resources/profiles/BBL/process/0.32mm Optimal @BBL A1 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.32mm Optimal @BBL A1 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.32mm Optimal @BBL A1 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.32_nozzle_0.8",
+ "inherits": "fdm_process_single_0.32_nozzle_0.8",
"from": "system",
"setting_id": "GP093",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.32mm Optimal @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Optimal @BBL A1M 0.8 nozzle.json
index e3778f3709..41209c609d 100644
--- a/resources/profiles/BBL/process/0.32mm Optimal @BBL A1M 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.32mm Optimal @BBL A1M 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.32mm Optimal @BBL A1M 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.32_nozzle_0.8",
+ "inherits": "fdm_process_single_0.32_nozzle_0.8",
"from": "system",
"setting_id": "GP058",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json
index 7586ed84bf..8447e73bc2 100644
--- a/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.32mm Optimal @BBL P1P 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.32mm Optimal @BBL P1P 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.32_nozzle_0.8",
+ "inherits": "fdm_process_single_0.32_nozzle_0.8",
"from": "system",
"setting_id": "GP075",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json
index 148b39055b..50219578c6 100644
--- a/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.32mm Standard @BBL X1C 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.32mm Standard @BBL X1C 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.32_nozzle_0.8",
+ "inherits": "fdm_process_single_0.32_nozzle_0.8",
"from": "system",
"setting_id": "GP033",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.36mm Draft @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Draft @BBL A1 0.6 nozzle.json
index e5ebbcfe31..230396014f 100644
--- a/resources/profiles/BBL/process/0.36mm Draft @BBL A1 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.36mm Draft @BBL A1 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.36mm Draft @BBL A1 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.36_nozzle_0.6",
+ "inherits": "fdm_process_single_0.36_nozzle_0.6",
"from": "system",
"setting_id": "GP090",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.36mm Draft @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Draft @BBL A1M 0.6 nozzle.json
index 0268a0ea0f..835655d831 100644
--- a/resources/profiles/BBL/process/0.36mm Draft @BBL A1M 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.36mm Draft @BBL A1M 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.36mm Draft @BBL A1M 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.36_nozzle_0.6",
+ "inherits": "fdm_process_single_0.36_nozzle_0.6",
"from": "system",
"setting_id": "GP055",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json
index 51251017b3..41d988e684 100644
--- a/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.36mm Draft @BBL P1P 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.36mm Draft @BBL P1P 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.36_nozzle_0.6",
+ "inherits": "fdm_process_single_0.36_nozzle_0.6",
"from": "system",
"setting_id": "GP070",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json
index d09c89ecb7..2348de67e4 100644
--- a/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.36mm Standard @BBL X1C 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.36mm Standard @BBL X1C 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.36_nozzle_0.6",
+ "inherits": "fdm_process_single_0.36_nozzle_0.6",
"from": "system",
"setting_id": "GP030",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL A1 0.8 nozzle.json
index de5ffe19c3..5fa1b108aa 100644
--- a/resources/profiles/BBL/process/0.40mm Standard @BBL A1 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.40mm Standard @BBL A1 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.40mm Standard @BBL A1 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.40_nozzle_0.8",
+ "inherits": "fdm_process_single_0.40_nozzle_0.8",
"from": "system",
"setting_id": "GP098",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json
index a647b300b6..57196d2671 100644
--- a/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.40mm Standard @BBL P1P 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.40mm Standard @BBL P1P 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.40_nozzle_0.8",
+ "inherits": "fdm_process_single_0.40_nozzle_0.8",
"from": "system",
"setting_id": "GP017",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json
index f5115f43b7..51339de525 100644
--- a/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.40mm Standard @BBL X1 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.40_nozzle_0.8",
+ "inherits": "fdm_process_single_0.40_nozzle_0.8",
"from": "system",
"setting_id": "GP012",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json
index 15ba67645d..0a07b0c26e 100644
--- a/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.40mm Standard @BBL X1C 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.40mm Standard @BBL X1C 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.40_nozzle_0.8",
+ "inherits": "fdm_process_single_0.40_nozzle_0.8",
"from": "system",
"setting_id": "GP009",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json
index d6b15c6eba..2c968b7404 100644
--- a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.42mm Extra Draft @BBL A1 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.42_nozzle_0.6",
+ "inherits": "fdm_process_single_0.42_nozzle_0.6",
"from": "system",
"setting_id": "GP091",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json
index 571ab55f0d..e13b0b7e7a 100644
--- a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL A1M 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.42mm Extra Draft @BBL A1M 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.42_nozzle_0.6",
+ "inherits": "fdm_process_single_0.42_nozzle_0.6",
"from": "system",
"setting_id": "GP056",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json
index 69578536be..b0e9ac619e 100644
--- a/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.42mm Extra Draft @BBL P1P 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.42mm Extra Draft @BBL P1P 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.42_nozzle_0.6",
+ "inherits": "fdm_process_single_0.42_nozzle_0.6",
"from": "system",
"setting_id": "GP073",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json b/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json
index 1005112ff6..857a50dfbd 100644
--- a/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json
+++ b/resources/profiles/BBL/process/0.42mm Standard @BBL X1C 0.6 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.42mm Standard @BBL X1C 0.6 nozzle",
- "inherits": "fdm_process_bbl_0.42_nozzle_0.6",
+ "inherits": "fdm_process_single_0.42_nozzle_0.6",
"from": "system",
"setting_id": "GP031",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.48mm Draft @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Draft @BBL A1 0.8 nozzle.json
index d3e5e0c26a..a60a7495be 100644
--- a/resources/profiles/BBL/process/0.48mm Draft @BBL A1 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.48mm Draft @BBL A1 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.48mm Draft @BBL A1 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.48_nozzle_0.8",
+ "inherits": "fdm_process_single_0.48_nozzle_0.8",
"from": "system",
"setting_id": "GP094",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.48mm Draft @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Draft @BBL A1M 0.8 nozzle.json
index dc3159fb7f..7c619a104c 100644
--- a/resources/profiles/BBL/process/0.48mm Draft @BBL A1M 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.48mm Draft @BBL A1M 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.48mm Draft @BBL A1M 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.48_nozzle_0.8",
+ "inherits": "fdm_process_single_0.48_nozzle_0.8",
"from": "system",
"setting_id": "GP059",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json
index 7a5062a369..2a05607113 100644
--- a/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.48mm Draft @BBL P1P 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.48mm Draft @BBL P1P 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.48_nozzle_0.8",
+ "inherits": "fdm_process_single_0.48_nozzle_0.8",
"from": "system",
"setting_id": "GP074",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json
index 40c694d891..398f8d6f11 100644
--- a/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.48mm Standard @BBL X1C 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.48mm Standard @BBL X1C 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.48_nozzle_0.8",
+ "inherits": "fdm_process_single_0.48_nozzle_0.8",
"from": "system",
"setting_id": "GP034",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json
index 7669c35cdc..3b8778eaee 100644
--- a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.56mm Extra Draft @BBL A1 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.56_nozzle_0.8",
+ "inherits": "fdm_process_single_0.56_nozzle_0.8",
"from": "system",
"setting_id": "GP095",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json
index 8090a64617..e4719a71d6 100644
--- a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL A1M 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.56mm Extra Draft @BBL A1M 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.56_nozzle_0.8",
+ "inherits": "fdm_process_single_0.56_nozzle_0.8",
"from": "system",
"setting_id": "GP060",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json
index fcc8b66b82..bd77cf1e45 100644
--- a/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.56mm Extra Draft @BBL P1P 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.56mm Extra Draft @BBL P1P 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.56_nozzle_0.8",
+ "inherits": "fdm_process_single_0.56_nozzle_0.8",
"from": "system",
"setting_id": "GP071",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json b/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json
index 9b80a1a5dd..fa913af494 100644
--- a/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json
+++ b/resources/profiles/BBL/process/0.56mm Standard @BBL X1C 0.8 nozzle.json
@@ -1,7 +1,7 @@
{
"type": "process",
"name": "0.56mm Standard @BBL X1C 0.8 nozzle",
- "inherits": "fdm_process_bbl_0.56_nozzle_0.8",
+ "inherits": "fdm_process_single_0.56_nozzle_0.8",
"from": "system",
"setting_id": "GP035",
"instantiation": "true",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_common.json b/resources/profiles/BBL/process/fdm_process_bbl_common.json
deleted file mode 100644
index d77980a29d..0000000000
--- a/resources/profiles/BBL/process/fdm_process_bbl_common.json
+++ /dev/null
@@ -1,74 +0,0 @@
-{
- "type": "process",
- "name": "fdm_process_bbl_common",
- "inherits": "fdm_process_common",
- "from": "system",
- "instantiation": "false",
- "max_travel_detour_distance": "0",
- "bottom_surface_pattern": "monotonic",
- "bottom_shell_layers": "3",
- "bottom_shell_thickness": "0",
- "bridge_speed": "50",
- "brim_object_gap": "0.1",
- "compatible_printers_condition": "",
- "draft_shield": "disabled",
- "elefant_foot_compensation": "0",
- "enable_arc_fitting": "1",
- "outer_wall_acceleration": "5000",
- "wall_infill_order": "inner wall/outer wall/infill",
- "line_width": "0.42",
- "internal_bridge_support_thickness": "0.8",
- "initial_layer_acceleration": "500",
- "initial_layer_line_width": "0.5",
- "initial_layer_speed": "30",
- "gap_infill_speed": "50",
- "sparse_infill_speed": "250",
- "ironing_flow": "10%",
- "ironing_spacing": "0.15",
- "ironing_speed": "30",
- "ironing_type": "no ironing",
- "layer_height": "0.2",
- "reduce_infill_retraction": "1",
- "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode",
- "detect_overhang_wall": "1",
- "overhang_1_4_speed": "0",
- "overhang_2_4_speed": "50",
- "overhang_3_4_speed": "30",
- "overhang_4_4_speed": "10",
- "only_one_wall_top": "1",
- "inner_wall_speed": "150",
- "seam_position": "aligned",
- "skirt_height": "1",
- "skirt_loops": "0",
- "minimum_sparse_infill_area": "15",
- "internal_solid_infill_line_width": "0.42",
- "internal_solid_infill_speed": "150",
- "initial_layer_infill_speed": "60",
- "resolution": "0.012",
- "support_type": "normal(auto)",
- "support_style": "default",
- "support_top_z_distance": "0.2",
- "support_bottom_z_distance": "0.2",
- "support_interface_bottom_layers": "2",
- "support_interface_spacing": "0.5",
- "support_expansion": "0",
- "support_base_pattern_spacing": "2.5",
- "support_speed": "150",
- "support_threshold_angle": "30",
- "support_object_xy_distance": "0.35",
- "tree_support_branch_diameter": "2",
- "tree_support_branch_angle": "45",
- "tree_support_wall_count": "0",
- "max_bridge_length": "0",
- "top_surface_pattern": "monotonicline",
- "top_surface_acceleration": "2000",
- "top_surface_speed": "200",
- "top_shell_layers": "3",
- "top_shell_thickness": "0.8",
- "travel_speed": "500",
- "enable_prime_tower": "1",
- "wipe_tower_no_sparse_layers": "0",
- "prime_tower_width": "35",
- "wall_generator": "classic",
- "compatible_printers": []
-}
\ No newline at end of file
diff --git a/resources/profiles/BBL/process/fdm_process_common.json b/resources/profiles/BBL/process/fdm_process_common.json
index f4c9efb184..870c3bb3bf 100644
--- a/resources/profiles/BBL/process/fdm_process_common.json
+++ b/resources/profiles/BBL/process/fdm_process_common.json
@@ -4,70 +4,105 @@
"from": "system",
"instantiation": "false",
"adaptive_layer_height": "0",
- "reduce_crossing_wall": "0",
+ "bottom_shell_layers": "3",
+ "bottom_shell_thickness": "0",
+ "bottom_surface_pattern": "monotonic",
"bridge_flow": "0.95",
- "bridge_speed": "25",
- "brim_width": "5",
- "print_sequence": "by layer",
- "default_acceleration": "10000",
"bridge_no_support": "0",
- "elefant_foot_compensation": "0.1",
- "outer_wall_line_width": "0.42",
- "ironing_inset": "0.21",
- "outer_wall_speed": "120",
- "line_width": "0.45",
- "infill_direction": "45",
- "sparse_infill_density": "15%",
- "sparse_infill_pattern": "crosshatch",
- "initial_layer_line_width": "0.42",
- "initial_layer_print_height": "0.2",
- "initial_layer_speed": "20",
+ "bridge_speed": "25",
+ "brim_object_gap": "0.1",
+ "brim_width": "5",
+ "compatible_printers_condition": "",
+ "default_acceleration": "10000",
+ "detect_overhang_wall": "1",
+ "detect_thin_wall": "0",
+ "draft_shield": "disabled",
+ "elefant_foot_compensation": "0",
+ "enable_arc_fitting": "1",
+ "enable_prime_tower": "1",
+ "enable_support": "0",
+ "filename_format": "{input_filename_base}_{filament_type[0]}_{print_time}.gcode",
"gap_infill_speed": "30",
"infill_combination": "0",
- "sparse_infill_line_width": "0.45",
+ "infill_direction": "45",
"infill_wall_overlap": "15%",
- "sparse_infill_speed": "50",
- "interface_shells": "0",
- "detect_overhang_wall": "0",
- "reduce_infill_retraction": "0",
- "filename_format": "{input_filename_base}.gcode",
- "wall_loops": "2",
+ "initial_layer_line_width": "0.5",
+ "initial_layer_print_height": "0.2",
+ "initial_layer_speed": "20",
"inner_wall_line_width": "0.45",
"inner_wall_speed": "40",
+ "interface_shells": "0",
+ "internal_bridge_support_thickness": "0.8",
+ "internal_solid_infill_line_width": "0.42",
+ "internal_solid_infill_speed": "40",
+ "ironing_flow": "10%",
+ "ironing_inset": "0.21",
+ "ironing_spacing": "0.15",
+ "ironing_speed": "30",
+ "ironing_type": "no ironing",
+ "layer_height": "0.2",
+ "line_width": "0.42",
+ "max_bridge_length": "0",
+ "max_travel_detour_distance": "0",
+ "minimum_sparse_infill_area": "15",
+ "only_one_wall_top": "1",
+ "outer_wall_line_width": "0.42",
+ "outer_wall_speed": "120",
+ "overhang_totally_speed": "19",
+ "prime_tower_width": "35",
+ "print_sequence": "by layer",
"print_settings_id": "",
"raft_layers": "0",
- "seam_position": "nearest",
+ "reduce_crossing_wall": "0",
+ "reduce_infill_retraction": "1",
+ "resolution": "0.012",
+ "scarf_angle_threshold": "155",
+ "seam_position": "aligned",
"skirt_distance": "2",
- "skirt_height": "2",
- "minimum_sparse_infill_area": "0",
- "internal_solid_infill_line_width": "0.45",
- "internal_solid_infill_speed": "40",
+ "skirt_height": "1",
+ "skirt_loops": "0",
+ "smooth_coefficient": "80",
+ "sparse_infill_density": "15%",
+ "sparse_infill_line_width": "0.45",
+ "sparse_infill_pattern": "crosshatch",
+ "sparse_infill_speed": "50",
"spiral_mode": "0",
"standby_temperature_delta": "-5",
- "enable_support": "0",
- "support_filament": "0",
- "support_line_width": "0.42",
- "support_interface_filament": "0",
- "support_on_build_plate_only": "0",
- "support_top_z_distance": "0.15",
- "support_interface_loop_pattern": "0",
- "support_interface_top_layers": "2",
- "support_interface_spacing": "0",
- "support_interface_speed": "80",
- "support_interface_pattern": "auto",
"support_base_pattern": "default",
- "support_base_pattern_spacing": "2",
+ "support_base_pattern_spacing": "2.5",
+ "support_bottom_z_distance": "0.2",
+ "support_expansion": "0",
+ "support_filament": "0",
+ "support_interface_bottom_layers": "2",
+ "support_interface_filament": "0",
+ "support_interface_loop_pattern": "0",
+ "support_interface_pattern": "auto",
+ "support_interface_spacing": "0.5",
+ "support_interface_speed": "80",
+ "support_interface_top_layers": "2",
+ "support_line_width": "0.42",
+ "support_object_xy_distance": "0.35",
+ "support_on_build_plate_only": "0",
"support_speed": "40",
- "support_threshold_angle": "40",
- "support_object_xy_distance": "0.5",
- "detect_thin_wall": "0",
+ "support_style": "default",
+ "support_threshold_angle": "30",
+ "support_top_z_distance": "0.2",
+ "support_type": "normal(auto)",
+ "top_shell_layers": "3",
+ "top_shell_thickness": "0.8",
"top_surface_line_width": "0.42",
+ "top_surface_pattern": "monotonicline",
"top_surface_speed": "30",
"travel_speed": "400",
- "enable_prime_tower": "0",
- "prime_tower_width": "60",
- "xy_hole_compensation": "0",
+ "tree_support_branch_angle": "45",
+ "tree_support_branch_diameter": "2",
+ "tree_support_wall_count": "0",
+ "wall_generator": "classic",
+ "wall_infill_order": "inner wall/outer wall/infill",
+ "wall_loops": "2",
+ "wipe_tower_no_sparse_layers": "0",
"xy_contour_compensation": "0",
+ "xy_hole_compensation": "0",
"compatible_printers": [],
"smooth_coefficient": "80",
"overhang_totally_speed": "19",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_single_0.06_nozzle_0.2.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json
rename to resources/profiles/BBL/process/fdm_process_single_0.06_nozzle_0.2.json
index 364bcaa1ee..ea35d93d18 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.06_nozzle_0.2.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.06_nozzle_0.2.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.06_nozzle_0.2",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.06_nozzle_0.2",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.06",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.08.json b/resources/profiles/BBL/process/fdm_process_single_0.08.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.08.json
rename to resources/profiles/BBL/process/fdm_process_single_0.08.json
index 61897f7a73..e9b651f282 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.08.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.08.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.08",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.08",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.08",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_single_0.08_nozzle_0.2.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json
rename to resources/profiles/BBL/process/fdm_process_single_0.08_nozzle_0.2.json
index 52a1749075..643d8667c2 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.08_nozzle_0.2.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.08_nozzle_0.2.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.08_nozzle_0.2",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.08_nozzle_0.2",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.08",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_single_0.10_nozzle_0.2.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json
rename to resources/profiles/BBL/process/fdm_process_single_0.10_nozzle_0.2.json
index 020a3f9cc8..2caa8812d2 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.10_nozzle_0.2.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.10_nozzle_0.2.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.10_nozzle_0.2",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.10_nozzle_0.2",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.1",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.12.json b/resources/profiles/BBL/process/fdm_process_single_0.12.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.12.json
rename to resources/profiles/BBL/process/fdm_process_single_0.12.json
index e22593fb30..4387815278 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.12.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.12.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.12",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.12",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.12",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_single_0.12_nozzle_0.2.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json
rename to resources/profiles/BBL/process/fdm_process_single_0.12_nozzle_0.2.json
index 56aedfd03e..f2c1662d40 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.12_nozzle_0.2.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.12_nozzle_0.2.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.12_nozzle_0.2",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.12_nozzle_0.2",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.12",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json b/resources/profiles/BBL/process/fdm_process_single_0.14_nozzle_0.2.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json
rename to resources/profiles/BBL/process/fdm_process_single_0.14_nozzle_0.2.json
index 7c10c6c673..0cae00d030 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.14_nozzle_0.2.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.14_nozzle_0.2.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.14_nozzle_0.2",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.14_nozzle_0.2",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.14",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.16.json b/resources/profiles/BBL/process/fdm_process_single_0.16.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.16.json
rename to resources/profiles/BBL/process/fdm_process_single_0.16.json
index 3d60b01d8b..5bcb42994d 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.16.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.16.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.16",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.16",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.16",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_single_0.18_nozzle_0.6.json
similarity index 89%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json
rename to resources/profiles/BBL/process/fdm_process_single_0.18_nozzle_0.6.json
index 31c88af561..db8428fad7 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.18_nozzle_0.6.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.18_nozzle_0.6.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.18_nozzle_0.6",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.18_nozzle_0.6",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.18",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.20.json b/resources/profiles/BBL/process/fdm_process_single_0.20.json
similarity index 84%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.20.json
rename to resources/profiles/BBL/process/fdm_process_single_0.20.json
index 331f77e4e7..a6809f2df2 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.20.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.20.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.20",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.20",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"elefant_foot_compensation": "0.15",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.24.json b/resources/profiles/BBL/process/fdm_process_single_0.24.json
similarity index 86%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.24.json
rename to resources/profiles/BBL/process/fdm_process_single_0.24.json
index 1a0bd76e40..72d1f54009 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.24.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.24.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.24",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.24",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.24",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_single_0.24_nozzle_0.6.json
similarity index 87%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json
rename to resources/profiles/BBL/process/fdm_process_single_0.24_nozzle_0.6.json
index ca62151342..76d6443637 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.6.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.24_nozzle_0.6.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.24_nozzle_0.6",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.24_nozzle_0.6",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.24",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_single_0.24_nozzle_0.8.json
similarity index 88%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json
rename to resources/profiles/BBL/process/fdm_process_single_0.24_nozzle_0.8.json
index 88e1f68075..516aeab725 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.24_nozzle_0.8.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.24_nozzle_0.8.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.24_nozzle_0.8",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.24_nozzle_0.8",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.24",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.28.json b/resources/profiles/BBL/process/fdm_process_single_0.28.json
similarity index 86%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.28.json
rename to resources/profiles/BBL/process/fdm_process_single_0.28.json
index efd2cc4d01..ebaf9c18a1 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.28.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.28.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.28",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.28",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.28",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_single_0.30_nozzle_0.6.json
similarity index 87%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json
rename to resources/profiles/BBL/process/fdm_process_single_0.30_nozzle_0.6.json
index 08476dbb78..0fb8452113 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.30_nozzle_0.6.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.30_nozzle_0.6.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.30_nozzle_0.6",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.30_nozzle_0.6",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.3",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_single_0.32_nozzle_0.8.json
similarity index 88%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json
rename to resources/profiles/BBL/process/fdm_process_single_0.32_nozzle_0.8.json
index c1622d28f5..4c950cea9f 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.32_nozzle_0.8.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.32_nozzle_0.8.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.32_nozzle_0.8",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.32_nozzle_0.8",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.32",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_single_0.36_nozzle_0.6.json
similarity index 87%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json
rename to resources/profiles/BBL/process/fdm_process_single_0.36_nozzle_0.6.json
index f9c917dfc5..5deb4a3d4b 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.36_nozzle_0.6.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.36_nozzle_0.6.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.36_nozzle_0.6",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.36_nozzle_0.6",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.36",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_single_0.40_nozzle_0.8.json
similarity index 88%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json
rename to resources/profiles/BBL/process/fdm_process_single_0.40_nozzle_0.8.json
index be6eb5944a..0b8258b96e 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.40_nozzle_0.8.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.40_nozzle_0.8.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.40_nozzle_0.8",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.40_nozzle_0.8",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.4",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json b/resources/profiles/BBL/process/fdm_process_single_0.42_nozzle_0.6.json
similarity index 87%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json
rename to resources/profiles/BBL/process/fdm_process_single_0.42_nozzle_0.6.json
index d879b17b8b..6923ab2236 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.42_nozzle_0.6.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.42_nozzle_0.6.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.42_nozzle_0.6",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.42_nozzle_0.6",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.42",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_single_0.48_nozzle_0.8.json
similarity index 88%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json
rename to resources/profiles/BBL/process/fdm_process_single_0.48_nozzle_0.8.json
index e9955abd55..f66069668c 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.48_nozzle_0.8.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.48_nozzle_0.8.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.48_nozzle_0.8",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.48_nozzle_0.8",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.48",
diff --git a/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json b/resources/profiles/BBL/process/fdm_process_single_0.56_nozzle_0.8.json
similarity index 88%
rename from resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json
rename to resources/profiles/BBL/process/fdm_process_single_0.56_nozzle_0.8.json
index 99fb6bf6e7..41e489443b 100644
--- a/resources/profiles/BBL/process/fdm_process_bbl_0.56_nozzle_0.8.json
+++ b/resources/profiles/BBL/process/fdm_process_single_0.56_nozzle_0.8.json
@@ -1,7 +1,7 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.56_nozzle_0.8",
- "inherits": "fdm_process_bbl_common",
+ "name": "fdm_process_single_0.56_nozzle_0.8",
+ "inherits": "fdm_process_single_common",
"from": "system",
"instantiation": "false",
"layer_height": "0.56",
diff --git a/resources/profiles/BBL/process/fdm_process_single_common.json b/resources/profiles/BBL/process/fdm_process_single_common.json
new file mode 100644
index 0000000000..9edabd17ec
--- /dev/null
+++ b/resources/profiles/BBL/process/fdm_process_single_common.json
@@ -0,0 +1,25 @@
+{
+ "type": "process",
+ "name": "fdm_process_single_common",
+ "inherits": "fdm_process_common",
+ "from": "system",
+ "instantiation": "false",
+ "bridge_speed": "50",
+ "gap_infill_speed": "50",
+ "initial_layer_acceleration": "500",
+ "initial_layer_infill_speed": "60",
+ "initial_layer_speed": "30",
+ "inner_wall_speed": "150",
+ "internal_solid_infill_speed": "150",
+ "outer_wall_acceleration": "5000",
+ "overhang_1_4_speed": "0",
+ "overhang_2_4_speed": "50",
+ "overhang_3_4_speed": "30",
+ "overhang_4_4_speed": "10",
+ "sparse_infill_speed": "250",
+ "support_speed": "150",
+ "top_surface_acceleration": "2000",
+ "top_surface_speed": "200",
+ "travel_speed": "500",
+ "compatible_printers": []
+}
\ No newline at end of file
diff --git a/resources/profiles/Ginger Additive/process/0.60mm Standard.json b/resources/profiles/Ginger Additive/process/0.60mm Standard.json
index 0b08cb66bb..97fc0d11f1 100644
--- a/resources/profiles/Ginger Additive/process/0.60mm Standard.json
+++ b/resources/profiles/Ginger Additive/process/0.60mm Standard.json
@@ -67,11 +67,13 @@
"travel_acceleration": "2500",
"travel_jerk": "7",
"travel_speed": "250",
- "version": "0.0.0.0",
+ "version": "0.0.0.1",
"wipe_on_loops": "1",
"wipe_speed": "30",
"xy_contour_compensation": "0",
"xy_hole_compensation": "0",
"instantiation": "true",
+ "skin_infill_line_width": "1.2",
+ "skeleton_infill_line_width": "1.2",
"compatible_printers": ["Ginger G1 1.2 nozzle"]
}
diff --git a/resources/profiles/Ginger Additive/process/1.50mm Standard.json b/resources/profiles/Ginger Additive/process/1.50mm Standard.json
index 9657edc661..09f6147be2 100644
--- a/resources/profiles/Ginger Additive/process/1.50mm Standard.json
+++ b/resources/profiles/Ginger Additive/process/1.50mm Standard.json
@@ -56,7 +56,7 @@
"travel_acceleration": "2500",
"travel_jerk": "7",
"travel_speed": "250",
- "version": "0.0.0.0",
+ "version": "0.0.0.1",
"wall_generator": "arachne",
"wall_loops": "1",
"wipe_on_loops": "1",
@@ -64,5 +64,7 @@
"xy_contour_compensation": "0",
"xy_hole_compensation": "0",
"instantiation": "true",
+ "skin_infill_line_width": "3.0",
+ "skeleton_infill_line_width": "3.0",
"compatible_printers": ["Ginger G1 3.0 nozzle"]
}
diff --git a/resources/profiles/Ginger Additive/process/1.80mm Vasemode.json b/resources/profiles/Ginger Additive/process/1.80mm Vasemode.json
index d081db4351..0405ba1923 100644
--- a/resources/profiles/Ginger Additive/process/1.80mm Vasemode.json
+++ b/resources/profiles/Ginger Additive/process/1.80mm Vasemode.json
@@ -63,12 +63,14 @@
"travel_acceleration": "2500",
"travel_jerk": "7",
"travel_speed": "250",
- "version": "0.0.0.0",
+ "version": "0.0.0.1",
"wall_loops": "1",
"wipe_on_loops": "1",
"wipe_speed": "40",
"xy_contour_compensation": "0",
"xy_hole_compensation": "0",
"instantiation": "true",
+ "skin_infill_line_width": "3.0",
+ "skeleton_infill_line_width": "3.0",
"compatible_printers": ["Ginger G1 3.0 nozzle"]
}
diff --git a/resources/profiles/Ginger Additive/process/2.50mm Standard.json b/resources/profiles/Ginger Additive/process/2.50mm Standard.json
index f43aca97b2..b31a1d1607 100644
--- a/resources/profiles/Ginger Additive/process/2.50mm Standard.json
+++ b/resources/profiles/Ginger Additive/process/2.50mm Standard.json
@@ -63,7 +63,7 @@
"travel_acceleration": "2500",
"travel_jerk": "7",
"travel_speed": "250",
- "version": "0.0.0.0",
+ "version": "0.0.0.1",
"wall_generator": "arachne",
"wall_loops": "1",
"wipe_on_loops": "1",
@@ -71,5 +71,7 @@
"xy_contour_compensation": "0",
"xy_hole_compensation": "0",
"instantiation": "true",
+ "skin_infill_line_width": "5.0",
+ "skeleton_infill_line_width": "5.0",
"compatible_printers": ["Ginger G1 5.0 nozzle"]
}
diff --git a/resources/profiles/Ginger Additive/process/4.00mm Standard.json b/resources/profiles/Ginger Additive/process/4.00mm Standard.json
index fe057dc3f1..58b3e95371 100644
--- a/resources/profiles/Ginger Additive/process/4.00mm Standard.json
+++ b/resources/profiles/Ginger Additive/process/4.00mm Standard.json
@@ -61,7 +61,7 @@
"travel_acceleration": "2500",
"travel_jerk": "7",
"travel_speed": "250",
- "version": "0.0.0.0",
+ "version": "0.0.0.1",
"wall_generator": "arachne",
"wall_loops": "1",
"wipe_on_loops": "1",
@@ -69,5 +69,7 @@
"xy_contour_compensation": "0",
"xy_hole_compensation": "0",
"instantiation": "true",
+ "skin_infill_line_width": "8.0",
+ "skeleton_infill_line_width": "8.0",
"compatible_printers": ["Ginger G1 8.0 nozzle"]
}
diff --git a/resources/profiles/OrcaArena.json b/resources/profiles/OrcaArena.json
index d218006bee..6f10184faf 100644
--- a/resources/profiles/OrcaArena.json
+++ b/resources/profiles/OrcaArena.json
@@ -16,44 +16,44 @@
"sub_path": "process/fdm_process_common.json"
},
{
- "name": "fdm_process_bbl_common",
- "sub_path": "process/fdm_process_bbl_common.json"
+ "name": "fdm_process_arena_common",
+ "sub_path": "process/fdm_process_arena_common.json"
},
{
- "name": "fdm_process_bbl_0.08",
- "sub_path": "process/fdm_process_bbl_0.08.json"
+ "name": "fdm_process_arena_0.08",
+ "sub_path": "process/fdm_process_arena_0.08.json"
},
{
- "name": "fdm_process_bbl_0.10_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.10_nozzle_0.2.json"
+ "name": "fdm_process_arena_0.10_nozzle_0.2",
+ "sub_path": "process/fdm_process_arena_0.10_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.40_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.40_nozzle_0.8.json"
+ "name": "fdm_process_arena_0.40_nozzle_0.8",
+ "sub_path": "process/fdm_process_arena_0.40_nozzle_0.8.json"
},
{
- "name": "fdm_process_bbl_0.30_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.30_nozzle_0.6.json"
+ "name": "fdm_process_arena_0.30_nozzle_0.6",
+ "sub_path": "process/fdm_process_arena_0.30_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.12",
- "sub_path": "process/fdm_process_bbl_0.12.json"
+ "name": "fdm_process_arena_0.12",
+ "sub_path": "process/fdm_process_arena_0.12.json"
},
{
- "name": "fdm_process_bbl_0.16",
- "sub_path": "process/fdm_process_bbl_0.16.json"
+ "name": "fdm_process_arena_0.16",
+ "sub_path": "process/fdm_process_arena_0.16.json"
},
{
- "name": "fdm_process_bbl_0.20",
- "sub_path": "process/fdm_process_bbl_0.20.json"
+ "name": "fdm_process_arena_0.20",
+ "sub_path": "process/fdm_process_arena_0.20.json"
},
{
- "name": "fdm_process_bbl_0.24",
- "sub_path": "process/fdm_process_bbl_0.24.json"
+ "name": "fdm_process_arena_0.24",
+ "sub_path": "process/fdm_process_arena_0.24.json"
},
{
- "name": "fdm_process_bbl_0.28",
- "sub_path": "process/fdm_process_bbl_0.28.json"
+ "name": "fdm_process_arena_0.28",
+ "sub_path": "process/fdm_process_arena_0.28.json"
},
{
"name": "0.08mm Extra Fine @Arena X1C",
@@ -96,20 +96,20 @@
"sub_path": "process/0.40mm Standard @Arena X1C 0.8 nozzle.json"
},
{
- "name": "fdm_process_bbl_0.06_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.06_nozzle_0.2.json"
+ "name": "fdm_process_arena_0.06_nozzle_0.2",
+ "sub_path": "process/fdm_process_arena_0.06_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.08_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.08_nozzle_0.2.json"
+ "name": "fdm_process_arena_0.08_nozzle_0.2",
+ "sub_path": "process/fdm_process_arena_0.08_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.12_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.12_nozzle_0.2.json"
+ "name": "fdm_process_arena_0.12_nozzle_0.2",
+ "sub_path": "process/fdm_process_arena_0.12_nozzle_0.2.json"
},
{
- "name": "fdm_process_bbl_0.14_nozzle_0.2",
- "sub_path": "process/fdm_process_bbl_0.14_nozzle_0.2.json"
+ "name": "fdm_process_arena_0.14_nozzle_0.2",
+ "sub_path": "process/fdm_process_arena_0.14_nozzle_0.2.json"
},
{
"name": "0.06mm Standard @Arena X1C 0.2 nozzle",
@@ -128,20 +128,20 @@
"sub_path": "process/0.14mm Standard @Arena X1C 0.2 nozzle.json"
},
{
- "name": "fdm_process_bbl_0.18_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.18_nozzle_0.6.json"
+ "name": "fdm_process_arena_0.18_nozzle_0.6",
+ "sub_path": "process/fdm_process_arena_0.18_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.24_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.24_nozzle_0.6.json"
+ "name": "fdm_process_arena_0.24_nozzle_0.6",
+ "sub_path": "process/fdm_process_arena_0.24_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.36_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.36_nozzle_0.6.json"
+ "name": "fdm_process_arena_0.36_nozzle_0.6",
+ "sub_path": "process/fdm_process_arena_0.36_nozzle_0.6.json"
},
{
- "name": "fdm_process_bbl_0.42_nozzle_0.6",
- "sub_path": "process/fdm_process_bbl_0.42_nozzle_0.6.json"
+ "name": "fdm_process_arena_0.42_nozzle_0.6",
+ "sub_path": "process/fdm_process_arena_0.42_nozzle_0.6.json"
},
{
"name": "0.18mm Standard @Arena X1C 0.6 nozzle",
@@ -160,20 +160,20 @@
"sub_path": "process/0.42mm Standard @Arena X1C 0.6 nozzle.json"
},
{
- "name": "fdm_process_bbl_0.24_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.24_nozzle_0.8.json"
+ "name": "fdm_process_arena_0.24_nozzle_0.8",
+ "sub_path": "process/fdm_process_arena_0.24_nozzle_0.8.json"
},
{
- "name": "fdm_process_bbl_0.32_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.32_nozzle_0.8.json"
+ "name": "fdm_process_arena_0.32_nozzle_0.8",
+ "sub_path": "process/fdm_process_arena_0.32_nozzle_0.8.json"
},
{
- "name": "fdm_process_bbl_0.48_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.48_nozzle_0.8.json"
+ "name": "fdm_process_arena_0.48_nozzle_0.8",
+ "sub_path": "process/fdm_process_arena_0.48_nozzle_0.8.json"
},
{
- "name": "fdm_process_bbl_0.56_nozzle_0.8",
- "sub_path": "process/fdm_process_bbl_0.56_nozzle_0.8.json"
+ "name": "fdm_process_arena_0.56_nozzle_0.8",
+ "sub_path": "process/fdm_process_arena_0.56_nozzle_0.8.json"
},
{
"name": "0.24mm Standard @Arena X1C 0.8 nozzle",
diff --git a/resources/profiles/OrcaArena/process/0.06mm Standard @Arena X1C 0.2 nozzle.json b/resources/profiles/OrcaArena/process/0.06mm Standard @Arena X1C 0.2 nozzle.json
index fb227626fd..c11c22991a 100644
--- a/resources/profiles/OrcaArena/process/0.06mm Standard @Arena X1C 0.2 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.06mm Standard @Arena X1C 0.2 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.06mm Standard @Arena X1C 0.2 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.06_nozzle_0.2",
+ "inherits": "fdm_process_arena_0.06_nozzle_0.2",
"compatible_printers": [
"Orca Arena X1 Carbon 0.2 nozzle",
"Orca Arena X1 0.2 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.08mm Extra Fine @Arena X1C.json b/resources/profiles/OrcaArena/process/0.08mm Extra Fine @Arena X1C.json
index 3f92bb8b6f..a21add8f87 100644
--- a/resources/profiles/OrcaArena/process/0.08mm Extra Fine @Arena X1C.json
+++ b/resources/profiles/OrcaArena/process/0.08mm Extra Fine @Arena X1C.json
@@ -4,7 +4,7 @@
"name": "0.08mm Extra Fine @Arena X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.08",
+ "inherits": "fdm_process_arena_0.08",
"compatible_printers": [
"Orca Arena X1 Carbon 0.4 nozzle",
"Orca Arena X1 0.4 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.08mm Standard @Arena X1C 0.2 nozzle.json b/resources/profiles/OrcaArena/process/0.08mm Standard @Arena X1C 0.2 nozzle.json
index b2fe7cb3bb..99c3bae385 100644
--- a/resources/profiles/OrcaArena/process/0.08mm Standard @Arena X1C 0.2 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.08mm Standard @Arena X1C 0.2 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.08mm Standard @Arena X1C 0.2 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.08_nozzle_0.2",
+ "inherits": "fdm_process_arena_0.08_nozzle_0.2",
"compatible_printers": [
"Orca Arena X1 Carbon 0.2 nozzle",
"Orca Arena X1 0.2 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.10mm Standard @Arena X1C 0.2 nozzle.json b/resources/profiles/OrcaArena/process/0.10mm Standard @Arena X1C 0.2 nozzle.json
index 89a48d31bb..c392d0ee9c 100644
--- a/resources/profiles/OrcaArena/process/0.10mm Standard @Arena X1C 0.2 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.10mm Standard @Arena X1C 0.2 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.10mm Standard @Arena X1C 0.2 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.10_nozzle_0.2",
+ "inherits": "fdm_process_arena_0.10_nozzle_0.2",
"compatible_printers": [
"Orca Arena X1 Carbon 0.2 nozzle",
"Orca Arena X1 0.2 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.12mm Fine @Arena X1C.json b/resources/profiles/OrcaArena/process/0.12mm Fine @Arena X1C.json
index 140f6e7331..e5c28d36eb 100644
--- a/resources/profiles/OrcaArena/process/0.12mm Fine @Arena X1C.json
+++ b/resources/profiles/OrcaArena/process/0.12mm Fine @Arena X1C.json
@@ -4,7 +4,7 @@
"name": "0.12mm Fine @Arena X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.12",
+ "inherits": "fdm_process_arena_0.12",
"compatible_printers": [
"Orca Arena X1 Carbon 0.4 nozzle",
"Orca Arena X1 0.4 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.12mm Standard @Arena X1C 0.2 nozzle.json b/resources/profiles/OrcaArena/process/0.12mm Standard @Arena X1C 0.2 nozzle.json
index c63dffe1a4..bc0686ffb8 100644
--- a/resources/profiles/OrcaArena/process/0.12mm Standard @Arena X1C 0.2 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.12mm Standard @Arena X1C 0.2 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.12mm Standard @Arena X1C 0.2 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.12_nozzle_0.2",
+ "inherits": "fdm_process_arena_0.12_nozzle_0.2",
"compatible_printers": [
"Orca Arena X1 Carbon 0.2 nozzle",
"Orca Arena X1 0.2 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.14mm Standard @Arena X1C 0.2 nozzle.json b/resources/profiles/OrcaArena/process/0.14mm Standard @Arena X1C 0.2 nozzle.json
index 2d29924474..37809dbca9 100644
--- a/resources/profiles/OrcaArena/process/0.14mm Standard @Arena X1C 0.2 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.14mm Standard @Arena X1C 0.2 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.14mm Standard @Arena X1C 0.2 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.14_nozzle_0.2",
+ "inherits": "fdm_process_arena_0.14_nozzle_0.2",
"compatible_printers": [
"Orca Arena X1 Carbon 0.2 nozzle",
"Orca Arena X1 0.2 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.16mm Optimal @Arena X1C.json b/resources/profiles/OrcaArena/process/0.16mm Optimal @Arena X1C.json
index 6c41ea8e3f..a4eae17d26 100644
--- a/resources/profiles/OrcaArena/process/0.16mm Optimal @Arena X1C.json
+++ b/resources/profiles/OrcaArena/process/0.16mm Optimal @Arena X1C.json
@@ -4,7 +4,7 @@
"name": "0.16mm Optimal @Arena X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.16",
+ "inherits": "fdm_process_arena_0.16",
"compatible_printers": [
"Orca Arena X1 Carbon 0.4 nozzle",
"Orca Arena X1 0.4 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.18mm Standard @Arena X1C 0.6 nozzle.json b/resources/profiles/OrcaArena/process/0.18mm Standard @Arena X1C 0.6 nozzle.json
index 23e5a27340..66371f8339 100644
--- a/resources/profiles/OrcaArena/process/0.18mm Standard @Arena X1C 0.6 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.18mm Standard @Arena X1C 0.6 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.18mm Standard @Arena X1C 0.6 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.18_nozzle_0.6",
+ "inherits": "fdm_process_arena_0.18_nozzle_0.6",
"compatible_printers": [
"Orca Arena X1 Carbon 0.6 nozzle",
"Orca Arena X1 0.6 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.20mm Bambu Support W @Arena X1C.json b/resources/profiles/OrcaArena/process/0.20mm Bambu Support W @Arena X1C.json
index b31526453e..ed49f5d0e9 100644
--- a/resources/profiles/OrcaArena/process/0.20mm Bambu Support W @Arena X1C.json
+++ b/resources/profiles/OrcaArena/process/0.20mm Bambu Support W @Arena X1C.json
@@ -4,7 +4,7 @@
"name": "0.20mm Arena Support W @Arena X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_arena_0.20",
"enable_support": "1",
"support_interface_top_layers": "3",
"support_top_z_distance": "0.2",
diff --git a/resources/profiles/OrcaArena/process/0.20mm Standard @Arena X1C.json b/resources/profiles/OrcaArena/process/0.20mm Standard @Arena X1C.json
index 7c29054e32..dbc599a13c 100644
--- a/resources/profiles/OrcaArena/process/0.20mm Standard @Arena X1C.json
+++ b/resources/profiles/OrcaArena/process/0.20mm Standard @Arena X1C.json
@@ -4,7 +4,7 @@
"name": "0.20mm Standard @Arena X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_arena_0.20",
"compatible_printers": [
"Orca Arena X1 Carbon 0.4 nozzle",
"Orca Arena X1 0.4 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.20mm Strength @Arena X1C.json b/resources/profiles/OrcaArena/process/0.20mm Strength @Arena X1C.json
index aee1feb20f..70284b7719 100644
--- a/resources/profiles/OrcaArena/process/0.20mm Strength @Arena X1C.json
+++ b/resources/profiles/OrcaArena/process/0.20mm Strength @Arena X1C.json
@@ -4,7 +4,7 @@
"name": "0.20mm Strength @Arena X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_arena_0.20",
"outer_wall_speed": "60",
"wall_loops": "6",
"sparse_infill_density": "25%",
diff --git a/resources/profiles/OrcaArena/process/0.24mm Draft @Arena X1C.json b/resources/profiles/OrcaArena/process/0.24mm Draft @Arena X1C.json
index 3493d123c8..b1a5683ad9 100644
--- a/resources/profiles/OrcaArena/process/0.24mm Draft @Arena X1C.json
+++ b/resources/profiles/OrcaArena/process/0.24mm Draft @Arena X1C.json
@@ -4,7 +4,7 @@
"name": "0.24mm Draft @Arena X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.24",
+ "inherits": "fdm_process_arena_0.24",
"compatible_printers": [
"Orca Arena X1 Carbon 0.4 nozzle",
"Orca Arena X1 0.4 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.24mm Standard @Arena X1C 0.6 nozzle.json b/resources/profiles/OrcaArena/process/0.24mm Standard @Arena X1C 0.6 nozzle.json
index 0b68f55207..2468e03eb3 100644
--- a/resources/profiles/OrcaArena/process/0.24mm Standard @Arena X1C 0.6 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.24mm Standard @Arena X1C 0.6 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.24mm Standard @Arena X1C 0.6 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.6",
+ "inherits": "fdm_process_arena_0.24_nozzle_0.6",
"compatible_printers": [
"Orca Arena X1 Carbon 0.6 nozzle",
"Orca Arena X1 0.6 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.24mm Standard @Arena X1C 0.8 nozzle.json b/resources/profiles/OrcaArena/process/0.24mm Standard @Arena X1C 0.8 nozzle.json
index d41f42e705..2b699eef15 100644
--- a/resources/profiles/OrcaArena/process/0.24mm Standard @Arena X1C 0.8 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.24mm Standard @Arena X1C 0.8 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.24mm Standard @Arena X1C 0.8 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.24_nozzle_0.8",
+ "inherits": "fdm_process_arena_0.24_nozzle_0.8",
"compatible_printers": [
"Orca Arena X1 Carbon 0.8 nozzle",
"Orca Arena X1 0.8 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.28mm Extra Draft @Arena X1C.json b/resources/profiles/OrcaArena/process/0.28mm Extra Draft @Arena X1C.json
index 0f7399c0ff..3f0ce712d2 100644
--- a/resources/profiles/OrcaArena/process/0.28mm Extra Draft @Arena X1C.json
+++ b/resources/profiles/OrcaArena/process/0.28mm Extra Draft @Arena X1C.json
@@ -4,7 +4,7 @@
"name": "0.28mm Extra Draft @Arena X1C",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.28",
+ "inherits": "fdm_process_arena_0.28",
"compatible_printers": [
"Orca Arena X1 Carbon 0.4 nozzle",
"Orca Arena X1 0.4 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.30mm Standard @Arena X1C 0.6 nozzle.json b/resources/profiles/OrcaArena/process/0.30mm Standard @Arena X1C 0.6 nozzle.json
index 7b4a4d159d..72862163d2 100644
--- a/resources/profiles/OrcaArena/process/0.30mm Standard @Arena X1C 0.6 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.30mm Standard @Arena X1C 0.6 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.30mm Standard @Arena X1C 0.6 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_arena_0.30_nozzle_0.6",
"compatible_printers": [
"Orca Arena X1 Carbon 0.6 nozzle"
]
diff --git a/resources/profiles/OrcaArena/process/0.30mm Strength @Arena X1C 0.6 nozzle.json b/resources/profiles/OrcaArena/process/0.30mm Strength @Arena X1C 0.6 nozzle.json
index 4703c9bd97..22e7ceab3b 100644
--- a/resources/profiles/OrcaArena/process/0.30mm Strength @Arena X1C 0.6 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.30mm Strength @Arena X1C 0.6 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.30mm Strength @Arena X1C 0.6 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.30_nozzle_0.6",
+ "inherits": "fdm_process_arena_0.30_nozzle_0.6",
"wall_loops": "4",
"sparse_infill_density":"25%",
"compatible_printers": [
diff --git a/resources/profiles/OrcaArena/process/0.32mm Standard @Arena X1C 0.8 nozzle.json b/resources/profiles/OrcaArena/process/0.32mm Standard @Arena X1C 0.8 nozzle.json
index 46495ffd04..187a24d811 100644
--- a/resources/profiles/OrcaArena/process/0.32mm Standard @Arena X1C 0.8 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.32mm Standard @Arena X1C 0.8 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.32mm Standard @Arena X1C 0.8 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.32_nozzle_0.8",
+ "inherits": "fdm_process_arena_0.32_nozzle_0.8",
"compatible_printers": [
"Orca Arena X1 Carbon 0.8 nozzle",
"Orca Arena X1 0.8 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.36mm Standard @Arena X1C 0.6 nozzle.json b/resources/profiles/OrcaArena/process/0.36mm Standard @Arena X1C 0.6 nozzle.json
index 73188a627a..51c677d51f 100644
--- a/resources/profiles/OrcaArena/process/0.36mm Standard @Arena X1C 0.6 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.36mm Standard @Arena X1C 0.6 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.36mm Standard @Arena X1C 0.6 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.36_nozzle_0.6",
+ "inherits": "fdm_process_arena_0.36_nozzle_0.6",
"compatible_printers": [
"Orca Arena X1 Carbon 0.6 nozzle",
"Orca Arena X1 0.6 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.40mm Standard @Arena X1C 0.8 nozzle.json b/resources/profiles/OrcaArena/process/0.40mm Standard @Arena X1C 0.8 nozzle.json
index c89228221a..69f766b0a5 100644
--- a/resources/profiles/OrcaArena/process/0.40mm Standard @Arena X1C 0.8 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.40mm Standard @Arena X1C 0.8 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.40mm Standard @Arena X1C 0.8 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.40_nozzle_0.8",
+ "inherits": "fdm_process_arena_0.40_nozzle_0.8",
"compatible_printers": [
"Orca Arena X1 Carbon 0.8 nozzle"
]
diff --git a/resources/profiles/OrcaArena/process/0.42mm Standard @Arena X1C 0.6 nozzle.json b/resources/profiles/OrcaArena/process/0.42mm Standard @Arena X1C 0.6 nozzle.json
index 0dd4f8e829..de38bf2726 100644
--- a/resources/profiles/OrcaArena/process/0.42mm Standard @Arena X1C 0.6 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.42mm Standard @Arena X1C 0.6 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.42mm Standard @Arena X1C 0.6 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.42_nozzle_0.6",
+ "inherits": "fdm_process_arena_0.42_nozzle_0.6",
"compatible_printers": [
"Orca Arena X1 Carbon 0.6 nozzle",
"Orca Arena X1 0.6 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.48mm Standard @Arena X1C 0.8 nozzle.json b/resources/profiles/OrcaArena/process/0.48mm Standard @Arena X1C 0.8 nozzle.json
index d745f58dda..86d937870f 100644
--- a/resources/profiles/OrcaArena/process/0.48mm Standard @Arena X1C 0.8 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.48mm Standard @Arena X1C 0.8 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.48mm Standard @Arena X1C 0.8 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.48_nozzle_0.8",
+ "inherits": "fdm_process_arena_0.48_nozzle_0.8",
"compatible_printers": [
"Orca Arena X1 Carbon 0.8 nozzle",
"Orca Arena X1 0.8 nozzle"
diff --git a/resources/profiles/OrcaArena/process/0.56mm Standard @Arena X1C 0.8 nozzle.json b/resources/profiles/OrcaArena/process/0.56mm Standard @Arena X1C 0.8 nozzle.json
index 15fade2964..62e578beb8 100644
--- a/resources/profiles/OrcaArena/process/0.56mm Standard @Arena X1C 0.8 nozzle.json
+++ b/resources/profiles/OrcaArena/process/0.56mm Standard @Arena X1C 0.8 nozzle.json
@@ -4,7 +4,7 @@
"name": "0.56mm Standard @Arena X1C 0.8 nozzle",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.56_nozzle_0.8",
+ "inherits": "fdm_process_arena_0.56_nozzle_0.8",
"compatible_printers": [
"Orca Arena X1 Carbon 0.8 nozzle",
"Orca Arena X1 0.8 nozzle"
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.06_nozzle_0.2.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.06_nozzle_0.2.json
similarity index 87%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.06_nozzle_0.2.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.06_nozzle_0.2.json
index 35257823ae..e842267f20 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.06_nozzle_0.2.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.06_nozzle_0.2.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.06_nozzle_0.2",
+ "name": "fdm_process_arena_0.06_nozzle_0.2",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.06",
"initial_layer_print_height": "0.1",
"wall_loops": "4",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.08.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.08.json
similarity index 89%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.08.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.08.json
index 6a3bd6f05d..891e3e6527 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.08.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.08.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.08",
+ "name": "fdm_process_arena_0.08",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.08",
"elefant_foot_compensation": "0.15",
"bottom_shell_layers": "7",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.08_nozzle_0.2.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.08_nozzle_0.2.json
similarity index 87%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.08_nozzle_0.2.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.08_nozzle_0.2.json
index 90fae21397..e19a49279b 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.08_nozzle_0.2.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.08_nozzle_0.2.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.08_nozzle_0.2",
+ "name": "fdm_process_arena_0.08_nozzle_0.2",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.08",
"initial_layer_print_height": "0.1",
"wall_loops": "4",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.10_nozzle_0.2.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.10_nozzle_0.2.json
similarity index 88%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.10_nozzle_0.2.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.10_nozzle_0.2.json
index a53df8b5a9..2a87fdde76 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.10_nozzle_0.2.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.10_nozzle_0.2.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.10_nozzle_0.2",
+ "name": "fdm_process_arena_0.10_nozzle_0.2",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.1",
"initial_layer_print_height": "0.1",
"wall_loops": "4",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.12.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.12.json
similarity index 89%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.12.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.12.json
index 3890b18a5c..b31a0b012a 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.12.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.12.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.12",
+ "name": "fdm_process_arena_0.12",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.12",
"bottom_shell_layers": "5",
"elefant_foot_compensation": "0.15",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.12_nozzle_0.2.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.12_nozzle_0.2.json
similarity index 87%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.12_nozzle_0.2.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.12_nozzle_0.2.json
index 8a76d4c7cb..432d530d20 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.12_nozzle_0.2.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.12_nozzle_0.2.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.12_nozzle_0.2",
+ "name": "fdm_process_arena_0.12_nozzle_0.2",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.12",
"initial_layer_print_height": "0.1",
"wall_loops": "4",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.14_nozzle_0.2.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.14_nozzle_0.2.json
similarity index 87%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.14_nozzle_0.2.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.14_nozzle_0.2.json
index 81bd28b30c..ec826048d7 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.14_nozzle_0.2.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.14_nozzle_0.2.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.14_nozzle_0.2",
+ "name": "fdm_process_arena_0.14_nozzle_0.2",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.14",
"initial_layer_print_height": "0.1",
"wall_loops": "4",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.16.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.16.json
similarity index 89%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.16.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.16.json
index 98523a0fa6..016a2a1a01 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.16.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.16.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.16",
+ "name": "fdm_process_arena_0.16",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.16",
"elefant_foot_compensation": "0.15",
"bottom_shell_layers": "4",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.18_nozzle_0.6.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.18_nozzle_0.6.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.18_nozzle_0.6.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.18_nozzle_0.6.json
index 1a9120fdb9..9fb9a8582f 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.18_nozzle_0.6.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.18_nozzle_0.6.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.18_nozzle_0.6",
+ "name": "fdm_process_arena_0.18_nozzle_0.6",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.18",
"initial_layer_print_height": "0.3",
"wall_loops": "2",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.20.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.20.json
similarity index 86%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.20.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.20.json
index 12fe82dd12..a03d7a0e75 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.20.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.20.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.20",
+ "name": "fdm_process_arena_0.20",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.2",
"elefant_foot_compensation": "0.15",
"bottom_shell_layers": "3",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.24.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.24.json
similarity index 88%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.24.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.24.json
index bb43494a56..ff5cbbbdd4 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.24.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.24.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.24",
+ "name": "fdm_process_arena_0.24",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.24",
"elefant_foot_compensation": "0.15",
"top_surface_line_width": "0.45",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.24_nozzle_0.6.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.24_nozzle_0.6.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.24_nozzle_0.6.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.24_nozzle_0.6.json
index aec643962c..b2d86d7f21 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.24_nozzle_0.6.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.24_nozzle_0.6.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.24_nozzle_0.6",
+ "name": "fdm_process_arena_0.24_nozzle_0.6",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.24",
"initial_layer_print_height": "0.3",
"wall_loops": "2",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.24_nozzle_0.8.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.24_nozzle_0.8.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.24_nozzle_0.8.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.24_nozzle_0.8.json
index 55d9be4407..a271c40989 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.24_nozzle_0.8.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.24_nozzle_0.8.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.24_nozzle_0.8",
+ "name": "fdm_process_arena_0.24_nozzle_0.8",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.24",
"initial_layer_print_height": "0.4",
"wall_loops": "2",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.28.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.28.json
similarity index 88%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.28.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.28.json
index aeb45ebe56..fc2ea3c5d8 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.28.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.28.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.28",
+ "name": "fdm_process_arena_0.28",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.28",
"elefant_foot_compensation": "0.15",
"top_surface_line_width": "0.45",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.30_nozzle_0.6.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.30_nozzle_0.6.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.30_nozzle_0.6.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.30_nozzle_0.6.json
index 37decfe4da..0834bbf0d6 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.30_nozzle_0.6.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.30_nozzle_0.6.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.30_nozzle_0.6",
+ "name": "fdm_process_arena_0.30_nozzle_0.6",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.3",
"initial_layer_print_height": "0.3",
"wall_loops": "3",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.32_nozzle_0.8.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.32_nozzle_0.8.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.32_nozzle_0.8.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.32_nozzle_0.8.json
index 6172f32e94..4519ea607d 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.32_nozzle_0.8.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.32_nozzle_0.8.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.32_nozzle_0.8",
+ "name": "fdm_process_arena_0.32_nozzle_0.8",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.32",
"initial_layer_print_height": "0.3",
"wall_loops": "2",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.36_nozzle_0.6.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.36_nozzle_0.6.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.36_nozzle_0.6.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.36_nozzle_0.6.json
index a8a8a1387a..4c2316f806 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.36_nozzle_0.6.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.36_nozzle_0.6.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.36_nozzle_0.6",
+ "name": "fdm_process_arena_0.36_nozzle_0.6",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.36",
"initial_layer_print_height": "0.3",
"wall_loops": "2",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.40_nozzle_0.8.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.40_nozzle_0.8.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.40_nozzle_0.8.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.40_nozzle_0.8.json
index aa514e6f04..d643b852b7 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.40_nozzle_0.8.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.40_nozzle_0.8.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.40_nozzle_0.8",
+ "name": "fdm_process_arena_0.40_nozzle_0.8",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.4",
"initial_layer_print_height": "0.4",
"wall_loops": "3",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.42_nozzle_0.6.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.42_nozzle_0.6.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.42_nozzle_0.6.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.42_nozzle_0.6.json
index 7d9309c1b1..35e8b4a7b9 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.42_nozzle_0.6.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.42_nozzle_0.6.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.42_nozzle_0.6",
+ "name": "fdm_process_arena_0.42_nozzle_0.6",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.42",
"initial_layer_print_height": "0.3",
"wall_loops": "2",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.48_nozzle_0.8.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.48_nozzle_0.8.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.48_nozzle_0.8.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.48_nozzle_0.8.json
index d026bdc746..92b4378781 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.48_nozzle_0.8.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.48_nozzle_0.8.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.48_nozzle_0.8",
+ "name": "fdm_process_arena_0.48_nozzle_0.8",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.48",
"initial_layer_print_height": "0.4",
"wall_loops": "2",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.56_nozzle_0.8.json b/resources/profiles/OrcaArena/process/fdm_process_arena_0.56_nozzle_0.8.json
similarity index 91%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_0.56_nozzle_0.8.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_0.56_nozzle_0.8.json
index f43ab7e2e5..8039c67021 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_0.56_nozzle_0.8.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_0.56_nozzle_0.8.json
@@ -1,9 +1,9 @@
{
"type": "process",
- "name": "fdm_process_bbl_0.56_nozzle_0.8",
+ "name": "fdm_process_arena_0.56_nozzle_0.8",
"from": "system",
"instantiation": "false",
- "inherits": "fdm_process_bbl_common",
+ "inherits": "fdm_process_arena_common",
"layer_height": "0.56",
"initial_layer_print_height": "0.4",
"wall_loops": "2",
diff --git a/resources/profiles/OrcaArena/process/fdm_process_bbl_common.json b/resources/profiles/OrcaArena/process/fdm_process_arena_common.json
similarity index 98%
rename from resources/profiles/OrcaArena/process/fdm_process_bbl_common.json
rename to resources/profiles/OrcaArena/process/fdm_process_arena_common.json
index 0f484cdbed..09e687514c 100644
--- a/resources/profiles/OrcaArena/process/fdm_process_bbl_common.json
+++ b/resources/profiles/OrcaArena/process/fdm_process_arena_common.json
@@ -1,6 +1,6 @@
{
"type": "process",
- "name": "fdm_process_bbl_common",
+ "name": "fdm_process_arena_common",
"from": "system",
"instantiation": "false",
"inherits": "fdm_process_common",
diff --git a/resources/profiles/Ratrig/process/0.20mm Bambu Support W @RatRig.json b/resources/profiles/Ratrig/process/0.20mm Bambu Support W @RatRig.json
index 3e4b2431bb..9e6363d6e2 100644
--- a/resources/profiles/Ratrig/process/0.20mm Bambu Support W @RatRig.json
+++ b/resources/profiles/Ratrig/process/0.20mm Bambu Support W @RatRig.json
@@ -4,7 +4,7 @@
"name": "0.20mm Bambu Support W @RatRig",
"from": "system",
"instantiation": "true",
- "inherits": "fdm_process_bbl_0.20",
+ "inherits": "fdm_process_single_0.20",
"enable_support": "1",
"support_interface_top_layers": "3",
"support_top_z_distance": "0.2",
diff --git a/src/OrcaSlicer.cpp b/src/OrcaSlicer.cpp
index b652ce689f..2257ae5f55 100644
--- a/src/OrcaSlicer.cpp
+++ b/src/OrcaSlicer.cpp
@@ -5986,6 +5986,11 @@ bool CLI::setup(int argc, char **argv)
// The resources are packed to 'resources'
// Path from Slic3r binary to resources:
boost::filesystem::path path_resources = boost::filesystem::canonical(path_to_binary).parent_path().parent_path() / "resources";
+ //Orca: for build systems that support multiple configurations, the binary may be in a subdirectory like "bin/Release" or "bin/Debug".
+ if( !boost::filesystem::exists(path_resources)) {
+ // If the resources directory does not exist, try to use the resources directory
+ path_resources = boost::filesystem::canonical(path_to_binary).parent_path().parent_path().parent_path() / "resources";
+ }
#endif
set_resources_dir(path_resources.string());
diff --git a/src/libslic3r/AppConfig.cpp b/src/libslic3r/AppConfig.cpp
index 5e21e02d24..59e236db38 100644
--- a/src/libslic3r/AppConfig.cpp
+++ b/src/libslic3r/AppConfig.cpp
@@ -257,6 +257,9 @@ void AppConfig::set_defaults()
if (get("stealth_mode").empty()) {
set_bool("stealth_mode", false);
}
+ if (get("legacy_networking").empty()) {
+ set_bool("legacy_networking", true);
+ }
if(get("check_stable_update_only").empty()) {
set_bool("check_stable_update_only", false);
diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt
index 1b782a6ee6..6a1bc24d81 100644
--- a/src/libslic3r/CMakeLists.txt
+++ b/src/libslic3r/CMakeLists.txt
@@ -3,9 +3,6 @@ project(libslic3r)
include(PrecompiledHeader)
-string(TIMESTAMP COMPILE_TIME %Y%m%d-%H%M%S)
-set(SLIC3R_BUILD_TIME ${COMPILE_TIME})
-
if(NOT DEFINED ORCA_CHECK_GCODE_PLACEHOLDERS)
set(ORCA_CHECK_GCODE_PLACEHOLDERS "0")
endif()
diff --git a/src/libslic3r/Fill/Fill.cpp b/src/libslic3r/Fill/Fill.cpp
index e56d4b2ec7..e001690ce4 100644
--- a/src/libslic3r/Fill/Fill.cpp
+++ b/src/libslic3r/Fill/Fill.cpp
@@ -41,6 +41,8 @@ struct SurfaceFillParams
// FillParams
float density = 0.f;
+ // Infill line multiplier count.
+ int multiline = 1;
// Don't adjust spacing to fill the space evenly.
// bool dont_adjust = false;
// Length of the infill anchor along the perimeter line.
@@ -88,6 +90,7 @@ struct SurfaceFillParams
RETURN_COMPARE_NON_EQUAL(overlap);
RETURN_COMPARE_NON_EQUAL(angle);
RETURN_COMPARE_NON_EQUAL(density);
+ RETURN_COMPARE_NON_EQUAL(multiline);
// RETURN_COMPARE_NON_EQUAL_TYPED(unsigned, dont_adjust);
RETURN_COMPARE_NON_EQUAL(anchor_length);
RETURN_COMPARE_NON_EQUAL(anchor_length_max);
@@ -117,6 +120,7 @@ struct SurfaceFillParams
this->bridge == rhs.bridge &&
this->bridge_angle == rhs.bridge_angle &&
this->density == rhs.density &&
+ this->multiline == rhs.multiline &&
// this->dont_adjust == rhs.dont_adjust &&
this->anchor_length == rhs.anchor_length &&
this->anchor_length_max == rhs.anchor_length_max &&
@@ -647,6 +651,7 @@ std::vector group_fills(const Layer &layer, LockRegionParam &lock_p
params.extruder = layerm.region().extruder(extrusion_role);
params.pattern = region_config.sparse_infill_pattern.value;
params.density = float(region_config.sparse_infill_density);
+ params.multiline = int(region_config.fill_multiline);
params.lattice_angle_1 = region_config.lattice_angle_1;
params.lattice_angle_2 = region_config.lattice_angle_2;
params.infill_overhang_angle = region_config.infill_overhang_angle;
@@ -1023,6 +1028,7 @@ void Layer::make_fills(FillAdaptive::Octree* adaptive_fill_octree, FillAdaptive:
// apply half spacing using this flow's own spacing and generate infill
FillParams params;
params.density = float(0.01 * surface_fill.params.density);
+ params.multiline = surface_fill.params.multiline;
params.dont_adjust = false; // surface_fill.params.dont_adjust;
params.anchor_length = surface_fill.params.anchor_length;
params.anchor_length_max = surface_fill.params.anchor_length_max;
@@ -1199,6 +1205,7 @@ Polylines Layer::generate_sparse_infill_polylines_for_anchoring(FillAdaptive::Oc
params.lattice_angle_1 = surface_fill.params.lattice_angle_1;
params.lattice_angle_2 = surface_fill.params.lattice_angle_2;
params.infill_overhang_angle = surface_fill.params.infill_overhang_angle;
+ params.multiline = surface_fill.params.multiline;
for (ExPolygon &expoly : surface_fill.expolygons) {
// Spacing is modified by the filler to indicate adjustments. Reset it for each expolygon.
diff --git a/src/libslic3r/Fill/Fill3DHoneycomb.cpp b/src/libslic3r/Fill/Fill3DHoneycomb.cpp
index eadcfbf537..34a1ff1b50 100644
--- a/src/libslic3r/Fill/Fill3DHoneycomb.cpp
+++ b/src/libslic3r/Fill/Fill3DHoneycomb.cpp
@@ -1,7 +1,7 @@
#include "../ClipperUtils.hpp"
#include "../ShortestPath.hpp"
#include "../Surface.hpp"
-
+#include "FillBase.hpp"
#include "Fill3DHoneycomb.hpp"
namespace Slic3r {
@@ -212,7 +212,7 @@ void Fill3DHoneycomb::_fill_surface_single(
// = 4 * integrate(func=4*x(sqrt(2) - 1) + 1, from=0, to=0.25)
// = (sqrt(2) + 1) / 2 [... I think]
// make a first guess at the preferred grid Size
- coordf_t gridSize = (scale_(this->spacing) * ((zScale + 1.) / 2.) / params.density);
+ coordf_t gridSize = (scale_(this->spacing) * ((zScale + 1.) / 2.) * params.multiline / params.density);
// This density calculation is incorrect for many values > 25%, possibly
// due to quantisation error, so this value is used as a first guess, then the
@@ -228,7 +228,7 @@ void Fill3DHoneycomb::_fill_surface_single(
layersPerModule = 2;
// re-adjust the grid size for a partial octahedral path
// (scale of 1.1 guessed based on modeling)
- gridSize = (scale_(this->spacing) * 1.1 / params.density);
+ gridSize = (scale_(this->spacing) * 1.1 * params.multiline / params.density);
// re-adjust zScale to make layering consistent
zScale = (gridSize * 2) / (layersPerModule * layerHeight);
} else {
@@ -238,7 +238,7 @@ void Fill3DHoneycomb::_fill_surface_single(
// re-adjust zScale to make layering consistent
zScale = (gridSize * 2) / (layersPerModule * layerHeight);
// re-adjust the grid size to account for the new zScale
- gridSize = (scale_(this->spacing) * ((zScale + 1.) / 2.) / params.density);
+ gridSize = (scale_(this->spacing) * ((zScale + 1.) / 2.) * params.multiline / params.density);
// re-calculate layersPerModule and zScale
layersPerModule = floor((gridSize * 2) / (zScale * layerHeight) + 0.05);
if(layersPerModule < 2){
@@ -264,11 +264,24 @@ void Fill3DHoneycomb::_fill_surface_single(
// move pattern in place
for (Polyline &pl : polylines){
pl.translate(bb.min);
+ pl.simplify(5 * spacing); // simplify to 5x line width
}
+ // Apply multiline offset if needed
+ multiline_fill(polylines, params, spacing);
+
// clip pattern to boundaries, chain the clipped polylines
polylines = intersection_pl(polylines, to_polygons(expolygon));
+ if (! polylines.empty()) {
+ // Remove very small bits, but be careful to not remove infill lines connecting thin walls!
+ // The infill perimeter lines should be separated by around a single infill line width.
+ const double minlength = scale_(0.8 * this->spacing);
+ polylines.erase(
+ std::remove_if(polylines.begin(), polylines.end(), [minlength](const Polyline &pl) { return pl.length() < minlength; }),
+ polylines.end());
+ }
+
// copy from fliplines
if (!polylines.empty()) {
int infill_start_idx = polylines_out.size(); // only rotate what belongs to us.
diff --git a/src/libslic3r/Fill/FillAdaptive.cpp b/src/libslic3r/Fill/FillAdaptive.cpp
index d4b117b99d..3ec9ec3685 100644
--- a/src/libslic3r/Fill/FillAdaptive.cpp
+++ b/src/libslic3r/Fill/FillAdaptive.cpp
@@ -1369,6 +1369,10 @@ void Filler::_fill_surface_single(
// Convert lines to polylines.
all_polylines.reserve(lines.size());
std::transform(lines.begin(), lines.end(), std::back_inserter(all_polylines), [](const Line& l) { return Polyline{ l.a, l.b }; });
+
+ // Apply multiline offset if needed
+ multiline_fill(all_polylines, params, spacing);
+
// Crop all polylines
all_polylines = intersection_pl(std::move(all_polylines), expolygon);
#endif
diff --git a/src/libslic3r/Fill/FillBase.cpp b/src/libslic3r/Fill/FillBase.cpp
index 9f5a54a0d9..8936f5f55f 100644
--- a/src/libslic3r/Fill/FillBase.cpp
+++ b/src/libslic3r/Fill/FillBase.cpp
@@ -1,6 +1,7 @@
#include
#include
+#include
#include "../ClipperUtils.hpp"
#include "../EdgeGrid.hpp"
#include "../Geometry.hpp"
@@ -25,7 +26,6 @@
// BBS: new infill pattern header
#include "FillConcentricInternal.hpp"
#include "FillCrossHatch.hpp"
-
// #define INFILL_DEBUG_OUTPUT
namespace Slic3r {
@@ -190,22 +190,22 @@ void Fill::fill_surface_extrusion(const Surface* surface, const FillParams& para
// Orca: Dedicated function to calculate gap fill lines for the provided surface, according to the print object parameters
// and append them to the out ExtrusionEntityCollection.
void Fill::_create_gap_fill(const Surface* surface, const FillParams& params, ExtrusionEntityCollection* out){
-
+
//Orca: just to be safe, check against null pointer for the print object config and if NULL return.
if (this->print_object_config == nullptr) return;
-
+
// Orca: Enable gap fill as per the user preference. Return early if gap fill is to not be applied.
if ((this->print_object_config->gap_fill_target.value == gftNowhere) ||
(surface->surface_type == stInternalSolid && this->print_object_config->gap_fill_target.value != gftEverywhere))
return;
-
+
Flow new_flow = params.flow;
ExPolygons unextruded_areas;
unextruded_areas = diff_ex(this->no_overlap_expolygons, union_ex(out->polygons_covered_by_spacing(10)));
ExPolygons gapfill_areas = union_ex(unextruded_areas);
if (!this->no_overlap_expolygons.empty())
gapfill_areas = intersection_ex(gapfill_areas, this->no_overlap_expolygons);
-
+
if (gapfill_areas.size() > 0 && params.density >= 1) {
double min = 0.2 * new_flow.scaled_spacing() * (1 - INSET_OVERLAP_TOLERANCE);
double max = 2. * new_flow.scaled_spacing();
@@ -222,20 +222,20 @@ void Fill::_create_gap_fill(const Surface* surface, const FillParams& params, Ex
std::vector order2 = chain_points(ordering_points);
for (size_t i : order2)
gaps_ex_sorted.emplace_back(std::move(gaps_ex[i]));
-
+
ThickPolylines polylines;
for (ExPolygon& ex : gaps_ex_sorted) {
//BBS: Use DP simplify to avoid duplicated points and accelerate medial-axis calculation as well.
ex.douglas_peucker(SCALED_RESOLUTION * 0.1);
ex.medial_axis(min, max, &polylines);
}
-
+
if (!polylines.empty() && !is_bridge(params.extrusion_role)) {
polylines.erase(std::remove_if(polylines.begin(), polylines.end(),
[&](const ThickPolyline& p) {
return p.length() < scale_(params.config->filter_out_gap_fill.value);
}), polylines.end());
-
+
ExtrusionEntityCollection gap_fill;
variable_width(polylines, erGapFill, params.flow, gap_fill.entities);
auto gap = std::move(gap_fill.entities);
@@ -2696,4 +2696,55 @@ void Fill::connect_base_support(Polylines &&infill_ordered, const Polygons &boun
connect_base_support(std::move(infill_ordered), polygons_src, bbox, polylines_out, spacing, params);
}
+//Fill Multiline
+void multiline_fill(Polylines& polylines, const FillParams& params, float spacing)
+{
+ if (params.multiline > 1) {
+ const int n_lines = params.multiline;
+ const int n_polylines = static_cast(polylines.size());
+ Polylines all_polylines;
+ all_polylines.reserve(n_lines * n_polylines);
+
+ const float center = (n_lines - 1) / 2.0f;
+
+ for (int line = 0; line < n_lines; ++line) {
+ float offset = (static_cast(line) - center) * spacing;
+
+ for (const Polyline& pl : polylines) {
+ const size_t n = pl.points.size();
+ if (n < 2) {
+ all_polylines.emplace_back(pl);
+ continue;
+ }
+
+ Points new_points;
+ new_points.reserve(n);
+ for (size_t i = 0; i < n; ++i) {
+ Vec2f tangent;
+ if (i == 0)
+ tangent = Vec2f(pl.points[1].x() - pl.points[0].x(), pl.points[1].y() - pl.points[0].y());
+ else if (i == n - 1)
+ tangent = Vec2f(pl.points[n - 1].x() - pl.points[n - 2].x(), pl.points[n - 1].y() - pl.points[n - 2].y());
+ else
+ tangent = Vec2f(pl.points[i + 1].x() - pl.points[i - 1].x(), pl.points[i + 1].y() - pl.points[i - 1].y());
+
+ float len = std::hypot(tangent.x(), tangent.y());
+ if (len == 0)
+ len = 1.0f;
+ tangent /= len;
+ Vec2f normal(-tangent.y(), tangent.x());
+
+ Point p = pl.points[i];
+ p.x() += scale_(normal.x() * offset);
+ p.y() += scale_(normal.y() * offset);
+ new_points.push_back(p);
+ }
+
+ all_polylines.emplace_back(std::move(new_points));
+ }
+ }
+ polylines = std::move(all_polylines);
+ }
+}
+
} // namespace Slic3r
diff --git a/src/libslic3r/Fill/FillBase.hpp b/src/libslic3r/Fill/FillBase.hpp
index 4348ba5127..89974c3fde 100644
--- a/src/libslic3r/Fill/FillBase.hpp
+++ b/src/libslic3r/Fill/FillBase.hpp
@@ -53,6 +53,7 @@ struct FillParams
// Fill density, fraction in <0, 1>
float density { 0.f };
+ int multiline{1};
// Length of an infill anchor along the perimeter.
// 1000mm is roughly the maximum length line that fits into a 32bit coord_t.
@@ -223,7 +224,8 @@ public:
static coord_t _adjust_solid_spacing(const coord_t width, const coord_t distance);
};
-
+ //Fill Multiline
+ void multiline_fill(Polylines& polylines, const FillParams& params, float spacing);
} // namespace Slic3r
#endif // slic3r_FillBase_hpp_
diff --git a/src/libslic3r/Fill/FillCrossHatch.cpp b/src/libslic3r/Fill/FillCrossHatch.cpp
index 3772a1fec2..359c4252c4 100644
--- a/src/libslic3r/Fill/FillCrossHatch.cpp
+++ b/src/libslic3r/Fill/FillCrossHatch.cpp
@@ -2,7 +2,7 @@
#include "../ShortestPath.hpp"
#include "../Surface.hpp"
#include
-
+#include "FillBase.hpp"
#include "FillCrossHatch.hpp"
namespace Slic3r {
@@ -186,7 +186,8 @@ void FillCrossHatch ::_fill_surface_single(
BoundingBox bb = expolygon.contour.bounding_box();
// linespace modifier
- coord_t line_spacing = coord_t(scale_(this->spacing) / params.density);
+ double density_adjusted = params.density / params.multiline;
+ coord_t line_spacing = coord_t(scale_(this->spacing) / density_adjusted);
// reduce density
if (params.density < 0.999) line_spacing *= 1.08;
@@ -204,6 +205,9 @@ void FillCrossHatch ::_fill_surface_single(
// shift the pattern to the actual space
for (Polyline &pl : polylines) { pl.translate(bb.min); }
+ // Apply multiline offset if needed
+ multiline_fill(polylines, params, spacing);
+
polylines = intersection_pl(polylines, to_polygons(expolygon));
// --- remove small remains from gyroid infill
diff --git a/src/libslic3r/Fill/FillGyroid.cpp b/src/libslic3r/Fill/FillGyroid.cpp
index 12c9a8cfec..caa8459bec 100644
--- a/src/libslic3r/Fill/FillGyroid.cpp
+++ b/src/libslic3r/Fill/FillGyroid.cpp
@@ -4,7 +4,7 @@
#include
#include
#include
-
+#include "FillBase.hpp"
#include "FillGyroid.hpp"
namespace Slic3r {
@@ -149,10 +149,10 @@ static Polylines make_gyroid_waves(double gridZ, double density_adjusted, double
constexpr double FillGyroid::PatternTolerance;
void FillGyroid::_fill_surface_single(
- const FillParams ¶ms,
+ const FillParams ¶ms,
unsigned int thickness_layers,
- const std::pair &direction,
- ExPolygon expolygon,
+ const std::pair &direction,
+ ExPolygon expolygon,
Polylines &polylines_out)
{
auto infill_angle = float(this->angle + (CorrectionAngle * 2*M_PI) / 360.);
@@ -161,7 +161,7 @@ void FillGyroid::_fill_surface_single(
BoundingBox bb = expolygon.contour.bounding_box();
// Density adjusted to have a good %of weight.
- double density_adjusted = std::max(0., params.density * DensityAdjust);
+ double density_adjusted = std::max(0., params.density * DensityAdjust / params.multiline);
// Distance between the gyroid waves in scaled coordinates.
coord_t distance = coord_t(scale_(this->spacing) / density_adjusted);
@@ -184,6 +184,9 @@ void FillGyroid::_fill_surface_single(
for (Polyline &pl : polylines)
pl.translate(bb.min);
+ // Apply multiline offset if needed
+ multiline_fill(polylines, params, spacing);
+
polylines = intersection_pl(polylines, expolygon);
if (! polylines.empty()) {
diff --git a/src/libslic3r/Fill/FillHoneycomb.cpp b/src/libslic3r/Fill/FillHoneycomb.cpp
index 3e37ddbc84..e750425a82 100644
--- a/src/libslic3r/Fill/FillHoneycomb.cpp
+++ b/src/libslic3r/Fill/FillHoneycomb.cpp
@@ -7,9 +7,9 @@
namespace Slic3r {
void FillHoneycomb::_fill_surface_single(
- const FillParams ¶ms,
+ const FillParams ¶ms,
unsigned int thickness_layers,
- const std::pair &direction,
+ const std::pair &direction,
ExPolygon expolygon,
Polylines &polylines_out)
{
@@ -19,7 +19,7 @@ void FillHoneycomb::_fill_surface_single(
if (it_m == this->cache.end()) {
it_m = this->cache.insert(it_m, std::pair(cache_id, CacheData()));
CacheData &m = it_m->second;
- coord_t min_spacing = coord_t(scale_(this->spacing));
+ coord_t min_spacing = coord_t(scale_(this->spacing)) * params.multiline;
m.distance = coord_t(min_spacing / params.density);
m.hex_side = coord_t(m.distance / (sqrt(3)/2));
m.hex_width = m.distance * 2; // $m->{hex_width} == $m->{hex_side} * sqrt(3);
@@ -36,14 +36,14 @@ void FillHoneycomb::_fill_surface_single(
{
// adjust actual bounding box to the nearest multiple of our hex pattern
// and align it so that it matches across layers
-
+
BoundingBox bounding_box = expolygon.contour.bounding_box();
{
// rotate bounding box according to infill direction
Polygon bb_polygon = bounding_box.polygon();
bb_polygon.rotate(direction.first, m.hex_center);
bounding_box = bb_polygon.bounding_box();
-
+
// extend bounding box so that our pattern will be aligned with other layers
// $bounding_box->[X1] and [Y1] represent the displacement between new bounding box offset and old one
// The infill is not aligned to the object bounding box, but to a world coordinate system. Supposedly good enough.
@@ -69,10 +69,13 @@ void FillHoneycomb::_fill_surface_single(
x += m.distance;
}
p.rotate(-direction.first, m.hex_center);
+ p.simplify(5 * spacing); // simplify to 5x line width
all_polylines.push_back(p);
}
}
-
+ // Apply multiline offset if needed
+ multiline_fill(all_polylines, params, 1.1 * spacing);
+
all_polylines = intersection_pl(std::move(all_polylines), expolygon);
chain_or_connect_infill(std::move(all_polylines), expolygon, polylines_out, this->spacing, params);
}
diff --git a/src/libslic3r/Fill/FillLightning.cpp b/src/libslic3r/Fill/FillLightning.cpp
index 5cd7ae5797..502de9d51c 100644
--- a/src/libslic3r/Fill/FillLightning.cpp
+++ b/src/libslic3r/Fill/FillLightning.cpp
@@ -1,6 +1,6 @@
#include "../Print.hpp"
#include "../ShortestPath.hpp"
-
+#include "FillBase.hpp"
#include "FillLightning.hpp"
#include "Lightning/Generator.hpp"
@@ -16,6 +16,10 @@ void Filler::_fill_surface_single(
const Layer &layer = generator->getTreesForLayer(this->layer_id);
Polylines fill_lines = layer.convertToLines(to_polygons(expolygon), scaled(0.5 * this->spacing - this->overlap));
+ // Apply multiline offset if needed
+ multiline_fill(fill_lines, params, spacing);
+
+
chain_or_connect_infill(std::move(fill_lines), expolygon, polylines_out, this->spacing, params);
}
diff --git a/src/libslic3r/Fill/FillRectilinear.cpp b/src/libslic3r/Fill/FillRectilinear.cpp
index 261ae3c046..62cb005a68 100644
--- a/src/libslic3r/Fill/FillRectilinear.cpp
+++ b/src/libslic3r/Fill/FillRectilinear.cpp
@@ -2956,11 +2956,49 @@ void make_fill_lines(const ExPolygonWithOffset &poly_with_offset, Point refpt, d
}
}
+ // Remove lines that are too close to each other.
+static inline void remove_overlapped(Polylines& polylines, coord_t line_width){
+ const coord_t tolerance = coord_t(0.75 * line_width);
+ Polylines cleaned;
+ cleaned.reserve(polylines.size());
+
+ auto midpoint = [](const Polyline& line) -> Point {
+ const Point& p1 = line.first_point();
+ const Point& p2 = line.last_point();
+ return Point((p1.x() + p2.x()) / 2, (p1.y() + p2.y()) / 2);
+ };
+
+ for (const Polyline& line : polylines) {
+ Point mp1 = midpoint(line);
+ bool overlapped = false;
+
+ for (const Polyline& existing : cleaned) {
+ Point mp2 = midpoint(existing);
+
+ // Early skip: if they're far apart on one axis, skip
+ if (std::abs(mp1.y() - mp2.y()) > tolerance &&
+ std::abs(mp1.x() - mp2.x()) > tolerance)
+ continue;
+
+ if (mp1.distance_to(mp2) < tolerance) {
+ overlapped = true;
+ break;
+ }
+ }
+
+ if (!overlapped)
+ cleaned.push_back(line);
+ }
+
+ polylines = std::move(cleaned);
+}
+
bool FillRectilinear::fill_surface_by_multilines(const Surface *surface, FillParams params, const std::initializer_list &sweep_params, Polylines &polylines_out)
{
assert(sweep_params.size() >= 1);
- assert(! params.full_infill());
+ assert(!params.full_infill());
params.density /= double(sweep_params.size());
+ int n_multilines = params.multiline;
assert(params.density > 0.0001f && params.density <= 1.f);
ExPolygonWithOffset poly_with_offset_base(surface->expolygon, 0, float(scale_(this->overlap - 0.5 * this->spacing)));
@@ -2970,16 +3008,28 @@ bool FillRectilinear::fill_surface_by_multilines(const Surface *surface, FillPar
Polylines fill_lines;
coord_t line_width = coord_t(scale_(this->spacing));
- coord_t line_spacing = coord_t(scale_(this->spacing) / params.density);
+ coord_t line_spacing = coord_t(scale_(this->spacing) * params.multiline / params.density);
std::pair rotate_vector = this->_infill_direction(surface);
for (const SweepParams &sweep : sweep_params) {
// Rotate polygons so that we can work with vertical lines here
float angle = rotate_vector.first + sweep.angle_base;
- make_fill_lines(ExPolygonWithOffset(poly_with_offset_base, - angle), rotate_vector.second.rotated(-angle), angle, line_width + coord_t(SCALED_EPSILON), line_spacing, coord_t(scale_(sweep.pattern_shift)), fill_lines);
+ //Fill Multiline
+ for (int i = 0; i < n_multilines; ++i) {
+ coord_t group_offset = i * line_spacing;
+ coord_t internal_offset = (i - (n_multilines - 1) / 2.0f) * line_width;
+ coord_t total_offset = group_offset + internal_offset;
+ coord_t pattern_shift = scale_(sweep.pattern_shift + unscale_(total_offset));
+
+ make_fill_lines(ExPolygonWithOffset(poly_with_offset_base, -angle), rotate_vector.second.rotated(-angle), angle,
+ line_width + coord_t(SCALED_EPSILON), line_spacing, pattern_shift, fill_lines);
+ }
}
+if ((params.pattern == ip2DLattice || params.pattern == ip2DHoneycomb ) && params.multiline >1 )
+ remove_overlapped(fill_lines, line_width);
+
if (!fill_lines.empty()) {
- if (params.dont_connect()) {
+ if (params.dont_connect()) {
if (fill_lines.size() > 1)
fill_lines = chain_polylines(std::move(fill_lines));
append(polylines_out, std::move(fill_lines));
@@ -3057,8 +3107,7 @@ Polylines Fill2DLattice::fill_surface(const Surface *surface, const FillParams &
return polylines_out;
}
-Polylines FillTriangles::fill_surface(const Surface *surface, const FillParams ¶ms)
-{
+Polylines FillTriangles::fill_surface(const Surface *surface, const FillParams ¶ms){
Polylines polylines_out;
if (! this->fill_surface_by_multilines(
surface, params,
@@ -3073,7 +3122,7 @@ Polylines FillStars::fill_surface(const Surface *surface, const FillParams ¶
Polylines polylines_out;
if (! this->fill_surface_by_multilines(
surface, params,
- { { 0.f, 0.f }, { float(M_PI / 3.), 0.f }, { float(2. * M_PI / 3.), float((3./2.) * this->spacing / params.density) } },
+ { { 0.f, 0.f }, { float(M_PI / 3.), 0.f }, { float(2. * M_PI / 3.), float((3./2.) * this->spacing * params.multiline / params.density) } },
polylines_out))
BOOST_LOG_TRIVIAL(error) << "FillStars::fill_surface() failed to fill a region.";
return polylines_out;
@@ -3094,7 +3143,6 @@ Polylines FillCubic::fill_surface(const Surface *surface, const FillParams ¶
Polylines FillQuarterCubic::fill_surface(const Surface* surface, const FillParams& params)
{
using namespace boost::math::float_constants;
-
Polylines polylines_out;
coord_t line_width = coord_t(scale_(this->spacing));
@@ -3139,7 +3187,7 @@ Polylines Fill2DHoneycomb::fill_surface(const Surface *surface, const FillParams
using namespace boost::math::float_constants;
// lets begin calculating some base properties of the honeycomb pattern
- const float half_horizontal_period = .5f * (1*(2/3.f) + 2*(1/3.f)) * float(spacing) / params.density;
+ const float half_horizontal_period = .5f * (1*(2/3.f) + 2*(1/3.f)) * float(spacing) * params.multiline / params.density;
const float vertical_period = 3 * half_horizontal_period / tanf(degree * float(params.infill_overhang_angle));
// we want to align the base pattern with its knot on height 0
diff --git a/src/libslic3r/Fill/FillTpmsD.cpp b/src/libslic3r/Fill/FillTpmsD.cpp
index 99692b4b68..4750fc55fc 100644
--- a/src/libslic3r/Fill/FillTpmsD.cpp
+++ b/src/libslic3r/Fill/FillTpmsD.cpp
@@ -55,8 +55,9 @@ static Polylines make_waves(double gridZ, double density_adjusted, double line_s
std::vector> wave;
{//fill one wave
const auto v=[&](double u){return acos(a/b*cos(u));};
- for(int c=0;c<=4;++c){
- const double u=minU+2*M_PI*c/4;
+ const int initialSegments=16;
+ for(int c=0;c<=initialSegments;++c){
+ const double u=minU+2*M_PI*c/initialSegments;
wave.emplace_back(u,v(u));
}
{//refine
@@ -110,7 +111,7 @@ void FillTpmsD::_fill_surface_single(
BoundingBox bb = expolygon.contour.bounding_box();
// Density adjusted to have a good %of weight.
- double density_adjusted = std::max(0., params.density * DensityAdjust);
+ double density_adjusted = std::max(0., params.density * DensityAdjust / params.multiline);
// Distance between the gyroid waves in scaled coordinates.
coord_t distance = coord_t(scale_(this->spacing) / density_adjusted);
@@ -129,6 +130,8 @@ void FillTpmsD::_fill_surface_single(
for (Polyline &pl : polylines)
pl.translate(bb.min);
+ // Apply multiline offset if needed
+ multiline_fill(polylines, params, spacing);
polylines = intersection_pl(polylines, expolygon);
diff --git a/src/libslic3r/Format/bbs_3mf.cpp b/src/libslic3r/Format/bbs_3mf.cpp
index 72c6d54ca7..00c588283d 100644
--- a/src/libslic3r/Format/bbs_3mf.cpp
+++ b/src/libslic3r/Format/bbs_3mf.cpp
@@ -291,6 +291,8 @@ static constexpr const char* FIRST_LAYER_PRINT_SEQUENCE_ATTR = "first_layer_prin
static constexpr const char* OTHER_LAYERS_PRINT_SEQUENCE_ATTR = "other_layers_print_sequence";
static constexpr const char* OTHER_LAYERS_PRINT_SEQUENCE_NUMS_ATTR = "other_layers_print_sequence_nums";
static constexpr const char* SPIRAL_VASE_MODE = "spiral_mode";
+static constexpr const char* FILAMENT_MAP_MODE_ATTR = "filament_map_mode";
+static constexpr const char* FILAMENT_MAP_ATTR = "filament_maps";
static constexpr const char* GCODE_FILE_ATTR = "gcode_file";
static constexpr const char* THUMBNAIL_FILE_ATTR = "thumbnail_file";
static constexpr const char* NO_LIGHT_THUMBNAIL_FILE_ATTR = "thumbnail_no_light_file";
@@ -5598,7 +5600,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result)
bool _add_project_config_file_to_archive(mz_zip_archive& archive, const DynamicPrintConfig &config, Model& model);
//BBS: add project embedded preset files
bool _add_project_embedded_presets_to_archive(mz_zip_archive& archive, Model& model, std::vector project_presets);
- bool _add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, const ObjectToObjectDataMap &objects_data, int export_plate_idx = -1, bool save_gcode = true, bool use_loaded_id = false);
+ bool _add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, const ObjectToObjectDataMap &objects_data, const DynamicPrintConfig& config, int export_plate_idx = -1, bool save_gcode = true, bool use_loaded_id = false);
bool _add_cut_information_file_to_archive(mz_zip_archive &archive, Model &model);
bool _add_slice_info_config_file_to_archive(mz_zip_archive &archive, const Model &model, PlateDataPtrs &plate_data_list, const ObjectToObjectDataMap &objects_data, const DynamicPrintConfig& config);
bool _add_gcode_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, Export3mfProgressFn proFn = nullptr);
@@ -6114,7 +6116,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result)
// This file contains all the attributes of all ModelObjects and their ModelVolumes (names, parameter overrides).
// As there is just a single Indexed Triangle Set data stored per ModelObject, offsets of volumes into their respective Indexed Triangle Set data
// is stored here as well.
- if (!_add_model_config_file_to_archive(archive, model, plate_data_list, objects_data, export_plate_idx, m_save_gcode, m_use_loaded_id)) {
+ if (!_add_model_config_file_to_archive(archive, model, plate_data_list, objects_data, *config, export_plate_idx, m_save_gcode, m_use_loaded_id)) {
BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << ":" << __LINE__ << boost::format(", _add_model_config_file_to_archive failed\n");
return false;
}
@@ -7443,7 +7445,7 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result)
return true;
}
- bool _BBS_3MF_Exporter::_add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, const ObjectToObjectDataMap &objects_data, int export_plate_idx, bool save_gcode, bool use_loaded_id)
+ bool _BBS_3MF_Exporter::_add_model_config_file_to_archive(mz_zip_archive& archive, const Model& model, PlateDataPtrs& plate_data_list, const ObjectToObjectDataMap &objects_data, const DynamicPrintConfig& config, int export_plate_idx, bool save_gcode, bool use_loaded_id)
{
std::stringstream stream;
// Store mesh transformation in full precision, as the volumes are stored transformed and they need to be transformed back
@@ -7623,6 +7625,20 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result)
if (spiral_mode_opt)
stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << SPIRAL_VASE_MODE << "\" " << VALUE_ATTR << "=\"" << spiral_mode_opt->getBool() << "\"/>\n";
+ // TODO: Orca: hack
+ //filament map related
+ stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << FILAMENT_MAP_MODE_ATTR << "\" " << VALUE_ATTR << "=\"" << "Auto For Flush" << "\"/>\n";
+
+ // filament map override global settings only when group mode overrides the global settings
+ stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << FILAMENT_MAP_ATTR << "\" " << VALUE_ATTR << "=\"";
+ const size_t filaments_count = dynamic_cast(config.option("filament_colour"))->values.size();
+ for (int i = 0; i < filaments_count; ++i) {
+ stream << "1"; // Orca hack: for now, all filaments are mapped to extruder 1
+ if (i != (filaments_count - 1))
+ stream << " ";
+ }
+ stream << "\"/>\n";
+
if (save_gcode)
stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << GCODE_FILE_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha << xml_escape(plate_data->gcode_file) << "\"/>\n";
if (!plate_data->gcode_file.empty()) {
@@ -7791,6 +7807,16 @@ void PlateData::parse_filament_info(GCodeProcessorResult *result)
stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << SUPPORT_USED_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha<< plate_data->is_support_used << "\"/>\n";
stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << LABEL_OBJECT_ENABLED_ATTR << "\" " << VALUE_ATTR << "=\"" << std::boolalpha<< plate_data->is_label_object_enabled << "\"/>\n";
+ // TODO: Orca: hack
+ stream << " <" << METADATA_TAG << " " << KEY_ATTR << "=\"" << FILAMENT_MAP_ATTR << "\" " << VALUE_ATTR << "=\"";
+ const size_t filaments_count = dynamic_cast(config.option("filament_colour"))->values.size();
+ for (int i = 0; i < filaments_count; ++i) {
+ stream << "1"; // Orca hack: for now, all filaments are mapped to extruder 1
+ if (i != (filaments_count - 1))
+ stream << " ";
+ }
+ stream << "\"/>\n";
+
for (auto it = plate_data->objects_and_instances.begin(); it != plate_data->objects_and_instances.end(); it++)
{
int obj_id = it->first;
diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp
index 255270421a..35ee46b27d 100644
--- a/src/libslic3r/Preset.cpp
+++ b/src/libslic3r/Preset.cpp
@@ -785,7 +785,7 @@ static std::vector s_Preset_print_options {
"layer_height", "initial_layer_print_height", "wall_loops", "alternate_extra_wall", "slice_closing_radius", "spiral_mode", "spiral_mode_smooth", "spiral_mode_max_xy_smoothing", "spiral_starting_flow_ratio", "spiral_finishing_flow_ratio", "slicing_mode",
"top_shell_layers", "top_shell_thickness", "top_surface_density", "bottom_surface_density", "bottom_shell_layers", "bottom_shell_thickness",
"extra_perimeters_on_overhangs", "ensure_vertical_shell_thickness", "reduce_crossing_wall", "detect_thin_wall", "detect_overhang_wall", "overhang_reverse", "overhang_reverse_threshold","overhang_reverse_internal_only", "wall_direction",
- "seam_position", "staggered_inner_seams", "wall_sequence", "is_infill_first", "sparse_infill_density", "sparse_infill_pattern", "lattice_angle_1", "lattice_angle_2", "infill_overhang_angle", "top_surface_pattern", "bottom_surface_pattern",
+ "seam_position", "staggered_inner_seams", "wall_sequence", "is_infill_first", "sparse_infill_density","fill_multiline", "sparse_infill_pattern", "lattice_angle_1", "lattice_angle_2", "infill_overhang_angle", "top_surface_pattern", "bottom_surface_pattern",
"infill_direction", "solid_infill_direction", "counterbore_hole_bridging","infill_shift_step", "sparse_infill_rotate_template", "solid_infill_rotate_template", "symmetric_infill_y_axis","skeleton_infill_density", "infill_lock_depth", "skin_infill_depth", "skin_infill_density",
"minimum_sparse_infill_area", "reduce_infill_retraction","internal_solid_infill_pattern","gap_fill_target",
"ironing_type", "ironing_pattern", "ironing_flow", "ironing_speed", "ironing_spacing", "ironing_angle", "ironing_inset",
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp
index 42de0f68cc..723c1eb3ef 100644
--- a/src/libslic3r/PrintConfig.cpp
+++ b/src/libslic3r/PrintConfig.cpp
@@ -2361,6 +2361,14 @@ void PrintConfigDef::init_fff_params()
def->max = 100;
def->set_default_value(new ConfigOptionPercent(20));
+ // Infill multiline
+ def = this->add("fill_multiline", coInt);
+ def->label = L("Fill Multiline");
+ def->tooltip = L("Using multiple lines for the infill pattern, if supported by infill pattern.");
+ def->min = 1;
+ def->max = 5; // Maximum number of lines for infill pattern
+ def->set_default_value(new ConfigOptionInt(1));
+
def = this->add("sparse_infill_pattern", coEnum);
def->label = L("Sparse infill pattern");
def->category = L("Strength");
@@ -3119,7 +3127,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("This parameter adds a rotation of sparse infill direction to each layer according to the specified template. "
"The template is a comma-separated list of angles in degrees, e.g. '0,90'. "
"The first angle is applied to the first layer, the second angle to the second layer, and so on. "
- "If there are more layers than angles, the angles will be repeated. Note that not all all sparse infill patterns support rotation.");
+ "If there are more layers than angles, the angles will be repeated. Note that not all sparse infill patterns support rotation.");
def->sidetext = L("°");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionString("0,90"));
@@ -3131,7 +3139,7 @@ void PrintConfigDef::init_fff_params()
def->tooltip = L("This parameter adds a rotation of solid infill direction to each layer according to the specified template. "
"The template is a comma-separated list of angles in degrees, e.g. '0,90'. "
"The first angle is applied to the first layer, the second angle to the second layer, and so on. "
- "If there are more layers than angles, the angles will be repeated. Note that not all all solid infill patterns support rotation.");
+ "If there are more layers than angles, the angles will be repeated. Note that not all solid infill patterns support rotation.");
def->sidetext = L("°");
def->mode = comAdvanced;
def->set_default_value(new ConfigOptionString("0,90"));
@@ -3189,7 +3197,7 @@ void PrintConfigDef::init_fff_params()
def->ratio_over = "nozzle_diameter";
def->min = 0;
def->mode = comAdvanced;
- def->set_default_value(new ConfigOptionFloatOrPercent(0.4, false));
+ def->set_default_value(new ConfigOptionFloatOrPercent(100, true));
def = this->add("skeleton_infill_line_width", coFloatOrPercent);
def->label = L("Skeleton line width");
@@ -3199,7 +3207,7 @@ void PrintConfigDef::init_fff_params()
def->ratio_over = "nozzle_diameter";
def->min = 0;
def->mode = comAdvanced;
- def->set_default_value(new ConfigOptionFloatOrPercent(0.4, false));
+ def->set_default_value(new ConfigOptionFloatOrPercent(100, true));
def = this->add("symmetric_infill_y_axis", coBool);
def->label = L("Symmetric infill y axis");
diff --git a/src/libslic3r/PrintConfig.hpp b/src/libslic3r/PrintConfig.hpp
index a71adcab88..de981319d2 100644
--- a/src/libslic3r/PrintConfig.hpp
+++ b/src/libslic3r/PrintConfig.hpp
@@ -299,6 +299,13 @@ static std::unordered_mapNozzleTypeEumnToStr = {
{NozzleType::ntBrass, "brass"}
};
+static std::unordered_mapNozzleTypeStrToEumn = {
+ {"undefine", NozzleType::ntUndefine},
+ {"hardened_steel", NozzleType::ntHardenedSteel},
+ {"stainless_steel", NozzleType::ntStainlessSteel},
+ {"brass", NozzleType::ntBrass}
+};
+
// BBS
enum PrinterStructure {
psUndefine=0,
@@ -317,6 +324,12 @@ enum ZHopType {
zhtCount
};
+enum NozzleVolumeType {
+ nvtNormal = 0,
+ nvtBigTraffic,
+ nvtMaxNozzleVolumeType = nvtBigTraffic
+};
+
enum RetractLiftEnforceType {
rletAllSurfaces = 0,
rletTopOnly,
@@ -980,6 +993,7 @@ PRINT_CONFIG_CLASS_DEFINE(
((ConfigOptionBool, infill_combination))
// Orca:
((ConfigOptionFloatOrPercent, infill_combination_max_layer_height))
+ ((ConfigOptionInt, fill_multiline))
// Ironing options
((ConfigOptionEnum, ironing_type))
((ConfigOptionEnum, ironing_pattern))
diff --git a/src/libslic3r/PrintObject.cpp b/src/libslic3r/PrintObject.cpp
index 8c13c43cc2..b07c11163f 100644
--- a/src/libslic3r/PrintObject.cpp
+++ b/src/libslic3r/PrintObject.cpp
@@ -1065,6 +1065,7 @@ bool PrintObject::invalidate_state_by_config_options(
#endif
} else if (
opt_key == "interface_shells"
+ || opt_key == "infill_multiline"
|| opt_key == "infill_combination"
|| opt_key == "infill_combination_max_layer_height"
|| opt_key == "bottom_shell_thickness"
diff --git a/src/libslic3r/ProjectTask.hpp b/src/libslic3r/ProjectTask.hpp
index 05f39f9b2c..ef2033eefd 100644
--- a/src/libslic3r/ProjectTask.hpp
+++ b/src/libslic3r/ProjectTask.hpp
@@ -49,6 +49,10 @@ struct FilamentInfo
int ctype = 0;
std::vector colors = std::vector();
int mapping_result = 0;
+
+ /*for new ams mapping*/
+ std::string ams_id;
+ std::string slot_id;
};
class BBLSliceInfo {
diff --git a/src/libslic3r/calib.hpp b/src/libslic3r/calib.hpp
index c9a950d886..d7db10fd81 100644
--- a/src/libslic3r/calib.hpp
+++ b/src/libslic3r/calib.hpp
@@ -32,6 +32,7 @@ enum class CalibState { Start = 0, Preset, Calibration, CoarseSave, FineCalibrat
struct Calib_Params
{
Calib_Params() : mode(CalibMode::Calib_None){};
+ int extruder_id = 0;
double start, end, step;
bool print_numbers;
double freqStartX, freqEndX, freqStartY, freqEndY;
@@ -52,8 +53,12 @@ class X1CCalibInfos
public:
struct X1CCalibInfo
{
+ int extruder_id = -1;
int tray_id;
+ int ams_id = 0;
+ int slot_id = 0;
int bed_temp;
+ NozzleVolumeType nozzle_volume_type = NozzleVolumeType::nvtNormal;
int nozzle_temp;
float nozzle_diameter;
std::string filament_id;
@@ -102,7 +107,11 @@ public:
CALI_RESULT_PROBLEM = 1,
CALI_RESULT_FAILED = 2,
};
- int tray_id;
+ int extruder_id = -1;
+ NozzleVolumeType nozzle_volume_type;
+ int tray_id = 0;
+ int ams_id = 0;
+ int slot_id = 0;
int cali_idx = -1;
float nozzle_diameter;
std::string filament_id;
@@ -115,12 +124,33 @@ public:
struct PACalibIndexInfo
{
- int tray_id;
+ int extruder_id = -1;
+ NozzleVolumeType nozzle_volume_type;
+ int tray_id = 0;
+ int ams_id = 0;
+ int slot_id = 0;
int cali_idx;
float nozzle_diameter;
std::string filament_id;
};
+struct PACalibExtruderInfo
+{
+ int extruder_id = -1;
+ NozzleVolumeType nozzle_volume_type;
+ float nozzle_diameter;
+ std::string filament_id = "";
+ bool use_extruder_id{true};
+ bool use_nozzle_volume_type{true};
+};
+
+struct PACalibTabInfo
+{
+ float pa_calib_tab_nozzle_dia;
+ int extruder_id;
+ NozzleVolumeType nozzle_volume_type;
+};
+
class FlowRatioCalibResult
{
public:
diff --git a/src/libslic3r/libslic3r_version.h.in b/src/libslic3r/libslic3r_version.h.in
index 31af715bc7..a0e82cd9d3 100644
--- a/src/libslic3r/libslic3r_version.h.in
+++ b/src/libslic3r/libslic3r_version.h.in
@@ -9,7 +9,6 @@
#define GIT_COMMIT_HASH "0000000" // 0000000 means uninitialized
#endif
#define SLIC3R_BUILD_ID "@SLIC3R_BUILD_ID@"
-#define SLIC3R_BUILD_TIME "@SLIC3R_BUILD_TIME@"
//#define SLIC3R_RC_VERSION "@SLIC3R_VERSION@"
#define BBL_RELEASE_TO_PUBLIC @BBL_RELEASE_TO_PUBLIC@
#define BBL_INTERNAL_TESTING @BBL_INTERNAL_TESTING@
diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt
index 348557e679..a71c26508a 100644
--- a/src/slic3r/CMakeLists.txt
+++ b/src/slic3r/CMakeLists.txt
@@ -62,6 +62,8 @@ set(SLIC3R_GUI_SOURCES
GUI/Widgets/TempInput.hpp
GUI/Widgets/AMSControl.cpp
GUI/Widgets/AMSControl.hpp
+ GUI/Widgets/AMSItem.cpp
+ GUI/Widgets/AMSItem.hpp
GUI/Widgets/FanControl.cpp
GUI/Widgets/FanControl.hpp
GUI/Widgets/Scrollbar.cpp
@@ -444,6 +446,8 @@ set(SLIC3R_GUI_SOURCES
GUI/ModelMall.cpp
GUI/SelectMachine.hpp
GUI/SelectMachine.cpp
+ GUI/SelectMachinePop.hpp
+ GUI/SelectMachinePop.cpp
GUI/SendToPrinter.hpp
GUI/SendToPrinter.cpp
GUI/AmsMappingPopup.hpp
@@ -470,6 +474,8 @@ set(SLIC3R_GUI_SOURCES
GUI/CalibrationWizardSavePage.hpp
GUI/Calibration.hpp
GUI/Calibration.cpp
+ GUI/CloneDialog.hpp
+ GUI/CloneDialog.cpp
GUI/PrintOptionsDialog.hpp
GUI/PrintOptionsDialog.cpp
GUI/BonjourDialog.hpp
@@ -580,8 +586,11 @@ set(SLIC3R_GUI_SOURCES
Utils/ElegooLink.hpp
Utils/ElegooLink.cpp
Utils/WebSocketClient.hpp
+ Utils/bambu_networking.hpp
)
+add_subdirectory(GUI/DeviceTab)
+
if (WIN32)
list(APPEND SLIC3R_GUI_SOURCES
GUI/dark_mode/dark_mode.hpp
diff --git a/src/slic3r/GUI/AMSMaterialsSetting.cpp b/src/slic3r/GUI/AMSMaterialsSetting.cpp
index 9b6149d662..db04cf5065 100644
--- a/src/slic3r/GUI/AMSMaterialsSetting.cpp
+++ b/src/slic3r/GUI/AMSMaterialsSetting.cpp
@@ -13,6 +13,31 @@ namespace Slic3r { namespace GUI {
wxDEFINE_EVENT(EVT_SELECTED_COLOR, wxCommandEvent);
+static void get_default_k_n_value(const std::string &filament_id, float &k, float &n)
+{
+ if (filament_id.compare("GFG00") == 0) {
+ // PETG
+ k = 0.04;
+ n = 1.0;
+ } else if (filament_id.compare("GFB00") == 0 || filament_id.compare("GFB50") == 0) {
+ // ABS
+ k = 0.04;
+ n = 1.0;
+ } else if (filament_id.compare("GFU01") == 0) {
+ // TPU
+ k = 0.2;
+ n = 1.0;
+ } else if (filament_id.compare("GFB01") == 0) {
+ // ASA
+ k = 0.04;
+ n = 1.0;
+ } else {
+ // PLA , other
+ k = 0.02;
+ n = 1.0;
+ }
+}
+
static std::string float_to_string_with_precision(float value, int precision = 3)
{
std::stringstream stream;
@@ -76,7 +101,7 @@ void AMSMaterialsSetting::create()
m_sizer_button->Add(m_button_close, 0, wxALIGN_CENTER, 0);
m_sizer_main->Add(m_panel_normal, 0, wxALL, FromDIP(2));
-
+
m_sizer_main->Add(m_panel_kn, 0, wxALL, FromDIP(2));
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(24));
@@ -353,7 +378,7 @@ void AMSMaterialsSetting::create_panel_kn(wxWindow* parent)
parent->SetSizer(sizer);
}
-void AMSMaterialsSetting::paintEvent(wxPaintEvent &evt)
+void AMSMaterialsSetting::paintEvent(wxPaintEvent &evt)
{
auto size = GetSize();
wxPaintDC dc(this);
@@ -368,7 +393,7 @@ AMSMaterialsSetting::~AMSMaterialsSetting()
m_comboBox_cali_result->Disconnect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_cali_result), NULL, this);
}
-void AMSMaterialsSetting::input_min_finish()
+void AMSMaterialsSetting::input_min_finish()
{
if (m_input_nozzle_min->GetTextCtrl()->GetValue().empty()) return;
@@ -423,7 +448,7 @@ void AMSMaterialsSetting::enable_confirm_button(bool en)
}
if (!m_is_third) {
- m_tip_readonly->Hide();
+ m_tip_readonly->Hide();
}
else {
if (!obj->is_support_filament_setting_inprinting) {
@@ -457,21 +482,32 @@ void AMSMaterialsSetting::on_select_reset(wxCommandEvent& event) {
long nozzle_temp_max_int = 0;
wxColour color = *wxWHITE;
char col_buf[10];
- sprintf(col_buf, "%02X%02X%02XFF", (int)color.Red(), (int)color.Green(), (int)color.Blue());
+ sprintf(col_buf, "%02X%02X%02X00", (int)color.Red(), (int)color.Green(), (int)color.Blue());
+ std::string color_str; // reset use empty string
+
+ std::string selected_ams_id;
+ PresetBundle *preset_bundle = wxGetApp().preset_bundle;
+ if (preset_bundle) {
+ for (auto it = preset_bundle->filaments.begin(); it != preset_bundle->filaments.end(); it++) {
+ auto filament_item = map_filament_items[m_comboBox_filament->GetValue().ToStdString()];
+ std::string filament_id = filament_item.filament_id;
+ if (it->filament_id.compare(filament_id) == 0) {
+ selected_ams_id = it->filament_id;
+ break;
+ }
+ }
+ }
if (obj) {
- // set filament
- if (is_virtual_tray()) {
- obj->command_ams_filament_settings(255, VIRTUAL_TRAY_ID, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);
- }
- else if(m_is_third){
- obj->command_ams_filament_settings(ams_id, tray_id, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);
+ if(m_is_third){
+ obj->command_ams_filament_settings(ams_id, slot_id, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int,
+ nozzle_temp_max_int);
}
// set k / n value
if (obj->cali_version <= -1 && obj->get_printer_series() == PrinterSeries::SERIES_P1P) {
// set extrusion cali ratio
- int cali_tray_id = ams_id * 4 + tray_id;
+ int cali_tray_id = ams_id * 4 + slot_id;
double k = 0.0;
try {
@@ -492,10 +528,23 @@ void AMSMaterialsSetting::on_select_reset(wxCommandEvent& event) {
}
else {
PACalibIndexInfo select_index_info;
+ int tray_id = ams_id * 4 + slot_id;
+ if (is_virtual_tray()) {
+ tray_id = ams_id;
+ if (!obj->is_enable_np) {
+ tray_id = VIRTUAL_TRAY_ID;
+ }
+
+ // TODO: Orca hack
+ ams_id = 255;
+ slot_id = 0;
+ }
select_index_info.tray_id = tray_id;
- select_index_info.nozzle_diameter = obj->nozzle_diameter;
+ select_index_info.ams_id = ams_id;
+ select_index_info.slot_id = slot_id;
+ select_index_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter;
select_index_info.cali_idx = -1;
- select_index_info.filament_id = ams_filament_id;
+ select_index_info.filament_id = selected_ams_id;
CalibUtils::select_PA_calib_result(select_index_info);
}
}
@@ -530,7 +579,7 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
std::string vendor_name = vendor->values[0];
DeviceManager::check_filaments_in_blacklist(vendor_name, filamnt_type, in_blacklist, action, info);
}
-
+
if (in_blacklist) {
if (action == "prohibition") {
@@ -575,14 +624,9 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
// set filament
if (m_is_third) {
- if (is_virtual_tray()) {
- obj->command_ams_filament_settings(255, VIRTUAL_TRAY_ID, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);
- }
- else {
- obj->command_ams_filament_settings(ams_id, tray_id, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);
- }
+ obj->command_ams_filament_settings(ams_id, slot_id, ams_filament_id, ams_setting_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);
}
-
+
//reset param
wxString k_text = m_input_k_val->GetTextCtrl()->GetValue();
wxString n_text = m_input_n_val->GetTextCtrl()->GetValue();
@@ -612,10 +656,17 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
;
}
+ auto vt_tray = ams_id;
+ if (!obj->is_enable_np) {
+ vt_tray = VIRTUAL_TRAY_ID;
+ }
+
if (obj->cali_version >= 0) {
PACalibIndexInfo select_index_info;
- select_index_info.tray_id = tray_id;
- select_index_info.nozzle_diameter = obj->nozzle_diameter;
+ select_index_info.tray_id = vt_tray;
+ select_index_info.ams_id = 255; // TODO: Orca hack
+ select_index_info.slot_id = 0;
+ select_index_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter;
auto cali_select_id = m_comboBox_cali_result->GetSelection();
if (m_pa_profile_items.size() > 0 && cali_select_id >= 0) {
@@ -630,11 +681,11 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
CalibUtils::select_PA_calib_result(select_index_info);
}
else {
- obj->command_extrusion_cali_set(VIRTUAL_TRAY_ID, "", "", k, n);
+ obj->command_extrusion_cali_set(vt_tray, "", "", k, n);
}
}
else {
- int cali_tray_id = ams_id * 4 + tray_id;
+ int cali_tray_id = ams_id * 4 + slot_id;
double k = 0.0;
try {
k_text.ToDouble(&k);
@@ -654,10 +705,12 @@ void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
if (obj->cali_version >= 0) {
PACalibIndexInfo select_index_info;
select_index_info.tray_id = cali_tray_id;
- select_index_info.nozzle_diameter = obj->nozzle_diameter;
+ select_index_info.ams_id = ams_id;
+ select_index_info.slot_id = slot_id;
+ select_index_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter;
auto cali_select_id = m_comboBox_cali_result->GetSelection();
- if (m_pa_profile_items.size() > 0 && cali_select_id >= 0) {
+ if (m_pa_profile_items.size() > 0 && cali_select_id > 0) {
select_index_info.cali_idx = m_pa_profile_items[cali_select_id].cali_idx;
select_index_info.filament_id = m_pa_profile_items[cali_select_id].filament_id;
}
@@ -710,7 +763,7 @@ void AMSMaterialsSetting::on_picker_color(wxCommandEvent& event)
set_color(wxColour(color_num>>24&0xFF, color_num>>16&0xFF, color_num>>8&0xFF, color_num&0xFF));
}
-void AMSMaterialsSetting::on_clr_picker(wxMouseEvent &event)
+void AMSMaterialsSetting::on_clr_picker(wxMouseEvent &event)
{
if(!m_is_third)
return;
@@ -741,7 +794,7 @@ void AMSMaterialsSetting::on_clr_picker(wxMouseEvent &event)
bool AMSMaterialsSetting::is_virtual_tray()
{
- if (tray_id == VIRTUAL_TRAY_ID)
+ if (ams_id == VIRTUAL_TRAY_ID)
return true;
return false;
}
@@ -769,8 +822,8 @@ void AMSMaterialsSetting::update_widgets()
Layout();
}
-bool AMSMaterialsSetting::Show(bool show)
-{
+bool AMSMaterialsSetting::Show(bool show)
+{
if (show) {
m_button_confirm->SetMinSize(AMS_MATERIALS_SETTING_BUTTON_SIZE);
m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
@@ -794,7 +847,7 @@ bool AMSMaterialsSetting::Show(bool show)
Fit();
wxGetApp().UpdateDarkUI(this);
}
- return DPIDialog::Show(show);
+ return DPIDialog::Show(show);
}
void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_min, wxString temp_max, wxString k, wxString n)
@@ -817,10 +870,10 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
std::set filament_id_set;
PresetBundle * preset_bundle = wxGetApp().preset_bundle;
std::ostringstream stream;
- stream << std::fixed << std::setprecision(1) << obj->nozzle_diameter;
+ stream << std::fixed << std::setprecision(1) << obj->m_extder_data.extders[0].current_nozzle_diameter;
std::string nozzle_diameter_str = stream.str();
std::set printer_names = preset_bundle->get_printer_names_by_printer_type_and_nozzle(MachineObject::get_preset_printer_model_name(obj->printer_type), nozzle_diameter_str);
-
+
if (preset_bundle) {
BOOST_LOG_TRIVIAL(trace) << "system_preset_bundle filament number=" << preset_bundle->filaments.size();
for (auto filament_it = preset_bundle->filaments.begin(); filament_it != preset_bundle->filaments.end(); filament_it++) {
@@ -832,7 +885,7 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
if (preset_bundle->filaments.get_preset_base(*filament_it) != &preset || (!filament_it->is_system && !obj->is_support_user_preset)) {
continue;
}
-
+
ConfigOption * printer_opt = filament_it->config.option("compatible_printers");
ConfigOptionStrings *printer_strs = dynamic_cast(printer_opt);
for (auto printer_str : printer_strs->values) {
@@ -867,7 +920,7 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
if (filament_it->filament_id == ams_filament_id) {
selection_idx = idx;
bambu_filament_name = filament_it->alias;
-
+
// update if nozzle_temperature_range is found
ConfigOption *opt_min = filament_it->config.option("nozzle_temperature_range_low");
@@ -891,7 +944,7 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
}
}
}
-
+
}
}
@@ -913,7 +966,7 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
else {
m_readonly_filament->SetLabel(bambu_filament_name);
}
-
+
m_input_nozzle_min->GetTextCtrl()->SetValue(temp_min);
m_input_nozzle_max->GetTextCtrl()->SetValue(temp_max);
}
@@ -934,7 +987,7 @@ void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_mi
}
m_button_reset->Show();
- //m_button_confirm->Show();
+ //m_button_confirm->Show();
}
m_comboBox_filament->Set(filament_items);
@@ -983,7 +1036,7 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
if (preset_bundle) {
std::ostringstream stream;
if (obj)
- stream << std::fixed << std::setprecision(1) << obj->nozzle_diameter;
+ stream << std::fixed << std::setprecision(1) << obj->m_extder_data.extders[0].current_nozzle_diameter;
std::string nozzle_diameter_str = stream.str();
std::set printer_names = preset_bundle->get_printer_names_by_printer_type_and_nozzle(MachineObject::get_preset_printer_model_name(obj->printer_type),
nozzle_diameter_str);
@@ -1093,40 +1146,67 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
wxArrayString items;
m_pa_profile_items.clear();
m_comboBox_cali_result->SetValue(wxEmptyString);
-
+
+ // TODO: Orca hack
+ int extruder_id = 0;
+ NozzleVolumeType nozzle_volume_type = NozzleVolumeType::nvtNormal;
if (obj->cali_version >= 0) {
+ // add default item
+ PACalibResult default_item;
+ default_item.cali_idx = -1;
+ get_default_k_n_value(ams_filament_id, default_item.k_value, default_item.n_coef);
+ m_pa_profile_items.emplace_back(default_item);
+ items.push_back(_L("Default"));
+
m_input_k_val->GetTextCtrl()->SetValue(wxEmptyString);
std::vector cali_history = this->obj->pa_calib_tab;
for (auto cali_item : cali_history) {
if (cali_item.filament_id == ams_filament_id) {
+ if (obj->is_multi_extruders() && (cali_item.extruder_id != extruder_id || cali_item.nozzle_volume_type != nozzle_volume_type)) {
+ continue;
+ }
items.push_back(from_u8(cali_item.name));
m_pa_profile_items.push_back(cali_item);
}
}
m_comboBox_cali_result->Set(items);
- if (tray_id == VIRTUAL_TRAY_ID) {
+ if (ams_id == VIRTUAL_TRAY_ID) {
AmsTray selected_tray = this->obj->vt_tray;
cali_select_idx = CalibUtils::get_selected_calib_idx(m_pa_profile_items,selected_tray.cali_idx);
if (cali_select_idx >= 0) {
m_comboBox_cali_result->SetSelection(cali_select_idx);
}
+ else {
+ m_comboBox_cali_result->SetSelection(0);
+ }
}
else {
- Ams* selected_ams = this->obj->amsList[std::to_string(ams_id)];
- if(!selected_ams) return;
- AmsTray* selected_tray = selected_ams->trayList[std::to_string(tray_id)];
- if(!selected_tray) return;
- cali_select_idx = CalibUtils::get_selected_calib_idx(m_pa_profile_items, selected_tray->cali_idx);
- if (cali_select_idx >= 0) {
+ if (this->obj->amsList.find(std::to_string(ams_id)) != this->obj->amsList.end()) {
+ Ams* selected_ams = this->obj->amsList[std::to_string(ams_id)];
+ if (!selected_ams)
+ return;
+ AmsTray* selected_tray = selected_ams->trayList[std::to_string(slot_id)];
+ if (!selected_tray)
+ return;
+ cali_select_idx = CalibUtils::get_selected_calib_idx(m_pa_profile_items, selected_tray->cali_idx);
+ if (cali_select_idx < 0) {
+ BOOST_LOG_TRIVIAL(info) << "extrusion_cali_status_error: cannot find pa profile, ams_id = " << ams_id
+ << ", slot_id = " << slot_id << ", cali_idx = " << selected_tray->cali_idx;
+ cali_select_idx = 0;
+ }
m_comboBox_cali_result->SetSelection(cali_select_idx);
}
}
-
+
if (cali_select_idx >= 0) {
m_input_k_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[cali_select_idx].k_value));
m_input_n_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[cali_select_idx].n_coef));
}
+ else {
+ m_input_k_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[0].k_value));
+ m_input_n_val->GetTextCtrl()->SetValue(float_to_string_with_precision(m_pa_profile_items[0].n_coef));
+ }
}
else {
if (!ams_filament_id.empty()) {
@@ -1140,8 +1220,8 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
}
}
-void AMSMaterialsSetting::on_dpi_changed(const wxRect &suggested_rect)
-{
+void AMSMaterialsSetting::on_dpi_changed(const wxRect &suggested_rect)
+{
m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
//m_clr_picker->msw_rescale();
@@ -1154,7 +1234,7 @@ void AMSMaterialsSetting::on_dpi_changed(const wxRect &suggested_rect)
m_button_confirm->SetCornerRadius(FromDIP(12));
m_button_close->SetMinSize(AMS_MATERIALS_SETTING_BUTTON_SIZE);
m_button_close->SetCornerRadius(FromDIP(12));
- this->Refresh();
+ this->Refresh();
}
ColorPicker::ColorPicker(wxWindow* parent, wxWindowID id, const wxPoint& pos /*= wxDefaultPosition*/, const wxSize& size /*= wxDefaultSize*/)
@@ -1603,7 +1683,7 @@ void ColorPickerPopup::paintEvent(wxPaintEvent& evt)
void ColorPickerPopup::OnDismiss() {}
-void ColorPickerPopup::Popup()
+void ColorPickerPopup::Popup()
{
PopupWindow::Popup();
}
diff --git a/src/slic3r/GUI/AMSMaterialsSetting.hpp b/src/slic3r/GUI/AMSMaterialsSetting.hpp
index c058ac769f..3c8743b634 100644
--- a/src/slic3r/GUI/AMSMaterialsSetting.hpp
+++ b/src/slic3r/GUI/AMSMaterialsSetting.hpp
@@ -118,7 +118,7 @@ public:
void on_picker_color(wxCommandEvent& color);
MachineObject* obj{ nullptr };
int ams_id { 0 }; /* 0 ~ 3 */
- int tray_id { 0 }; /* 0 ~ 3 */
+ int slot_id { 0 }; /* 0 ~ 3 */
std::string ams_filament_id;
std::string ams_setting_id;
diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp
index 396eda3960..181236fad3 100644
--- a/src/slic3r/GUI/AboutDialog.cpp
+++ b/src/slic3r/GUI/AboutDialog.cpp
@@ -262,13 +262,6 @@ AboutDialog::AboutDialog()
vesizer->Add(version, 0, wxRIGHT | wxALIGN_RIGHT, FromDIP(20));
vesizer->AddSpacer(FromDIP(5));
vesizer->Add(credits_string, 0, wxRIGHT | wxALIGN_RIGHT, FromDIP(20));
- // #if BBL_INTERNAL_TESTING
-// wxString build_time = wxString::Format("Build Time: %s", std::string(SLIC3R_BUILD_TIME));
-// wxStaticText* build_time_text = new wxStaticText(this, wxID_ANY, build_time, wxDefaultPosition, wxDefaultSize);
-// build_time_text->SetForegroundColour(wxColour("#FFFFFE"));
-// build_time_text->SetBackgroundColour(wxColour("#00AF42"));
-// vesizer->Add(build_time_text, 0, wxALL | wxALIGN_CENTER_HORIZONTAL, FromDIP(5));
-// #endif
vesizer->Add(0, 0, 1, wxEXPAND, FromDIP(5));
}
@@ -322,7 +315,7 @@ AboutDialog::AboutDialog()
copyright_hor_sizer->Add(copyright_ver_sizer, 0, wxLEFT, FromDIP(20));
- wxStaticText *html_text = new wxStaticText(this, wxID_ANY, "Copyright(C) 2022-2024 Li Jiang All Rights Reserved", wxDefaultPosition, wxDefaultSize);
+ wxStaticText *html_text = new wxStaticText(this, wxID_ANY, "Copyright(C) 2022-2025 Li Jiang All Rights Reserved", wxDefaultPosition, wxDefaultSize);
html_text->SetForegroundColour(wxColour(107, 107, 107));
copyright_ver_sizer->Add(html_text, 0, wxALL , 0);
diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp
index 127d609414..ff5fac1710 100644
--- a/src/slic3r/GUI/AmsMappingPopup.cpp
+++ b/src/slic3r/GUI/AmsMappingPopup.cpp
@@ -286,19 +286,19 @@ void MaterialItem::doRender(wxDC &dc)
AmsMapingPopup::AmsMapingPopup(wxWindow *parent)
: PopupWindow(parent, wxBORDER_NONE)
{
- SetSize(wxSize(FromDIP(252), -1));
- SetMinSize(wxSize(FromDIP(252), -1));
- SetMaxSize(wxSize(FromDIP(252), -1));
Bind(wxEVT_PAINT, &AmsMapingPopup::paintEvent, this);
-
#if __APPLE__
Bind(wxEVT_LEFT_DOWN, &AmsMapingPopup::on_left_down, this);
#endif
SetBackgroundColour(*wxWHITE);
- m_sizer_main = new wxBoxSizer(wxVERTICAL);
- //m_sizer_main->Add(0, 0, 1, wxEXPAND, 0);
+
+ m_sizer_main = new wxBoxSizer(wxVERTICAL);
+ m_sizer_ams = new wxBoxSizer(wxHORIZONTAL);
+ m_sizer_ams_left = new wxBoxSizer(wxVERTICAL);
+ m_sizer_ams_right = new wxBoxSizer(wxVERTICAL);
+
auto title_panel = new wxPanel(this, wxID_ANY);
title_panel->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8));
@@ -307,7 +307,6 @@ void MaterialItem::doRender(wxDC &dc)
wxBoxSizer *title_sizer_h= new wxBoxSizer(wxHORIZONTAL);
-
wxBoxSizer *title_sizer_v = new wxBoxSizer(wxVERTICAL);
auto title_text = new wxStaticText(title_panel, wxID_ANY, _L("AMS Slots"));
@@ -319,19 +318,15 @@ void MaterialItem::doRender(wxDC &dc)
title_panel->Layout();
title_panel->Fit();
- m_sizer_list = new wxBoxSizer(wxVERTICAL);
- for (auto i = 0; i < AMS_TOTAL_COUNT; i++) {
- auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL);
- /*auto ams_mapping_item_container = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("ams_mapping_container", this, 78), wxDefaultPosition,
- wxSize(FromDIP(230), FromDIP(78)), 0);*/
- auto ams_mapping_item_container = new MappingContainer(this);
- ams_mapping_item_container->SetSizer(sizer_mapping_list);
- ams_mapping_item_container->Layout();
- //ams_mapping_item_container->Hide();
- m_amsmapping_container_sizer_list.push_back(sizer_mapping_list);
- m_amsmapping_container_list.push_back(ams_mapping_item_container);
- m_sizer_list->Add(ams_mapping_item_container, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM, FromDIP(5));
- }
+ auto left_ams_title_text = new wxStaticText(this, wxID_ANY, _L("Left Ams"));
+ auto right_ams_title_text = new wxStaticText(this, wxID_ANY, _L("Right Ams"));
+
+ m_sizer_ams_left->Add(left_ams_title_text, 0, wxALIGN_CENTER, 0);
+ m_sizer_ams_right->Add(right_ams_title_text, 0, wxALIGN_CENTER, 0);
+
+ m_sizer_ams->Add(m_sizer_ams_left, 0, wxEXPAND | wxALL, FromDIP(0));
+ m_sizer_ams->Add(m_sizer_ams_right, 0, wxEXPAND | wxALL, FromDIP(0));
+
m_warning_text = new wxStaticText(this, wxID_ANY, wxEmptyString);
m_warning_text->SetForegroundColour(wxColour(0xFF, 0x6F, 0x00));
@@ -342,9 +337,7 @@ void MaterialItem::doRender(wxDC &dc)
m_warning_text->Wrap(FromDIP(248));
m_sizer_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2));
- m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(5));
- m_sizer_main->Add(m_sizer_list, 0, wxEXPAND | wxALL, FromDIP(0));
- m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(5));
+ m_sizer_main->Add(m_sizer_ams, 0, wxEXPAND | wxALL, FromDIP(2));
m_sizer_main->Add(m_warning_text, 0, wxEXPAND | wxALL, FromDIP(6));
SetSizer(m_sizer_main);
@@ -456,73 +449,94 @@ void AmsMapingPopup::update_ams_data_multi_machines()
void AmsMapingPopup::update_ams_data(std::map amsList)
{
- m_has_unmatch_filament = false;
- //m_mapping_item_list.clear();
+ std::map::iterator ams_iter;
+ BOOST_LOG_TRIVIAL(trace) << "ams_mapping total count " << amsList.size();
+
for (auto& ams_container : m_amsmapping_container_list) {
- ams_container->Hide();
+ ams_container->Destroy();
}
-
- for (wxWindow *mitem : m_mapping_item_list) {
- mitem->Destroy();
- mitem = nullptr;
- }
- m_mapping_item_list.clear();
-
- if (m_amsmapping_container_sizer_list.size() > 0) {
- for (wxBoxSizer *siz : m_amsmapping_container_sizer_list) {
- siz->Clear(true);
- }
- }
-
- std::map::iterator ams_iter;
-
- BOOST_LOG_TRIVIAL(trace) << "ams_mapping total count " << amsList.size();
- int m_amsmapping_container_list_index = 0;
+ m_amsmapping_container_list.clear();
+ m_amsmapping_container_sizer_list.clear();
+ m_mapping_item_list.clear();
for (ams_iter = amsList.begin(); ams_iter != amsList.end(); ams_iter++) {
-
- BOOST_LOG_TRIVIAL(trace) << "ams_mapping ams id " << ams_iter->first.c_str();
- auto ams_indx = atoi(ams_iter->first.c_str());
- Ams *ams_group = ams_iter->second;
- std::vector tray_datas;
- std::map::iterator tray_iter;
+ int ams_indx = atoi(ams_iter->first.c_str());
+ int ams_type = ams_iter->second->type;
+ int nozzle_id = ams_iter->second->nozzle;
- for (tray_iter = ams_group->trayList.begin(); tray_iter != ams_group->trayList.end(); tray_iter++) {
- AmsTray *tray_data = tray_iter->second;
- TrayData td;
+ if (ams_type >=1 || ams_type <= 3) { //1:ams 2:ams-lite 3:n3f
- td.id = ams_indx * AMS_TOTAL_COUNT + atoi(tray_data->id.c_str());
+ auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL);
+ auto ams_mapping_item_container = new MappingContainer(this);
+ ams_mapping_item_container->SetSizer(sizer_mapping_list);
+ ams_mapping_item_container->Layout();
+
+ m_has_unmatch_filament = false;
- if (!tray_data->is_exists) {
- td.type = EMPTY;
- } else {
- if (!tray_data->is_tray_info_ready()) {
- td.type = THIRD;
- } else {
- td.type = NORMAL;
- td.colour = AmsTray::decode_color(tray_data->color);
- td.name = tray_data->get_display_filament_type();
- td.filament_type = tray_data->get_filament_type();
- td.ctype = tray_data->ctype;
- for (auto col : tray_data->cols) {
- td.material_cols.push_back(AmsTray::decode_color(col));
- }
+ BOOST_LOG_TRIVIAL(trace) << "ams_mapping ams id " << ams_iter->first.c_str();
+
+ Ams* ams_group = ams_iter->second;
+ std::vector tray_datas;
+ std::map::iterator tray_iter;
+
+ for (tray_iter = ams_group->trayList.begin(); tray_iter != ams_group->trayList.end(); tray_iter++) {
+ AmsTray* tray_data = tray_iter->second;
+ TrayData td;
+
+ td.id = ams_indx * AMS_TOTAL_COUNT + atoi(tray_data->id.c_str());
+
+ if (!tray_data->is_exists) {
+ td.type = EMPTY;
}
+ else {
+ if (!tray_data->is_tray_info_ready()) {
+ td.type = THIRD;
+ }
+ else {
+ td.type = NORMAL;
+ td.colour = AmsTray::decode_color(tray_data->color);
+ td.name = tray_data->get_display_filament_type();
+ td.filament_type = tray_data->get_filament_type();
+ td.ctype = tray_data->ctype;
+ for (auto col : tray_data->cols) {
+ td.material_cols.push_back(AmsTray::decode_color(col));
+ }
+ }
+
+ td.ams_id = std::stoi(ams_iter->second->id);
+ td.slot_id = std::stoi(tray_iter->second->id);
+ }
+
+ tray_datas.push_back(td);
}
- tray_datas.push_back(td);
- }
+ ams_mapping_item_container->Show();
+ add_ams_mapping(tray_datas, ams_mapping_item_container, sizer_mapping_list);
+
- m_amsmapping_container_list[m_amsmapping_container_list_index]->Show();
- add_ams_mapping(tray_datas, m_amsmapping_container_list[m_amsmapping_container_list_index], m_amsmapping_container_sizer_list[m_amsmapping_container_list_index]);
- m_amsmapping_container_list_index++;
+ m_amsmapping_container_sizer_list.push_back(sizer_mapping_list);
+ m_amsmapping_container_list.push_back(ams_mapping_item_container);
+
+ //main nozzle = right nozzle
+ if (nozzle_id == 0) {
+ m_sizer_ams_right->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0);
+ }
+ else if (nozzle_id == 1) {
+ m_sizer_ams_left->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0);
+ }
+
+
+ //m_warning_text->Show(m_has_unmatch_filament);
+ }
+ else if(ams_type == 4){ //4:n3s
+ }
}
+ /*extra tray*/
- m_warning_text->Show(m_has_unmatch_filament);
Layout();
Fit();
}
@@ -583,6 +597,9 @@ void AmsMapingPopup::add_ams_mapping(std::vector tray_data, wxWindow*
// set button
MappingItem *m_mapping_item = new MappingItem(container);
+ m_mapping_item->m_ams_id = tray_data[i].ams_id;
+ m_mapping_item->m_slot_id = tray_data[i].slot_id;
+
m_mapping_item->SetSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
m_mapping_item->SetMinSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
m_mapping_item->SetMaxSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
@@ -675,7 +692,8 @@ void MappingItem::send_event(int fliament_id)
wxCommandEvent event(EVT_SET_FINISH_MAPPING);
event.SetInt(m_tray_data.id);
- wxString param = wxString::Format("%d|%d|%d|%d|%s|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), number, fliament_id);
+ wxString param = wxString::Format("%d|%d|%d|%d|%s|%d|%d|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), number, fliament_id,
+ m_tray_data.ams_id, m_tray_data.slot_id);
event.SetString(param);
event.SetEventObject(this->GetParent()->GetParent());
wxPostEvent(this->GetParent()->GetParent()->GetParent(), event);
@@ -1385,7 +1403,9 @@ void AmsReplaceMaterialDialog::update_machine_obj(MachineObject* obj)
//creat group
int group_index = 0;
- for (int filam : m_obj->filam_bak) {
+
+ const Extder& extder = m_obj->m_extder_data.extders[MAIN_NOZZLE_ID];
+ for (int filam : extder.filam_bak) {
auto status_list = GetStatus(filam);
std::map group_info;
diff --git a/src/slic3r/GUI/AmsMappingPopup.hpp b/src/slic3r/GUI/AmsMappingPopup.hpp
index 75f274ba0b..7c64cba2f2 100644
--- a/src/slic3r/GUI/AmsMappingPopup.hpp
+++ b/src/slic3r/GUI/AmsMappingPopup.hpp
@@ -60,6 +60,9 @@ struct TrayData
std::string filament_type;
wxColour colour;
std::vector material_cols = std::vector();
+
+ int ams_id = 0;
+ int slot_id = 0;
};
class MaterialItem: public wxPanel
@@ -116,6 +119,9 @@ public:
ScalableBitmap m_transparent_mapping_item;
bool m_unmatch{false};
+ int m_ams_id{255};
+ int m_slot_id{255};
+
void msw_rescale();
void paintEvent(wxPaintEvent &evt);
void render(wxDC &dc);
@@ -150,6 +156,9 @@ public:
int m_current_filament_id;
std::string m_tag_material;
wxBoxSizer *m_sizer_main{nullptr};
+ wxBoxSizer *m_sizer_ams{nullptr};
+ wxBoxSizer *m_sizer_ams_left{nullptr};
+ wxBoxSizer *m_sizer_ams_right{nullptr};
wxBoxSizer *m_sizer_list{nullptr};
wxWindow *m_parent_item{nullptr};
diff --git a/src/slic3r/GUI/CaliHistoryDialog.cpp b/src/slic3r/GUI/CaliHistoryDialog.cpp
index 7224ec34e2..3d5bbcd646 100644
--- a/src/slic3r/GUI/CaliHistoryDialog.cpp
+++ b/src/slic3r/GUI/CaliHistoryDialog.cpp
@@ -11,7 +11,7 @@
namespace Slic3r {
namespace GUI {
-
+
#define HISTORY_WINDOW_SIZE wxSize(FromDIP(700), FromDIP(600))
#define EDIT_HISTORY_DIALOG_INPUT_SIZE wxSize(FromDIP(160), FromDIP(24))
#define NEW_HISTORY_DIALOG_INPUT_SIZE wxSize(FromDIP(250), FromDIP(24))
@@ -180,7 +180,7 @@ void HistoryWindow::on_device_connected(MachineObject* obj)
int selection = 1;
for (int i = 0; i < nozzle_diameter_list.size(); i++) {
m_comboBox_nozzle_dia->AppendString(wxString::Format("%1.1f mm", nozzle_diameter_list[i]));
- if (abs(curr_obj->nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
+ if (abs(curr_obj->m_extder_data.extders[0].current_nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
selection = i;
}
}
@@ -201,9 +201,8 @@ void HistoryWindow::update(MachineObject* obj)
{
if (!obj) return;
- if (obj->cali_version != history_version) {
+ if (obj->cali_version != obj->last_cali_version) {
if (obj->has_get_pa_calib_tab) {
- history_version = obj->cali_version;
reqeust_history_result(obj);
}
}
@@ -217,20 +216,23 @@ void HistoryWindow::update(MachineObject* obj)
void HistoryWindow::on_select_nozzle(wxCommandEvent& evt)
{
reqeust_history_result(curr_obj);
-
+
}
void HistoryWindow::reqeust_history_result(MachineObject* obj)
{
if (curr_obj) {
- // reset
+ // reset
curr_obj->reset_pa_cali_history_result();
m_calib_results_history.clear();
sync_history_data();
float nozzle_value = get_nozzle_value();
if (nozzle_value > 0) {
- CalibUtils::emit_get_PA_calib_infos(nozzle_value);
+ PACalibExtruderInfo cali_info;
+ cali_info.nozzle_diameter = nozzle_value;
+ cali_info.use_nozzle_volume_type = false;
+ CalibUtils::emit_get_PA_calib_infos(cali_info);
m_tips->SetLabel(_L("Refreshing the historical Flow Dynamics Calibration records"));
BOOST_LOG_TRIVIAL(info) << "request calib history";
}
@@ -303,7 +305,12 @@ void HistoryWindow::sync_history_data() {
gbSizer->SetEmptyCellSize({ 0,0 });
m_history_data_panel->Layout();
m_history_data_panel->Fit();
- CalibUtils::delete_PA_calib_result({ result.tray_id, result.cali_idx, result.nozzle_diameter, result.filament_id });
+ PACalibIndexInfo cali_info;
+ cali_info.tray_id = result.tray_id;
+ cali_info.cali_idx = result.cali_idx;
+ cali_info.nozzle_diameter = result.nozzle_diameter;
+ cali_info.filament_id = result.filament_id;
+ CalibUtils::delete_PA_calib_result(cali_info);
});
auto edit_button = new Button(m_history_data_panel, _L("Edit"));
@@ -468,7 +475,7 @@ void EditCalibrationHistoryDialog::on_save(wxCommandEvent& event) {
return;
m_new_result.name = m_name_value->GetTextCtrl()->GetValue().ToUTF8().data();
-
+
float k = 0.0f;
if (!CalibUtils::validate_input_k_value(m_k_value->GetTextCtrl()->GetValue(), &k)) {
MessageDialog msg_dlg(nullptr, wxString::Format(_L("Please input a valid value (K in %.1f~%.1f)"), MIN_PA_K_VALUE, MAX_PA_K_VALUE), wxEmptyString, wxICON_WARNING | wxOK);
@@ -499,7 +506,7 @@ wxArrayString NewCalibrationHistoryDialog::get_all_filaments(const MachineObject
std::set filament_id_set;
std::set printer_names;
std::ostringstream stream;
- stream << std::fixed << std::setprecision(1) << obj->nozzle_diameter;
+ stream << std::fixed << std::setprecision(1) << obj->m_extder_data.extders[0].current_nozzle_diameter;
std::string nozzle_diameter_str = stream.str();
for (auto printer_it = preset_bundle->printers.begin(); printer_it != preset_bundle->printers.end(); printer_it++) {
@@ -616,11 +623,11 @@ NewCalibrationHistoryDialog::NewCalibrationHistoryDialog(wxWindow *parent, const
static std::array nozzle_diameter_list = {0.2f, 0.4f, 0.6f, 0.8f};
for (int i = 0; i < nozzle_diameter_list.size(); i++) {
m_comboBox_nozzle_diameter->AppendString(wxString::Format("%1.1f mm", nozzle_diameter_list[i]));
- if (abs(obj->nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
+ if (abs(obj->m_extder_data.extders[0].current_nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
m_comboBox_nozzle_diameter->SetSelection(i);
}
}
-
+
// Nozzle Diameter
flex_sizer->Add(nozzle_diameter_title);
flex_sizer->Add(m_comboBox_nozzle_diameter);
@@ -628,7 +635,7 @@ NewCalibrationHistoryDialog::NewCalibrationHistoryDialog(wxWindow *parent, const
Label *k_title = new Label(top_panel, _L("Factor K"));
auto k_str = wxString::Format("%.3f", m_new_result.k_value);
m_k_value = new TextInput(top_panel, k_str, "", "", wxDefaultPosition, NEW_HISTORY_DIALOG_INPUT_SIZE, wxTE_PROCESS_ENTER);
-
+
// Factor K
flex_sizer->Add(k_title);
flex_sizer->Add(m_k_value);
@@ -703,7 +710,7 @@ void NewCalibrationHistoryDialog::on_ok(wxCommandEvent &event)
m_new_result.k_value = k;
m_new_result.tray_id = -1;
m_new_result.cali_idx = -1;
-
+
m_new_result.nozzle_diameter = nozzle_value;
m_new_result.filament_id = filament_id;
m_new_result.setting_id = setting_id;
diff --git a/src/slic3r/GUI/CaliHistoryDialog.hpp b/src/slic3r/GUI/CaliHistoryDialog.hpp
index 8f7b49a25a..b8ef7666e3 100644
--- a/src/slic3r/GUI/CaliHistoryDialog.hpp
+++ b/src/slic3r/GUI/CaliHistoryDialog.hpp
@@ -36,7 +36,6 @@ protected:
bool& m_show_history_dialog;
std::vector m_calib_results_history;
MachineObject* curr_obj { nullptr };
- int history_version = -1;
};
class EditCalibrationHistoryDialog : public DPIDialog
diff --git a/src/slic3r/GUI/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp
index 9a16c13322..8fa07b924f 100644
--- a/src/slic3r/GUI/CalibrationPanel.cpp
+++ b/src/slic3r/GUI/CalibrationPanel.cpp
@@ -4,11 +4,13 @@
#include "MainFrame.hpp"
#include "CalibrationPanel.hpp"
#include "I18N.hpp"
+#include "SelectMachine.hpp"
+#include "SelectMachinePop.hpp"
namespace Slic3r { namespace GUI {
#define REFRESH_INTERVAL 1000
-
+
#define INITIAL_NUMBER_OF_MACHINES 0
#define LIST_REFRESH_INTERVAL 200
#define MACHINE_LIST_REFRESH_INTERVAL 2000
diff --git a/src/slic3r/GUI/CalibrationPanel.hpp b/src/slic3r/GUI/CalibrationPanel.hpp
index a993ff2886..eafb380c79 100644
--- a/src/slic3r/GUI/CalibrationPanel.hpp
+++ b/src/slic3r/GUI/CalibrationPanel.hpp
@@ -7,16 +7,8 @@
namespace Slic3r { namespace GUI {
-#define SELECT_MACHINE_GREY900 wxColour(38, 46, 48)
-#define SELECT_MACHINE_GREY600 wxColour(144,144,144)
-#define SELECT_MACHINE_GREY400 wxColour(206, 206, 206)
-#define SELECT_MACHINE_BRAND wxColour(0, 150, 136)
-#define SELECT_MACHINE_REMIND wxColour(255,111,0)
-#define SELECT_MACHINE_LIGHT_GREEN wxColour(219, 253, 231)
-
#define CALI_MODE_COUNT 2
-
wxString get_calibration_type_name(CalibMode cali_mode);
class MObjectPanel : public wxPanel
diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp
index 27c70c63bf..6c3b92cd96 100644
--- a/src/slic3r/GUI/CalibrationWizard.cpp
+++ b/src/slic3r/GUI/CalibrationWizard.cpp
@@ -17,7 +17,6 @@ wxDEFINE_EVENT(EVT_CALIBRATION_JOB_FINISHED, wxCommandEvent);
static const wxString NA_STR = _L("N/A");
static const float MIN_PA_K_VALUE_STEP = 0.001;
static const int MAX_PA_HISTORY_RESULTS_NUMS = 16;
-
std::map get_cached_selected_filament(MachineObject* obj) {
std::map selected_filament_map;
if (!obj) return selected_filament_map;
@@ -46,7 +45,7 @@ bool is_pa_params_valid(const Calib_Params& params)
}
CalibrationWizard::CalibrationWizard(wxWindow* parent, CalibMode mode, wxWindowID id, const wxPoint& pos, const wxSize& size, long style)
- : wxPanel(parent, id, pos, size, style)
+ : wxPanel(parent, id, pos, size, style)
, m_mode(mode)
{
SetBackgroundColour(wxColour(0xEEEEEE));
@@ -58,8 +57,8 @@ CalibrationWizard::CalibrationWizard(wxWindow* parent, CalibMode mode, wxWindowI
m_scrolledWindow->SetBackgroundColour(*wxWHITE);
wxBoxSizer* padding_sizer = new wxBoxSizer(wxHORIZONTAL);
- padding_sizer->Add(0, 0, 1);
-
+ padding_sizer->Add(0, 0, 1);
+
m_all_pages_sizer = new wxBoxSizer(wxVERTICAL);
padding_sizer->Add(m_all_pages_sizer, 0);
@@ -103,6 +102,26 @@ CalibrationWizard::~CalibrationWizard()
;
}
+void CalibrationWizard::get_tray_ams_and_slot_id(int in_tray_id, int &ams_id, int &slot_id, int &tray_id)
+{
+ assert(curr_obj);
+ if (!curr_obj)
+ return;
+
+ if (in_tray_id == VIRTUAL_TRAY_ID || in_tray_id == VIRTUAL_TRAY_ID) {
+ ams_id = in_tray_id;
+ slot_id = 0;
+ tray_id = ams_id;
+ if (!curr_obj->is_enable_np)
+ tray_id = VIRTUAL_TRAY_ID;
+ }
+ else {
+ ams_id = in_tray_id / 4;
+ slot_id = in_tray_id % 4;
+ tray_id = in_tray_id;
+ }
+}
+
void CalibrationWizard::on_cali_job_finished(wxCommandEvent& event)
{
this->on_cali_job_finished(event.GetString());
@@ -320,7 +339,7 @@ void CalibrationWizard::back_preset_info(MachineObject *obj, bool cali_finish, b
wxGetApp().app_config->save_printer_cali_infos(printer_cali_info, back_cali_flag);
}
-void CalibrationWizard::msw_rescale()
+void CalibrationWizard::msw_rescale()
{
for (int i = 0; i < m_page_steps.size(); i++) {
if (m_page_steps[i]->page)
@@ -402,7 +421,7 @@ void PressureAdvanceWizard::create_pages()
preset_step = new CalibrationWizardPageStep(new CalibrationPresetPage(m_scrolledWindow, m_mode, false));
cali_step = new CalibrationWizardPageStep(new CalibrationCaliPage(m_scrolledWindow, m_mode));
save_step = new CalibrationWizardPageStep(new CalibrationPASavePage(m_scrolledWindow));
-
+
m_all_pages_sizer->Add(start_step->page, 1, wxEXPAND | wxALL, FromDIP(25));
m_all_pages_sizer->Add(preset_step->page, 1, wxEXPAND | wxALL, FromDIP(25));
m_all_pages_sizer->Add(cali_step->page, 1, wxEXPAND | wxALL, FromDIP(25));
@@ -477,7 +496,11 @@ void PressureAdvanceWizard::update(MachineObject* obj)
if (!m_show_result_dialog) {
if (obj->cali_version != -1 && obj->cali_version != cali_version) {
cali_version = obj->cali_version;
- CalibUtils::emit_get_PA_calib_info(obj->nozzle_diameter, "");
+ PACalibExtruderInfo cali_info;
+ cali_info.nozzle_diameter = obj->m_extder_data.extders[0].current_nozzle_diameter;
+ cali_info.use_extruder_id = false;
+ cali_info.use_nozzle_volume_type = false;
+ CalibUtils::emit_get_PA_calib_infos(cali_info);
}
}
}
@@ -589,7 +612,7 @@ void PressureAdvanceWizard::on_cali_start()
}
X1CCalibInfos::X1CCalibInfo calib_info;
- calib_info.tray_id = item.first;
+ get_tray_ams_and_slot_id(item.first, calib_info.ams_id, calib_info.slot_id, calib_info.tray_id);
calib_info.nozzle_diameter = nozzle_dia;
calib_info.filament_id = item.second->filament_id;
calib_info.setting_id = item.second->setting_id;
@@ -620,10 +643,12 @@ void PressureAdvanceWizard::on_cali_start()
BOOST_LOG_TRIVIAL(error) << "CaliPreset: get preset info error";
return;
}
-
+
+ int selected_tray_id = 0;
CalibInfo calib_info;
calib_info.dev_id = curr_obj->dev_id;
- calib_info.select_ams = "[" + std::to_string(selected_filaments.begin()->first) + "]";
+ get_tray_ams_and_slot_id(selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id);
+ calib_info.select_ams = "[" + std::to_string(selected_tray_id) + "]";
Preset *preset = selected_filaments.begin()->second;
Preset * temp_filament_preset = new Preset(preset->type, preset->name + "_temp");
temp_filament_preset->config = preset->config;
@@ -656,10 +681,10 @@ void PressureAdvanceWizard::on_cali_start()
pa_cali_method = ManualPaCaliMethod::PA_LINE;
else if (calib_info.params.mode == CalibMode::Calib_PA_Pattern)
pa_cali_method = ManualPaCaliMethod::PA_PATTERN;
-
+
cali_page->set_pa_cali_image(int(pa_cali_method));
curr_obj->manual_pa_cali_method = pa_cali_method;
-
+
if (curr_obj->get_printer_series() != PrinterSeries::SERIES_X1 && curr_obj->pa_calib_tab.size() >= MAX_PA_HISTORY_RESULTS_NUMS) {
MessageDialog msg_dlg(nullptr, wxString::Format(_L("This machine type can only hold 16 history results per nozzle. "
"You can delete the existing historical results and then start calibration. "
@@ -740,7 +765,7 @@ void PressureAdvanceWizard::on_cali_save()
auto iter = std::find_if(curr_obj->pa_calib_tab.begin(), curr_obj->pa_calib_tab.end(), [&new_pa_cali_result](const PACalibResult &item) {
return item.name == new_pa_cali_result.name && item.filament_id == item.filament_id;
});
-
+
if (iter != curr_obj->pa_calib_tab.end()) {
MessageDialog
msg_dlg(nullptr,
@@ -819,7 +844,7 @@ void FlowRateWizard::create_pages()
coarse_save_step = new CalibrationWizardPageStep(new CalibrationFlowCoarseSavePage(m_scrolledWindow));
cali_fine_step = new CalibrationWizardPageStep(new CalibrationCaliPage(m_scrolledWindow, m_mode, CaliPageType::CALI_PAGE_FINE_CALI));
fine_save_step = new CalibrationWizardPageStep(new CalibrationFlowFineSavePage(m_scrolledWindow));
-
+
// auto
cali_step = new CalibrationWizardPageStep(new CalibrationCaliPage(m_scrolledWindow, m_mode));
save_step = new CalibrationWizardPageStep(new CalibrationFlowX1SavePage(m_scrolledWindow));
@@ -897,7 +922,7 @@ void FlowRateWizard::on_cali_action(wxCommandEvent& evt)
else if (action == CaliPageActionType::CALI_ACTION_CALI) {
if (m_cali_method == CalibrationMethod::CALI_METHOD_AUTO) {
on_cali_start();
- }
+ }
else if (m_cali_method == CalibrationMethod::CALI_METHOD_MANUAL) {
CaliPresetStage stage = CaliPresetStage::CALI_MANULA_STAGE_NONE;
float cali_value = 0.0f;
@@ -908,7 +933,7 @@ void FlowRateWizard::on_cali_action(wxCommandEvent& evt)
m_curr_step->chain(cali_fine_step);
}
// automatically jump to next step when print job is sending finished.
- }
+ }
else {
on_cali_start();
}
@@ -989,6 +1014,7 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow
X1CCalibInfos::X1CCalibInfo calib_info;
calib_info.tray_id = item.first;
+ get_tray_ams_and_slot_id(item.first, calib_info.ams_id, calib_info.slot_id, calib_info.tray_id);
calib_info.nozzle_diameter = nozzle_dia;
calib_info.filament_id = item.second->filament_id;
calib_info.setting_id = item.second->setting_id;
@@ -1039,7 +1065,9 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow
}
if (!selected_filaments.empty()) {
- calib_info.select_ams = "[" + std::to_string(selected_filaments.begin()->first) + "]";
+ int selected_tray_id = 0;
+ get_tray_ams_and_slot_id(selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id);
+ calib_info.select_ams = "[" + std::to_string(selected_tray_id) + "]";
Preset* preset = selected_filaments.begin()->second;
temp_filament_preset = new Preset(preset->type, preset->name + "_temp");
temp_filament_preset->config = preset->config;
@@ -1307,7 +1335,7 @@ void FlowRateWizard::cache_coarse_info(MachineObject *obj)
wxString out_name;
coarse_page->get_result(&obj->cache_flow_ratio, &out_name);
-
+
back_preset_info(obj, false);
}
@@ -1317,7 +1345,7 @@ MaxVolumetricSpeedWizard::MaxVolumetricSpeedWizard(wxWindow* parent, wxWindowID
create_pages();
}
-void MaxVolumetricSpeedWizard::create_pages()
+void MaxVolumetricSpeedWizard::create_pages()
{
start_step = new CalibrationWizardPageStep(new CalibrationMaxVolumetricSpeedStartPage(m_scrolledWindow));
preset_step = new CalibrationWizardPageStep(new MaxVolumetricSpeedPresetPage(m_scrolledWindow, m_mode, true));
@@ -1415,7 +1443,9 @@ void MaxVolumetricSpeedWizard::on_cali_start()
calib_info.params = params;
calib_info.dev_id = curr_obj->dev_id;
if (!selected_filaments.empty()) {
- calib_info.select_ams = "[" + std::to_string(selected_filaments.begin()->first) + "]";
+ int selected_tray_id = 0;
+ get_tray_ams_and_slot_id(selected_filaments.begin()->first, calib_info.ams_id, calib_info.slot_id, selected_tray_id);
+ calib_info.select_ams = "[" + std::to_string(selected_tray_id) + "]";
calib_info.filament_prest = selected_filaments.begin()->second;
}
diff --git a/src/slic3r/GUI/CalibrationWizard.hpp b/src/slic3r/GUI/CalibrationWizard.hpp
index 34550b4b7f..28bf937692 100644
--- a/src/slic3r/GUI/CalibrationWizard.hpp
+++ b/src/slic3r/GUI/CalibrationWizard.hpp
@@ -19,7 +19,7 @@ public:
CalibrationWizardPageStep(CalibrationWizardPage* data) {
page = data;
}
-
+
CalibrationWizardPageStep* prev { nullptr };
CalibrationWizardPageStep* next { nullptr };
CalibrationWizardPage* page { nullptr };
@@ -57,7 +57,7 @@ public:
}
virtual void set_cali_method(CalibrationMethod method);
-
+
CalibMode get_calibration_mode() { return m_mode; }
bool save_preset(const std::string &old_preset_name, const std::string &new_preset_name, const std::map &key_values, wxString& message);
@@ -71,6 +71,7 @@ public:
protected:
void on_cali_go_home();
+ void get_tray_ams_and_slot_id(int in_tray_id, int &ams_id, int &slot_id, int &tray_id);
protected:
/* wx widgets*/
@@ -89,7 +90,7 @@ protected:
CalibrationWizardPageStep* preset_step { nullptr };
CalibrationWizardPageStep* cali_step { nullptr };
CalibrationWizardPageStep* save_step { nullptr };
-
+
CalibrationWizardPageStep* cali_coarse_step { nullptr };
CalibrationWizardPageStep* coarse_save_step { nullptr };
CalibrationWizardPageStep* cali_fine_step { nullptr };
diff --git a/src/slic3r/GUI/CalibrationWizardCaliPage.cpp b/src/slic3r/GUI/CalibrationWizardCaliPage.cpp
index cd63eaf38a..927285c149 100644
--- a/src/slic3r/GUI/CalibrationWizardCaliPage.cpp
+++ b/src/slic3r/GUI/CalibrationWizardCaliPage.cpp
@@ -495,8 +495,8 @@ float CalibrationCaliPage::get_selected_calibration_nozzle_dia(MachineObject* ob
return obj->cali_selected_nozzle_dia;
// return default nozzle if nozzle diameter is set
- if (obj->nozzle_diameter > 1e-3 && obj->nozzle_diameter < 10.0f)
- return obj->nozzle_diameter;
+ if (obj->m_extder_data.extders[0].current_nozzle_diameter > 1e-3 && obj->m_extder_data.extders[0].current_nozzle_diameter < 10.0f)
+ return obj->m_extder_data.extders[0].current_nozzle_diameter;
// return 0.4 by default
return 0.4;
diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp
index 12cb6e233e..0d99565759 100644
--- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp
+++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp
@@ -614,12 +614,12 @@ void CalibrationPresetPage::create_filament_list_panel(wxWindow* parent)
auto ams_items_sizer = new wxBoxSizer(wxHORIZONTAL);
for (int i = 0; i < 4; i++) {
AMSinfo temp_info = AMSinfo{ std::to_string(i), std::vector{} };
- auto amsitem = new AMSItem(m_multi_ams_panel, wxID_ANY, temp_info);
+ auto amsitem = new AMSPreview(m_multi_ams_panel, wxID_ANY, temp_info);
amsitem->Bind(wxEVT_LEFT_DOWN, [this, amsitem](wxMouseEvent& e) {
- on_switch_ams(amsitem->m_amsinfo.ams_id);
+ on_switch_ams(amsitem->get_ams_id());
e.Skip();
});
- m_ams_item_list.push_back(amsitem);
+ m_ams_preview_list.push_back(amsitem);
ams_items_sizer->Add(amsitem, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(6));
}
multi_ams_sizer->Add(ams_items_sizer, 0);
@@ -896,12 +896,11 @@ void CalibrationPresetPage::on_select_tray(wxCommandEvent& event)
void CalibrationPresetPage::on_switch_ams(std::string ams_id)
{
- for (auto i = 0; i < m_ams_item_list.size(); i++) {
- AMSItem* item = m_ams_item_list[i];
- if (item->m_amsinfo.ams_id == ams_id) {
+ for (auto i = 0; i < m_ams_preview_list.size(); i++) {
+ AMSPreview *item = m_ams_preview_list[i];
+ if (item->get_ams_id() == ams_id) {
item->OnSelected();
- }
- else {
+ } else {
item->UnSelected();
}
}
@@ -1505,7 +1504,7 @@ void CalibrationPresetPage::init_with_machine(MachineObject* obj)
// set nozzle value from machine
bool nozzle_is_set = false;
for (int i = 0; i < NOZZLE_LIST_COUNT; i++) {
- if (abs(obj->nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
+ if (abs(obj->m_extder_data.extders[0].current_nozzle_diameter - nozzle_diameter_list[i]) < 1e-3) {
if (m_comboBox_nozzle_dia->GetCount() > i) {
m_comboBox_nozzle_dia->SetSelection(i);
nozzle_is_set = true;
@@ -1556,7 +1555,12 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
{
if (!obj) return;
- std::map full_filament_ams_list = wxGetApp().sidebar().build_filament_ams_list(obj);
+ std::map old_full_filament_ams_list = wxGetApp().sidebar().build_filament_ams_list(obj);
+ std::map full_filament_ams_list;
+ for (auto ams_item : old_full_filament_ams_list) {
+ int key = ams_item.first & 0x0FFFF;
+ full_filament_ams_list[key] = std::move(ams_item.second);
+ }
// sync filament_ams_list from obj ams list
filament_ams_list.clear();
@@ -1611,8 +1615,8 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
}
}
- for (auto i = 0; i < m_ams_item_list.size(); i++) {
- AMSItem* item = m_ams_item_list[i];
+ for (auto i = 0; i < m_ams_preview_list.size(); i++) {
+ AMSPreview* item = m_ams_preview_list[i];
if (ams_info.size() > 1) {
if (i < ams_info.size()) {
item->Update(ams_info[i]);
@@ -1780,7 +1784,7 @@ void CalibrationPresetPage::update_filament_combobox(std::string ams_id)
empty_config.set_key_value("filament_colour", new ConfigOptionStrings{ "" });
empty_config.set_key_value("filament_exist", new ConfigOptionBools{ false });
- /* update virtual tray combo box*/
+ // update virtual tray combo box
m_virtual_tray_comboBox->update_from_preset();
auto it = std::find_if(filament_ams_list.begin(), filament_ams_list.end(), [](auto& entry) {
return entry.first == VIRTUAL_TRAY_ID;
@@ -1836,7 +1840,7 @@ Preset* CalibrationPresetPage::get_printer_preset(MachineObject* obj, float nozz
std::string model_id = printer_it->get_current_printer_type(preset_bundle);
std::string printer_type = obj->printer_type;
- if (obj->is_support_p1s_plus) { printer_type = "C12"; }
+ if (obj->is_support_upgrade_kit && obj->installed_upgrade_kit) { printer_type = "C12"; }
if (model_id.compare(printer_type) == 0
&& printer_nozzle_vals
&& abs(printer_nozzle_vals->get_at(0) - nozzle_value) < 1e-3) {
diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp
index 4adcd858f3..176006994c 100644
--- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp
+++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp
@@ -284,8 +284,8 @@ protected:
FilamentComboBoxList m_filament_comboBox_list;
FilamentComboBox* m_virtual_tray_comboBox;
-
- std::vector m_ams_item_list;
+
+ std::vector m_ams_preview_list;
// for update filament combobox, key : tray_id
std::map filament_ams_list;
diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.cpp b/src/slic3r/GUI/CalibrationWizardSavePage.cpp
index dc024e06a4..5e7dd3f493 100644
--- a/src/slic3r/GUI/CalibrationWizardSavePage.cpp
+++ b/src/slic3r/GUI/CalibrationWizardSavePage.cpp
@@ -6,6 +6,8 @@
namespace Slic3r { namespace GUI {
+#define CALIBRATION_SAVE_AMS_NAME_SIZE wxSize(FromDIP(20), FromDIP(24))
+#define CALIBRATION_SAVE_NUMBER_INPUT_SIZE wxSize(FromDIP(100), FromDIP(24))
#define CALIBRATION_SAVE_INPUT_SIZE wxSize(FromDIP(240), FromDIP(24))
#define FLOW_RATE_MAX_VALUE 1.15
@@ -56,7 +58,7 @@ static wxString get_default_name(wxString filament_name, CalibMode mode){
return filament_name;
}
-static wxString get_tray_name_by_tray_id(int tray_id)
+static wxString get_tray_name_by_tray_id(int tray_id)
{
wxString tray_name;
if (tray_id == VIRTUAL_TRAY_ID) {
@@ -125,14 +127,14 @@ CaliPASaveAutoPanel::CaliPASaveAutoPanel(
const wxPoint& pos,
const wxSize& size,
long style)
- : wxPanel(parent, id, pos, size, style)
+ : wxPanel(parent, id, pos, size, style)
{
SetBackgroundColour(*wxWHITE);
m_top_sizer = new wxBoxSizer(wxVERTICAL);
-
+
create_panel(this);
-
+
this->SetSizer(m_top_sizer);
m_top_sizer->Fit(this);
}
@@ -200,6 +202,11 @@ std::vector> CaliPASaveAutoPanel::default_naming(std
void CaliPASaveAutoPanel::sync_cali_result(const std::vector& cali_result, const std::vector& history_result)
{
+ if (m_obj && m_obj->is_multi_extruders()) {
+ sync_cali_result_for_multi_extruder(cali_result, history_result);
+ return;
+ }
+
m_history_results = history_result;
m_calib_results.clear();
for (auto& item : cali_result) {
@@ -391,7 +398,7 @@ void CaliPASaveAutoPanel::save_to_result_from_widgets(wxWindow* window, bool* ou
}
m_calib_results[tray_id].name = into_u8(name);
}
-
+
auto childern = window->GetChildren();
for (auto child : childern) {
save_to_result_from_widgets(child, out_is_valid, out_msg);
@@ -444,6 +451,230 @@ bool CaliPASaveAutoPanel::get_result(std::vector& out_result) {
}
}
+void CaliPASaveAutoPanel::sync_cali_result_for_multi_extruder(const std::vector& cali_result, const std::vector& history_result)
+{
+ if (!m_obj)
+ return;
+
+ m_is_all_failed = true;
+ bool part_failed = false;
+ if (cali_result.empty())
+ part_failed = true;
+
+ m_history_results = history_result;
+ m_calib_results.clear();
+ for (auto &item : cali_result) {
+ if (item.confidence == 0) {
+ int tray_id = 4 * item.ams_id + item.slot_id;
+ m_calib_results[tray_id] = item;
+ }
+ }
+ m_grid_panel->DestroyChildren();
+ auto grid_sizer = new wxBoxSizer(wxHORIZONTAL);
+ const int COLUMN_GAP = FromDIP(10);
+ const int ROW_GAP = FromDIP(10);
+
+ wxStaticBoxSizer* left_sizer = new wxStaticBoxSizer(wxVERTICAL, m_grid_panel, "Left extruder");
+ wxStaticBoxSizer* right_sizer = new wxStaticBoxSizer(wxVERTICAL, m_grid_panel, "Right extruder");
+ grid_sizer->Add(left_sizer);
+ grid_sizer->AddSpacer(COLUMN_GAP);
+ grid_sizer->Add(right_sizer);
+
+ wxFlexGridSizer *left_grid_sizer = new wxFlexGridSizer(3, COLUMN_GAP, ROW_GAP);
+ wxFlexGridSizer *right_grid_sizer = new wxFlexGridSizer(3, COLUMN_GAP, ROW_GAP);
+ left_sizer->Add(left_grid_sizer);
+ right_sizer->Add(right_grid_sizer);
+
+ // main extruder
+ {
+ left_grid_sizer->Add(new wxStaticText(m_grid_panel, wxID_ANY, ""), 1, wxEXPAND); // fill empty space
+
+ auto brand_title = new Label(m_grid_panel, _L("Name"), 0, CALIBRATION_SAVE_INPUT_SIZE);
+ brand_title->SetFont(Label::Head_14);
+ left_grid_sizer->Add(brand_title, 1, wxALIGN_CENTER);
+
+ auto k_title = new Label(m_grid_panel, _L("Factor K"), 0, CALIBRATION_SAVE_NUMBER_INPUT_SIZE);
+ k_title->SetFont(Label::Head_14);
+ left_grid_sizer->Add(k_title, 1, wxALIGN_CENTER);
+ }
+
+ // deputy extruder
+ {
+ right_grid_sizer->Add(new wxStaticText(m_grid_panel, wxID_ANY, ""), 1, wxEXPAND); // fill empty space
+
+ auto brand_title = new Label(m_grid_panel, _L("Name"), 0, CALIBRATION_SAVE_INPUT_SIZE);
+ brand_title->SetFont(Label::Head_14);
+ right_grid_sizer->Add(brand_title, 1, wxALIGN_CENTER);
+
+ auto k_title = new Label(m_grid_panel, _L("Factor K"), 0, CALIBRATION_SAVE_NUMBER_INPUT_SIZE);
+ k_title->SetFont(Label::Head_14);
+ right_grid_sizer->Add(k_title, 1, wxALIGN_CENTER);
+ }
+
+ std::vector> preset_names;
+ for (auto &info : m_obj->selected_cali_preset) {
+ preset_names.push_back({info.tray_id, info.name});
+ }
+ preset_names = default_naming(preset_names);
+
+ bool left_first_add_item = true;
+ bool right_first_add_item = true;
+ for (auto &item : cali_result) {
+ bool result_failed = false;
+ if (item.confidence != 0) {
+ result_failed = true;
+ part_failed = true;
+ } else {
+ m_is_all_failed = false;
+ }
+
+ //wxBoxSizer *item_data_sizer = new wxBoxSizer(wxHORIZONTAL);
+ auto tray_title = new Label(m_grid_panel, "", 0, CALIBRATION_SAVE_AMS_NAME_SIZE);
+ tray_title->SetFont(Label::Head_14);
+ wxString tray_name = get_tray_name_by_tray_id(item.tray_id);
+ tray_title->SetLabel(tray_name);
+
+ auto k_value = new GridTextInput(m_grid_panel, "", "", CALIBRATION_SAVE_NUMBER_INPUT_SIZE, item.tray_id, GridTextInputType::K);
+ auto n_value = new GridTextInput(m_grid_panel, "", "", CALIBRATION_SAVE_NUMBER_INPUT_SIZE, item.tray_id, GridTextInputType::N);
+ k_value->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
+ n_value->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
+ auto k_value_failed = new Label(m_grid_panel, _L("Failed"));
+ auto n_value_failed = new Label(m_grid_panel, _L("Failed"));
+
+ auto comboBox_tray_name = new GridComboBox(m_grid_panel, CALIBRATION_SAVE_INPUT_SIZE, item.tray_id);
+ auto tray_name_failed = new Label(m_grid_panel, " - ");
+ wxArrayString selections;
+ static std::vector filtered_results;
+ filtered_results.clear();
+ for (auto history : history_result) {
+ if (history.filament_id == item.filament_id
+ && history.extruder_id == item.extruder_id
+ && history.nozzle_volume_type == item.nozzle_volume_type
+ && history.nozzle_diameter == item.nozzle_diameter) {
+ filtered_results.push_back(history);
+ selections.push_back(from_u8(history.name));
+ }
+ }
+ comboBox_tray_name->Set(selections);
+
+ auto set_edit_mode = [this, k_value, n_value, k_value_failed, n_value_failed, comboBox_tray_name, tray_name_failed](std::string str) {
+ if (str == "normal") {
+ comboBox_tray_name->Show();
+ tray_name_failed->Show(false);
+ k_value->Show();
+ n_value->Show();
+ k_value_failed->Show(false);
+ n_value_failed->Show(false);
+ }
+ if (str == "failed") {
+ comboBox_tray_name->Show(false);
+ tray_name_failed->Show();
+ k_value->Show(false);
+ n_value->Show(false);
+ k_value_failed->Show();
+ n_value_failed->Show();
+ }
+
+ // hide n value
+ n_value->Hide();
+ n_value_failed->Hide();
+
+ m_grid_panel->Layout();
+ m_grid_panel->Update();
+ };
+
+ if (!result_failed) {
+ set_edit_mode("normal");
+
+ auto k_str = wxString::Format("%.3f", item.k_value);
+ auto n_str = wxString::Format("%.3f", item.n_coef);
+ k_value->GetTextCtrl()->SetValue(k_str);
+ n_value->GetTextCtrl()->SetValue(n_str);
+
+ for (auto &name : preset_names) {
+ if (item.tray_id == name.first) { comboBox_tray_name->SetValue(from_u8(name.second)); }
+ }
+
+ comboBox_tray_name->Bind(wxEVT_COMBOBOX, [this, comboBox_tray_name, k_value, n_value](auto &e) {
+ int selection = comboBox_tray_name->GetSelection();
+ auto history = filtered_results[selection];
+ });
+ } else {
+ set_edit_mode("failed");
+ }
+
+ if ((m_obj->is_main_extruder_on_left() && item.extruder_id == 0)
+ || (!m_obj->is_main_extruder_on_left() && item.extruder_id == 1)) {
+ if (left_first_add_item) {
+ wxString title_name = left_sizer->GetStaticBox()->GetLabel();
+ title_name += " - ";
+ title_name += get_nozzle_volume_type_name(item.nozzle_volume_type);
+ left_sizer->GetStaticBox()->SetLabel(title_name);
+ left_first_add_item = false;
+ }
+
+ left_grid_sizer->Add(tray_title, 1, wxEXPAND);
+
+ if (comboBox_tray_name->IsShown()) {
+ left_grid_sizer->Add(comboBox_tray_name, 1, wxEXPAND);
+ } else {
+ left_grid_sizer->Add(tray_name_failed, 1, wxEXPAND);
+ }
+
+ if (k_value->IsShown()) {
+ left_grid_sizer->Add(k_value, 1, wxEXPAND);
+ } else {
+ left_grid_sizer->Add(k_value_failed, 1, wxEXPAND);
+ }
+ }
+ else {
+ if (right_first_add_item) {
+ wxString title_name = right_sizer->GetStaticBox()->GetLabel();
+ title_name += " - ";
+ title_name += get_nozzle_volume_type_name(item.nozzle_volume_type);
+ right_sizer->GetStaticBox()->SetLabel(title_name);
+ right_first_add_item = false;
+ }
+ right_grid_sizer->Add(tray_title, 1, wxEXPAND);
+
+ if (comboBox_tray_name->IsShown()) {
+ right_grid_sizer->Add(comboBox_tray_name, 1, wxEXPAND);
+ } else {
+ right_grid_sizer->Add(tray_name_failed, 1, wxEXPAND);
+ }
+
+ if (k_value->IsShown()) {
+ right_grid_sizer->Add(k_value, 1, wxEXPAND);
+ } else {
+ right_grid_sizer->Add(k_value_failed, 1, wxEXPAND);
+ }
+ }
+ }
+
+ if (left_first_add_item)
+ left_sizer->Show(false);
+ if (right_first_add_item)
+ right_sizer->Show(false);
+
+ m_grid_panel->SetSizer(grid_sizer, true);
+ m_grid_panel->Bind(wxEVT_LEFT_DOWN, [this](auto &e) { SetFocusIgnoringChildren(); });
+
+ if (part_failed) {
+ m_part_failed_panel->Show();
+ m_complete_text_panel->Show();
+ if (m_is_all_failed) {
+ m_complete_text_panel->Hide();
+ }
+ } else {
+ m_complete_text_panel->Show();
+ m_part_failed_panel->Hide();
+ }
+
+ wxGetApp().UpdateDarkUIWin(this);
+
+ Layout();
+}
+
CaliPASaveManualPanel::CaliPASaveManualPanel(
wxWindow* parent,
wxWindowID id,
@@ -521,7 +752,7 @@ void CaliPASaveManualPanel::create_panel(wxWindow* parent)
}
void CaliPASaveManualPanel::set_save_img() {
- if (wxGetApp().app_config->get_language_code() == "zh-cn") {
+ if (wxGetApp().app_config->get_language_code() == "zh-cn") {
m_picture_panel->set_bmp(ScalableBitmap(this, "fd_calibration_manual_result_CN", 330));
} else {
m_picture_panel->set_bmp(ScalableBitmap(this, "fd_calibration_manual_result", 330));
@@ -778,19 +1009,19 @@ void CaliSavePresetValuePanel::set_save_name_title(const wxString& title) {
m_save_name_title->SetLabel(title);
}
-void CaliSavePresetValuePanel::get_value(double& value)
-{
- m_input_value->GetTextCtrl()->GetValue().ToDouble(&value);
+void CaliSavePresetValuePanel::get_value(double& value)
+{
+ m_input_value->GetTextCtrl()->GetValue().ToDouble(&value);
}
void CaliSavePresetValuePanel::get_save_name(std::string& name)
-{
- name = into_u8(m_input_name->GetTextCtrl()->GetValue());
+{
+ name = into_u8(m_input_name->GetTextCtrl()->GetValue());
}
void CaliSavePresetValuePanel::set_save_name(const std::string& name)
-{
- m_input_name->GetTextCtrl()->SetValue(name);
+{
+ m_input_name->GetTextCtrl()->SetValue(name);
}
void CaliSavePresetValuePanel::msw_rescale()
@@ -1307,7 +1538,7 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent)
}
void CalibrationFlowCoarseSavePage::set_save_img() {
- if (wxGetApp().app_config->get_language_code() == "zh-cn") {
+ if (wxGetApp().app_config->get_language_code() == "zh-cn") {
m_picture_panel->set_bmp(ScalableBitmap(this, "flow_rate_calibration_coarse_result_CN", 350));
} else {
m_picture_panel->set_bmp(ScalableBitmap(this, "flow_rate_calibration_coarse_result", 350));
@@ -1491,7 +1722,7 @@ void CalibrationFlowFineSavePage::create_page(wxWindow* parent)
}
void CalibrationFlowFineSavePage::set_save_img() {
- if (wxGetApp().app_config->get_language_code() == "zh-cn") {
+ if (wxGetApp().app_config->get_language_code() == "zh-cn") {
m_picture_panel->set_bmp(ScalableBitmap(this, "flow_rate_calibration_fine_result_CN", 350));
} else {
m_picture_panel->set_bmp(ScalableBitmap(this, "flow_rate_calibration_fine_result", 350));
diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.hpp b/src/slic3r/GUI/CalibrationWizardSavePage.hpp
index 6b76b22acb..aa63a75a18 100644
--- a/src/slic3r/GUI/CalibrationWizardSavePage.hpp
+++ b/src/slic3r/GUI/CalibrationWizardSavePage.hpp
@@ -98,6 +98,9 @@ public:
bool get_result(std::vector& out_result);
bool is_all_failed() { return m_is_all_failed; }
+protected:
+ void sync_cali_result_for_multi_extruder(const std::vector &cali_result, const std::vector &history_result);
+
protected:
wxBoxSizer* m_top_sizer;
wxPanel* m_complete_text_panel;
@@ -218,7 +221,7 @@ public:
bool is_all_failed() { return m_is_all_failed; }
virtual bool Show(bool show = true) override;
-
+
void msw_rescale() override;
protected:
diff --git a/src/slic3r/GUI/CalibrationWizardStartPage.cpp b/src/slic3r/GUI/CalibrationWizardStartPage.cpp
index 01e641d678..3622d290ee 100644
--- a/src/slic3r/GUI/CalibrationWizardStartPage.cpp
+++ b/src/slic3r/GUI/CalibrationWizardStartPage.cpp
@@ -168,9 +168,8 @@ void CalibrationPAStartPage::on_device_connected(MachineObject* obj)
m_action_panel->bind_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
}
- // is support auto cali
- bool is_support_pa_auto = (obj->home_flag >> 16 & 1) == 1;
- if (!is_support_pa_auto) {
+
+ if (!obj->is_support_pa_calibration) {
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
}
}
@@ -319,8 +318,7 @@ void CalibrationFlowRateStartPage::on_device_connected(MachineObject* obj)
}
//is support auto cali
- bool is_support_flow_rate_auto = (obj->home_flag >> 15 & 1) == 1;
- if (!is_support_flow_rate_auto) {
+ if (!obj->is_support_flow_calibration) {
m_action_panel->show_button(CaliPageActionType::CALI_ACTION_AUTO_CALI, false);
}
}
diff --git a/src/slic3r/GUI/CloneDialog.cpp b/src/slic3r/GUI/CloneDialog.cpp
new file mode 100644
index 0000000000..8688317f42
--- /dev/null
+++ b/src/slic3r/GUI/CloneDialog.cpp
@@ -0,0 +1,115 @@
+#include "CloneDialog.hpp"
+
+#include "GUI_App.hpp"
+#include "MainFrame.hpp"
+
+namespace Slic3r { namespace GUI {
+
+CloneDialog::CloneDialog(wxWindow *parent)
+ : DPIDialog(parent ? parent : static_cast(wxGetApp().mainframe), wxID_ANY, _L("Clone"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
+{
+ SetBackgroundColour(*wxWHITE);
+ SetFont(Label::Body_14);
+
+ m_plater = wxGetApp().plater();
+ m_config = wxGetApp().app_config;
+ m_cancel_process = false;
+
+ auto v_sizer = new wxBoxSizer(wxVERTICAL);
+ auto f_sizer = new wxFlexGridSizer(2, 2, FromDIP(4) , FromDIP(20));
+
+ auto count_label = new wxStaticText(this, wxID_ANY, _L("Number of copies:"), wxDefaultPosition, wxDefaultSize, 0);
+ m_count_spin = new SpinInput(this, wxEmptyString, "", wxDefaultPosition, wxSize(FromDIP(120), -1), wxSP_ARROW_KEYS, 1, 1000, 1);
+ m_count_spin->GetTextCtrl()->SetFocus();
+ f_sizer->Add(count_label , 0, wxEXPAND | wxALIGN_CENTER_VERTICAL);
+ f_sizer->Add(m_count_spin, 0, wxALIGN_CENTER_VERTICAL);
+
+ auto arrange_label = new wxStaticText(this, wxID_ANY, _L("Auto arrange plate after cloning") + ":", wxDefaultPosition, wxDefaultSize, 0);
+ arrange_label->Wrap(FromDIP(300));
+ m_arrange_cb = new ::CheckBox(this);
+ m_arrange_cb->SetValue(m_config->get("auto_arrange") == "true");
+ f_sizer->Add(arrange_label, 0, wxEXPAND | wxALIGN_CENTER_VERTICAL);
+ f_sizer->Add(m_arrange_cb , 0, wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM, FromDIP(5));
+
+ v_sizer->Add(f_sizer, 1, wxEXPAND | wxALL, FromDIP(10));
+
+ auto bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
+ m_progress = new ProgressBar(this, wxID_ANY, 100);
+ m_progress->SetHeight(FromDIP(8));
+ m_progress->SetMaxSize(wxSize(-1, FromDIP(8)));
+ m_progress->SetProgressForedColour(StateColor::darkModeColorFor(wxColour("#DFDFDF")));
+ m_progress->SetDoubleBuffered(true);
+ m_progress->Hide();
+ bottom_sizer->Add(m_progress, 2, wxEXPAND | wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10));
+
+ // used next button to get automatic left alignment
+ // will add a left_align_first_n parameter to DialogButtons. current method not good
+ auto dlg_btns = new DialogButtons(this, {"Next", "OK", "Cancel"});
+
+ dlg_btns->GetNEXT()->SetLabel(_L("Fill"));
+ dlg_btns->GetNEXT()->SetToolTip(_L("Fill bed with copies"));
+ dlg_btns->GetNEXT()->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {
+ m_plater->fill_bed_with_instances();
+ EndModal(wxID_OK);
+ });
+
+ dlg_btns->GetOK()->Bind(wxEVT_BUTTON, [this, dlg_btns, v_sizer](wxCommandEvent &e) {
+
+ m_count_spin->Disable(); // also ensures input box value applied with wxEVT_KILL_FOCUS
+ m_arrange_cb->Disable();
+
+ m_count = m_count_spin->GetValue();
+
+ m_progress->Show();
+
+ dlg_btns->GetOK()->Hide();
+ dlg_btns->GetNEXT()->Hide();
+
+ this->Layout();
+ v_sizer->Fit(this);
+ Refresh();
+
+ Selection& sel = m_plater->canvas3D()->get_selection();
+ m_plater->take_snapshot(std::string("Selection-clone"));
+ m_plater->Freeze(); // Better to stop rendering canvas while processing
+ sel.copy_to_clipboard();
+ for (int i = 0; i < m_count; i++) { // same method with Selection::clone()
+ m_progress->SetValue(static_cast(static_cast(i) / m_count * 100)); // pass 0 / 100
+ sel.paste_from_clipboard();
+ if(m_cancel_process){
+ m_plater->undo();
+ return;
+ }
+ wxYield(); // Allow event loop to process updates
+ }
+
+ if(!m_cancel_process){
+ if (m_arrange_cb->GetValue()){
+ m_plater->set_prepare_state(Job::PREPARE_STATE_MENU);
+ m_plater->arrange();
+ }
+ m_plater->Thaw();
+ EndModal(wxID_OK);
+ }
+ });
+
+ dlg_btns->GetCANCEL()->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {
+ m_cancel_process = true;
+ if(m_plater->IsFrozen())
+ m_plater->Thaw();
+ EndModal(wxID_CANCEL);
+ });
+
+ bottom_sizer->Add(dlg_btns, 1, wxEXPAND);
+
+ v_sizer->Add(bottom_sizer, 0, wxEXPAND);
+
+ this->SetSizer(v_sizer);
+ this->Layout();
+ v_sizer->Fit(this);
+ wxGetApp().UpdateDlgDarkUI(this);
+}
+
+CloneDialog::~CloneDialog() {}
+
+}} // namespace Slic3r::GUI
\ No newline at end of file
diff --git a/src/slic3r/GUI/CloneDialog.hpp b/src/slic3r/GUI/CloneDialog.hpp
new file mode 100644
index 0000000000..b15e0b9757
--- /dev/null
+++ b/src/slic3r/GUI/CloneDialog.hpp
@@ -0,0 +1,36 @@
+#ifndef slic3r_GUI_SingleChoice_hpp_
+#define slic3r_GUI_SingleChoice_hpp_
+
+#include "GUI_Utils.hpp"
+#include "Plater.hpp"
+#include "Selection.hpp"
+
+#include "Widgets/Button.hpp"
+#include "Widgets/SpinInput.hpp"
+#include "Widgets/DialogButtons.hpp"
+#include "Widgets/CheckBox.hpp"
+#include "Widgets/ProgressBar.hpp"
+
+namespace Slic3r { namespace GUI {
+
+class CloneDialog : public DPIDialog
+{
+public:
+ CloneDialog(wxWindow *parent = nullptr);
+ ~CloneDialog();
+
+private:
+ SpinInput* m_count_spin;
+ int m_count;
+ CheckBox* m_arrange_cb;
+ Plater* m_plater;
+ ProgressBar* m_progress;
+ AppConfig* m_config;
+ bool m_cancel_process;
+
+ void on_dpi_changed(const wxRect &suggested_rect) override {}
+
+};
+}} // namespace Slic3r::GUI
+
+#endif
\ No newline at end of file
diff --git a/src/slic3r/GUI/ConfigManipulation.cpp b/src/slic3r/GUI/ConfigManipulation.cpp
index 134538137d..aad4c9be30 100644
--- a/src/slic3r/GUI/ConfigManipulation.cpp
+++ b/src/slic3r/GUI/ConfigManipulation.cpp
@@ -294,6 +294,7 @@ void ConfigManipulation::update_print_fff_config(DynamicPrintConfig* config, con
}
double sparse_infill_density = config->option("sparse_infill_density")->value;
+ int fill_multiline = config->option("fill_multiline")->value;
auto timelapse_type = config->opt_enum("timelapse_type");
if (!is_plate_config &&
@@ -546,6 +547,20 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
bool have_combined_infill = config->opt_bool("infill_combination") && have_infill;
toggle_line("infill_combination_max_layer_height", have_combined_infill);
+ // Infill patterns that support multiline infill.
+ InfillPattern pattern = config->opt_enum("sparse_infill_pattern");
+ bool have_multiline_infill_pattern = pattern == ipGyroid || pattern == ipGrid || pattern == ipRectilinear || pattern == ipTpmsD || pattern == ipCrossHatch || pattern == ipHoneycomb || pattern == ip2DLattice || pattern == ip2DHoneycomb ||
+ pattern == ipCubic || pattern == ipStars || pattern == ipAlignedRectilinear || pattern == ipLightning || pattern == ip3DHoneycomb || pattern == ipAdaptiveCubic || pattern == ipSupportCubic;
+ toggle_line("fill_multiline", have_multiline_infill_pattern);
+
+ // If the infill pattern does not support multiline infill, set fill_multiline to 1.
+ if (!have_multiline_infill_pattern) {
+ DynamicPrintConfig new_conf = *config;
+ new_conf.set_key_value("fill_multiline", new ConfigOptionInt(1));
+ apply(config, &new_conf);
+ }
+
+ // Hide infill anchor max if sparse_infill_pattern is not line or if sparse_infill_pattern is line but infill_anchor_max is 0.
bool infill_anchor = config->opt_enum("sparse_infill_pattern") != ipLine;
toggle_field("infill_anchor_max",infill_anchor);
@@ -576,6 +591,8 @@ void ConfigManipulation::toggle_print_fff_options(DynamicPrintConfig *config, co
bool has_solid_infill = has_top_shell || has_bottom_shell;
toggle_field("top_surface_pattern", has_top_shell);
toggle_field("bottom_surface_pattern", has_bottom_shell);
+ toggle_field("top_surface_density", has_top_shell);
+ toggle_field("bottom_surface_density", has_bottom_shell);
for (auto el : { "infill_direction", "sparse_infill_line_width",
"sparse_infill_speed", "bridge_speed", "internal_bridge_speed", "bridge_angle", "internal_bridge_angle",
diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp
index a42af2664c..6d926c135d 100644
--- a/src/slic3r/GUI/DeviceManager.cpp
+++ b/src/slic3r/GUI/DeviceManager.cpp
@@ -24,6 +24,8 @@
#define MINUTE_30 1800000 //ms
#define TIME_OUT 5000 //ms
+#define ORCA_NETWORK_DEBUG
+
namespace pt = boost::property_tree;
float string_to_float(const std::string& str_value) {
@@ -32,50 +34,6 @@ float string_to_float(const std::string& str_value) {
return value;
}
-const int PRINTING_STAGE_COUNT = 36;
-std::string PRINTING_STAGE_STR[PRINTING_STAGE_COUNT] = {
- "printing",
- "bed_leveling",
- "heatbed_preheating",
- "xy_mech_mode_sweep",
- "change_material",
- "m400_pause",
- "filament_runout_pause",
- "hotend_heating",
- "extrude_compensation_scan",
- "bed_scan",
- "first_layer_scan",
- "be_surface_typt_idetification",
- "scanner_extrinsic_para_cali",
- "toohead_homing",
- "nozzle_tip_cleaning",
- "extruder_temp_protect_cali",
- "user_pause",
- "toolhead_shell_off_pause",
- "scanner_laser_para_cali",
- "extruder_absolute_flow_cali",
- "hotend_temperature_error_pause", // 20
- "heated_bed_temperature_error_pause",
- "filament_unloading",
- "skip_step_pause",
- "filament_loading",
- "motor_noise_calibration",
- "ams_lost_pause",
- "heat_break_fan_pause",
- "chamber_temperature_control_error_pause",
- "chamber_cooling",
- "user_insert_gcode_pause",
- "motor_noise_showoff",
- "nozzle_filament_covered_detected_pause",
- "cutter_error_pause",
- "first_layer_error_pause",
- "nozzle_clog_pause"
- };
-
-
-
-
-
wxString get_stage_string(int stage)
{
switch(stage) {
@@ -176,6 +134,57 @@ std::string to_string_nozzle_diameter(float nozzle_diameter)
return "0";
}
+void sanitizeToUtf8(std::string& str) {
+ std::string result;
+ size_t i = 0;
+
+ while (i < str.size()) {
+ unsigned char c = str[i];
+ size_t remainingBytes = 0;
+ bool valid = true;
+
+ if ((c & 0x80) == 0x00) { // 1-byte character (ASCII)
+ remainingBytes = 0;
+ }
+ else if ((c & 0xE0) == 0xC0) { // 2-byte character
+ remainingBytes = 1;
+ }
+ else if ((c & 0xF0) == 0xE0) { // 3-byte character
+ remainingBytes = 2;
+ }
+ else if ((c & 0xF8) == 0xF0) { // 4-byte character
+ remainingBytes = 3;
+ }
+ else {
+ valid = false; // Invalid first byte
+ }
+
+ if (valid && i + remainingBytes < str.size()) {
+ for (size_t j = 1; j <= remainingBytes; ++j) {
+ if ((str[i + j] & 0xC0) != 0x80) {
+ valid = false; // Invalid continuation byte
+ break;
+ }
+ }
+ }
+ else {
+ valid = false; // Truncated character
+ }
+
+ if (valid) {
+ // Append valid UTF-8 character
+ result.append(str, i, remainingBytes + 1);
+ i += remainingBytes + 1;
+ }
+ else {
+ // Replace invalid character with space
+ result += ' ';
+ ++i; // Skip the invalid byte
+ }
+ }
+ str = std::move(result);
+}
+
namespace Slic3r {
/* Common Functions */
@@ -194,6 +203,43 @@ void split_string(std::string s, std::vector& v) {
v.push_back(t);
}
+wxString generate_nozzle_id(NozzleVolumeType nozzle_type, const std::string& diameter)
+{
+ // HS00-0.4
+ std::string nozzle_id = "H";
+ switch (nozzle_type) {
+ case NozzleVolumeType::nvtNormal: {
+ nozzle_id += "S";
+ break;
+ }
+ case NozzleVolumeType::nvtBigTraffic: {
+ nozzle_id += "H";
+ break;
+ }
+ default:
+ nozzle_id += "H";
+ break;
+ }
+ nozzle_id += "00";
+ nozzle_id += "-";
+ nozzle_id += diameter;
+ return nozzle_id;
+}
+
+NozzleVolumeType convert_to_nozzle_type(const std::string &str)
+{
+ if (str.size() < 8) {
+ assert(false);
+ return NozzleVolumeType::nvtNormal;
+ }
+ NozzleVolumeType res = NozzleVolumeType::nvtNormal;
+ if (str[1] == 'S')
+ res = NozzleVolumeType::nvtNormal;
+ else if (str[1] == 'H')
+ res = NozzleVolumeType::nvtBigTraffic;
+ return res;
+}
+
PrinterArch get_printer_arch_by_str(std::string arch_str)
{
if (arch_str == "i3") {
@@ -492,7 +538,7 @@ bool MachineObject::is_lan_mode_printer() const
PrinterSeries MachineObject::get_printer_series() const
{
std::string series = DeviceManager::get_printer_series(printer_type);
- if (series == "series_x1")
+ if (series == "series_x1" || series == "series_o")
return PrinterSeries::SERIES_X1;
else if (series == "series_p1p")
return PrinterSeries::SERIES_P1P;
@@ -536,8 +582,6 @@ MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string
reset();
/* temprature fields */
- nozzle_temp = 0.0f;
- nozzle_temp_target = 0.0f;
bed_temp = 0.0f;
bed_temp_target = 0.0f;
chamber_temp = 0.0f;
@@ -552,9 +596,7 @@ MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string
is_ams_need_update = false;
ams_insert_flag = false;
ams_power_on_flag = false;
- ams_support_use_ams = false;
ams_calibrate_remain_flag = false;
- ams_humidity = 5;
/* signals */
wifi_signal = "";
@@ -584,6 +626,15 @@ MachineObject::MachineObject(NetworkAgent* agent, std::string name, std::string
printing_speed_lvl = PrintingSpeedLevel::SPEED_LEVEL_INVALID;
has_ipcam = true; // default true
+
+ m_extder_data.current_extder_id = MAIN_NOZZLE_ID;
+ m_extder_data.target_extder_id = MAIN_NOZZLE_ID;
+ m_extder_data.total_extder_count = 1;
+ Extder nozzle;
+ nozzle.id = MAIN_NOZZLE_ID;
+ nozzle.nozzle_id = MAIN_NOZZLE_ID;
+ nozzle.target_nozzle_id = MAIN_NOZZLE_ID;
+ m_extder_data.extders.push_back(nozzle);
}
MachineObject::~MachineObject()
@@ -662,7 +713,7 @@ bool MachineObject::is_extrusion_cali_finished()
if (diff.count() < EXTRUSION_OMIT_TIME) {
return false;
}
-
+
if (boost::contains(m_gcode_file, "extrusion_cali")
&& this->mc_print_percent == 100)
return true;
@@ -672,24 +723,44 @@ bool MachineObject::is_extrusion_cali_finished()
void MachineObject::_parse_tray_now(std::string tray_now)
{
- m_tray_now = tray_now;
if (tray_now.empty()) {
return;
} else {
try {
int tray_now_int = atoi(tray_now.c_str());
- if (tray_now_int >= 0 && tray_now_int < 16) {
- m_ams_id = std::to_string(tray_now_int >> 2);
- m_tray_id = std::to_string(tray_now_int & 0x3);
- }
- else if (tray_now_int == 255) {
+
+ if (tray_now_int == 255) {
m_ams_id = "0";
m_tray_id = "0";
+ m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = "";
+ m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = "";
+
+ if (m_tray_now == std::to_string(255)) {
+ m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = std::to_string(255);
+ m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = "0";
+ }
+ }
+ else if (tray_now_int == 254) {
+ m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = std::to_string(254);
+ m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = "0";
+ }
+ else {
+ if (tray_now_int >= 0x80 && tray_now_int <= 0x87) {
+ m_ams_id = std::to_string(tray_now_int);
+ } else {
+ m_ams_id = std::to_string(tray_now_int >> 2);
+ }
+
+ m_tray_id = std::to_string(tray_now_int & 0x3);
+ m_extder_data.extders[MAIN_NOZZLE_ID].snow.ams_id = m_ams_id;
+ m_extder_data.extders[MAIN_NOZZLE_ID].snow.slot_id = m_tray_id;
}
}
catch(...) {
}
}
+
+ m_tray_now = tray_now;
}
Ams *MachineObject::get_curr_Ams()
@@ -810,6 +881,9 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std
// tray_index : tray_color
std::map tray_filaments;
for (auto ams = amsList.begin(); ams != amsList.end(); ams++) {
+
+ std::string ams_id = ams->second->id;
+
for (auto tray = ams->second->trayList.begin(); tray != ams->second->trayList.end(); tray++) {
int ams_id = atoi(ams->first.c_str());
int tray_id = atoi(tray->first.c_str());
@@ -828,6 +902,11 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std
info.filament_id = tray->second->setting_id;
info.ctype = tray->second->ctype;
info.colors = tray->second->cols;
+
+ /*for new ams mapping*/
+ info.ams_id = ams->first.c_str();
+ info.slot_id = tray->first.c_str();
+
tray_filaments.emplace(std::make_pair(tray_index, info));
}
}
@@ -835,27 +914,29 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std
// tray info list
std::vector tray_info_list;
- for (auto it = amsList.begin(); it != amsList.end(); it++) {
- for (int i = 0; i < 4; i++) {
+ int flament_index_id = 0;
+ for (auto ams = amsList.begin(); ams != amsList.end(); ams++) {
+ for (auto tray = ams->second->trayList.begin(); tray != ams->second->trayList.end(); tray++) {
+
FilamentInfo info;
- auto tray_it = it->second->trayList.find(std::to_string(i));
- if (tray_it != it->second->trayList.end()) {
- info.id = atoi(tray_it->first.c_str()) + atoi(it->first.c_str()) * 4;
- info.tray_id = atoi(tray_it->first.c_str()) + atoi(it->first.c_str()) * 4;
- info.color = tray_it->second->color;
- info.type = tray_it->second->get_filament_type();
- info.ctype = tray_it->second->ctype;
- info.colors = tray_it->second->cols;
- }
- else {
- info.id = -1;
- info.tray_id = -1;
- }
+ info.id = flament_index_id;
+ info.tray_id = flament_index_id;
+ info.color = tray->second->color;
+ info.type = tray->second->get_filament_type();
+ info.ctype = tray->second->ctype;
+ info.colors = tray->second->cols;
+
+
+ /*for new ams mapping*/
+ info.ams_id = ams->second->id;
+ info.slot_id = tray->second->id;
+
tray_info_list.push_back(info);
+ flament_index_id++;
}
}
-
+
// is_support_ams_mapping
if (!is_support_ams_mapping()) {
BOOST_LOG_TRIVIAL(info) << "ams_mapping: do not support, use order mapping";
@@ -960,7 +1041,7 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std
}
continue;
}
-
+
if (distance_map[i][j].is_same_color
&& distance_map[i][j].is_type_match) {
if (min_val > distance_map[i][j].distance) {
@@ -968,7 +1049,7 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std
min_val = distance_map[i][j].distance;
picked_src_idx = i;
picked_tar_idx = j;
- }
+ }
else if (min_val == distance_map[i][j].distance&& filaments[picked_src_idx].filament_id!= tray_filaments[picked_tar_idx].filament_id && filaments[i].filament_id == tray_filaments[j].filament_id) {
picked_src_idx = i;
@@ -987,6 +1068,11 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std
result[picked_src_idx].filament_id = tray->second.filament_id;
result[picked_src_idx].ctype = tray->second.ctype;
result[picked_src_idx].colors = tray->second.colors;
+
+
+ /*for new ams mapping*/
+ result[picked_src_idx].ams_id = tray->second.ams_id;
+ result[picked_src_idx].slot_id = tray->second.slot_id;
}
else {
FilamentInfo info;
@@ -1028,6 +1114,10 @@ int MachineObject::ams_filament_mapping(std::vector filaments, std
result[i].type = tray_info_list[i].type;
result[i].ctype = tray_info_list[i].ctype;
result[i].colors = tray_info_list[i].colors;
+
+ /*for new ams mapping*/
+ result[i].ams_id = tray_info_list[i].ams_id;
+ result[i].slot_id = tray_info_list[i].slot_id;
}
}
}
@@ -1117,6 +1207,17 @@ void MachineObject::reset_mapping_result(std::vector& result)
}
}
+bool MachineObject::is_main_extruder_on_left() const
+{
+ // only means the extruder is on the left hand when extruder id is 0
+ return false;
+}
+
+bool MachineObject::is_multi_extruders() const
+{
+ return m_extder_data.total_extder_count > 1;
+}
+
bool MachineObject::is_bbl_filament(std::string tag_uid)
{
if (tag_uid.empty())
@@ -1255,9 +1356,25 @@ wxString MachineObject::get_upgrade_result_str(int err_code)
std::map MachineObject::get_ams_version()
{
+ std::vector multi_tray_ams_type = {"ams", "n3f"};
std::map result;
- for (int i = 0; i < 4; i++) {
- std::string ams_id = "ams/" + std::to_string(i);
+ for (int i = 0; i < 8; i++) {
+ std::string ams_id;
+ for (auto type : multi_tray_ams_type)
+ {
+ ams_id = type + "/" + std::to_string(i);
+ auto it = module_vers.find(ams_id);
+ if (it != module_vers.end()) {
+ result.emplace(std::pair(i, it->second));
+ }
+ }
+ }
+
+ std::string single_tray_ams_type = "n3s";
+ int n3s_start_id = 128;
+ for (int i = n3s_start_id; i < n3s_start_id + 8; i++) {
+ std::string ams_id;
+ ams_id = single_tray_ams_type + "/" + std::to_string(i);
auto it = module_vers.find(ams_id);
if (it != module_vers.end()) {
result.emplace(std::pair(i, it->second));
@@ -1266,6 +1383,24 @@ std::map MachineObject::get_ams_version()
return result;
}
+void MachineObject::store_version_info(const ModuleVersionInfo& info)
+{
+ if (info.isAirPump())
+ {
+ air_pump_version_info = info;
+ }
+ else if (info.isLaszer())
+ {
+ laser_version_info = info;
+ }
+ else if (info.isCuttingModule())
+ {
+ cutting_module_version_info = info;
+ }
+
+ module_vers.emplace(info.name, info);
+}
+
bool MachineObject::is_system_printing()
{
if (is_in_calibration() && is_in_printing_status(print_status))
@@ -1375,7 +1510,7 @@ void MachineObject::parse_state_changed_event()
void MachineObject::parse_status(int flag)
{
- is_220V_voltage = ((flag >> 3) & 0x1) != 0;
+ is_220V_voltage = ((flag >> 3) & 0x1) != 0;
if (xcam_auto_recovery_hold_count > 0)
xcam_auto_recovery_hold_count--;
else {
@@ -1385,41 +1520,46 @@ void MachineObject::parse_status(int flag)
camera_recording = ((flag >> 5) & 0x1) != 0;
ams_calibrate_remain_flag = ((flag >> 7) & 0x1) != 0;
+ sdcard_state = MachineObject::SdcardState(get_flag_bits(flag, 8, 2));
+
if (ams_print_option_count > 0)
ams_print_option_count--;
else {
ams_auto_switch_filament_flag = ((flag >> 10) & 0x1) != 0;
}
+ is_support_flow_calibration = ((flag >> 15) & 0x1) != 0;
+ is_support_pa_calibration = ((flag >> 16) & 0x1) != 0;
+
if (xcam_prompt_sound_hold_count > 0)
xcam_prompt_sound_hold_count--;
else {
xcam_allow_prompt_sound = ((flag >> 17) & 0x1) != 0;
}
- if (((flag >> 18) & 0x1) != 0) {
- is_support_prompt_sound = true;
- }
-
+ is_support_prompt_sound = ((flag >> 18) & 0x1) != 0;
is_support_filament_tangle_detect = ((flag >> 19) & 0x1) != 0;
- is_support_user_preset = ((flag >> 22) & 0x1) != 0;
+
if (xcam_filament_tangle_detect_count > 0)
xcam_filament_tangle_detect_count--;
else {
xcam_filament_tangle_detect = ((flag >> 20) & 0x1) != 0;
}
- if(!is_support_motor_noise_cali){
+ /*if(!is_support_motor_noise_cali){
is_support_motor_noise_cali = ((flag >> 21) & 0x1) != 0;
- }
+ }*/
+ is_support_motor_noise_cali = ((flag >> 21) & 0x1) != 0;
+
+ is_support_user_preset = ((flag >> 22) & 0x1) != 0;
is_support_nozzle_blob_detection = ((flag >> 25) & 0x1) != 0;
nozzle_blob_detection_enabled = ((flag >> 24) & 0x1) != 0;
is_support_air_print_detection = ((flag >> 29) & 0x1) != 0;
ams_air_print_status = ((flag >> 28) & 0x1) != 0;
-
- if (!is_support_p1s_plus) {
+
+ /*if (!is_support_p1s_plus) {
auto supported_plus = ((flag >> 27) & 0x1) != 0;
auto installed_plus = ((flag >> 26) & 0x1) != 0;
@@ -1429,9 +1569,10 @@ void MachineObject::parse_status(int flag)
else {
is_support_p1s_plus = false;
}
- }
+ }*/
- sdcard_state = MachineObject::SdcardState((flag >> 8) & 0x11);
+ is_support_upgrade_kit = ((flag >> 27) & 0x1) != 0;
+ installed_upgrade_kit = ((flag >> 26) & 0x1) != 0;
is_support_agora = ((flag >> 30) & 0x1) != 0;
if (is_support_agora)
@@ -1481,11 +1622,6 @@ bool MachineObject::is_sdcard_printing()
return false;
}
-bool MachineObject::has_sdcard()
-{
- return (sdcard_state == MachineObject::SdcardState::HAS_SDCARD_NORMAL);
-}
-
MachineObject::SdcardState MachineObject::get_sdcard_state()
{
return sdcard_state;
@@ -1506,6 +1642,21 @@ bool MachineObject::is_recording()
return camera_recording;
}
+int MachineObject::get_liveview_remote()
+{
+ if (is_support_agora) {
+ return liveview_remote == LVR_None ? LVR_Agora : liveview_remote == LVR_Tutk ? LVR_TutkAgora : liveview_remote;
+ }
+ return liveview_remote;
+}
+
+int MachineObject::get_file_remote()
+{
+ if (is_support_agora)
+ file_remote = file_remote == FR_None ? FR_Agora : file_remote == FR_Tutk ? FR_TutkAgora : file_remote;
+ return file_remote;
+}
+
std::string MachineObject::parse_version()
{
auto ota_version = module_vers.find("ota");
@@ -1549,7 +1700,7 @@ int MachineObject::command_get_access_code() {
json j;
j["system"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
j["system"]["command"] = "get_access_code";
-
+
return this->publish_json(j.dump());
}
@@ -1680,6 +1831,15 @@ int MachineObject::command_go_home()
return this->publish_gcode("G28 \n");
}
+int MachineObject::command_go_home2()
+{
+ BOOST_LOG_TRIVIAL(info) << "New protocol of command_go_home2";
+ json j;
+ j["print"]["command"] = "back_to_center";
+ j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
+ return this->publish_json(j.dump());
+}
+
int MachineObject::command_control_fan(FanType fan_type, bool on_off)
{
std::string gcode = (boost::format("M106 P%1% S%2% \n") % (int)fan_type % (on_off ? 255 : 0)).str();
@@ -1751,52 +1911,78 @@ int MachineObject::command_set_nozzle(int temp)
int MachineObject::command_set_chamber(int temp)
{
json j;
- j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
+ j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
j["print"]["command"] = "set_ctt";
j["print"]["ctt_val"] = temp;
return this->publish_json(j.dump(), 1);
}
-int MachineObject::command_ams_switch(int tray_index, int old_temp, int new_temp)
-{
- BOOST_LOG_TRIVIAL(trace) << "ams_switch to " << tray_index << " with temp: " << old_temp << ", " << new_temp;
- if (old_temp < 0) old_temp = FILAMENT_DEF_TEMP;
- if (new_temp < 0) new_temp = FILAMENT_DEF_TEMP;
+//int MachineObject::command_ams_switch(int tray_index, int old_temp, int new_temp)
+//{
+// BOOST_LOG_TRIVIAL(trace) << "ams_switch to " << tray_index << " with temp: " << old_temp << ", " << new_temp;
+// if (old_temp < 0) old_temp = FILAMENT_DEF_TEMP;
+// if (new_temp < 0) new_temp = FILAMENT_DEF_TEMP;
+//
+// std::string gcode = "";
+// int result = 0;
+//
+// //command
+// if (is_support_command_ams_switch) {
+// command_ams_change_filament(tray_index, old_temp, new_temp);
+// }
+// else {
+// std::string gcode = "";
+// if (tray_index == 255) {
+// gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode");
+// }
+// else {
+// // include VIRTUAL_TRAY_ID
+// gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode");
+// boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index));
+// boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp));
+// }
+//
+// result = this->publish_gcode(gcode);
+// }
+//
+// return result;
+//}
- std::string gcode = "";
- int result = 0;
-
- //command
- if (is_support_command_ams_switch) {
- command_ams_change_filament(tray_index, old_temp, new_temp);
- }
- else {
- std::string gcode = "";
- if (tray_index == 255) {
- gcode = DeviceManager::load_gcode(printer_type, "ams_unload.gcode");
- }
- else {
- // include VIRTUAL_TRAY_ID
- gcode = DeviceManager::load_gcode(printer_type, "ams_load.gcode");
- boost::replace_all(gcode, "[next_extruder]", std::to_string(tray_index));
- boost::replace_all(gcode, "[new_filament_temp]", std::to_string(new_temp));
- }
-
- result = this->publish_gcode(gcode);
- }
-
- return result;
-}
-
-int MachineObject::command_ams_change_filament(int tray_id, int old_temp, int new_temp)
+int MachineObject::command_ams_change_filament(bool load, std::string ams_id, std::string slot_id, int old_temp, int new_temp)
{
json j;
- j["print"]["command"] = "ams_change_filament";
- j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
- j["print"]["target"] = tray_id;
- j["print"]["curr_temp"] = old_temp;
- j["print"]["tar_temp"] = new_temp;
+ try {
+ auto tray_id = 0;
+ if (ams_id < "16") {
+ tray_id = atoi(ams_id.c_str()) * 4 + atoi(slot_id.c_str());
+ }
+ // TODO: Orca hack
+ if (ams_id == "254")
+ ams_id = "255";
+
+
+ j["print"]["command"] = "ams_change_filament";
+ j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
+ j["print"]["curr_temp"] = old_temp;
+ j["print"]["tar_temp"] = new_temp;
+ j["print"]["ams_id"] = atoi(ams_id.c_str());
+
+ if (!load) {
+ j["print"]["target"] = 255;
+ j["print"]["slot_id"] = 255; // the new protocol to mark unload
+
+ } else {
+ if (tray_id == 0) {
+ j["print"]["target"] = atoi(ams_id.c_str());
+ } else {
+ j["print"]["target"] = tray_id;
+ }
+
+ j["print"]["slot_id"] = atoi(slot_id.c_str());
+ }
+ } catch (const std::exception &) {}
+
return this->publish_json(j.dump());
}
@@ -1818,28 +2004,6 @@ int MachineObject::command_ams_user_settings(int ams_id, bool start_read_opt, bo
return this->publish_json(j.dump());
}
-int MachineObject::command_ams_user_settings(int ams_id, AmsOptionType op, bool value)
-{
- json j;
- j["print"]["command"] = "ams_user_setting";
- j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
- j["print"]["ams_id"] = ams_id;
- if (op == AmsOptionType::AMS_OP_STARTUP_READ) {
- j["print"]["startup_read_option"] = value;
- ams_power_on_flag = value;
- } else if (op == AmsOptionType::AMS_OP_TRAY_READ) {
- j["print"]["tray_read_option"] = value;
- ams_insert_flag = value;
- } else if (op == AmsOptionType::AMS_OP_CALIBRATE_REMAIN) {
- j["print"]["calibrate_remain_flag"] = value;
- ams_calibrate_remain_flag = value;
- } else {
- return -1;
- }
- ams_user_setting_hold_count = HOLD_COUNT_MAX;
- return this->publish_json(j.dump());
-}
-
int MachineObject::command_ams_calibrate(int ams_id)
{
std::string gcode_cmd = (boost::format("M620 C%1% \n") % ams_id).str();
@@ -1847,16 +2011,29 @@ int MachineObject::command_ams_calibrate(int ams_id)
return this->publish_gcode(gcode_cmd);
}
-int MachineObject::command_ams_filament_settings(int ams_id, int tray_id, std::string filament_id, std::string setting_id, std::string tray_color, std::string tray_type, int nozzle_temp_min, int nozzle_temp_max)
+int MachineObject::command_ams_filament_settings(int ams_id, int slot_id, std::string filament_id, std::string setting_id, std::string tray_color, std::string tray_type, int nozzle_temp_min, int nozzle_temp_max)
{
- BOOST_LOG_TRIVIAL(info) << "command_ams_filament_settings, ams_id = " << ams_id << ", tray_id = " << tray_id << ", tray_color = " << tray_color
+ int tag_tray_id = 0;
+ int tag_ams_id = ams_id;
+ int tag_slot_id = slot_id;
+
+ if (tag_ams_id == VIRTUAL_TRAY_ID) {
+ tag_tray_id = VIRTUAL_TRAY_ID;
+ tag_ams_id = 255; // TODO: Orca hack
+ } else {
+ tag_tray_id = tag_slot_id;
+ }
+
+
+ BOOST_LOG_TRIVIAL(info) << "command_ams_filament_settings, ams_id = " << tag_ams_id << ", slot_id = " << tag_slot_id << ", tray_id = " << tag_tray_id << ", tray_color = " << tray_color
<< ", tray_type = " << tray_type << ", filament_id = " << filament_id
<< ", setting_id = " << setting_id << ", temp_min: = " << nozzle_temp_min << ", temp_max: = " << nozzle_temp_max;
json j;
j["print"]["command"] = "ams_filament_setting";
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
- j["print"]["ams_id"] = ams_id;
- j["print"]["tray_id"] = tray_id;
+ j["print"]["ams_id"] = tag_ams_id;
+ j["print"]["slot_id"] = tag_slot_id;
+ j["print"]["tray_id"] = tag_tray_id;
j["print"]["tray_info_idx"] = filament_id;
j["print"]["setting_id"] = setting_id;
// format "FFFFFFFF" RGBA
@@ -2147,17 +2324,22 @@ int MachineObject::command_start_pa_calibration(const X1CCalibInfos &pa_data, in
std::string filament_ids;
for (int i = 0; i < pa_data.calib_datas.size(); ++i) {
j["print"]["filaments"][i]["tray_id"] = pa_data.calib_datas[i].tray_id;
+ j["print"]["filaments"][i]["extruder_id"] = pa_data.calib_datas[i].extruder_id;
j["print"]["filaments"][i]["bed_temp"] = pa_data.calib_datas[i].bed_temp;
j["print"]["filaments"][i]["filament_id"] = pa_data.calib_datas[i].filament_id;
j["print"]["filaments"][i]["setting_id"] = pa_data.calib_datas[i].setting_id;
j["print"]["filaments"][i]["nozzle_temp"] = pa_data.calib_datas[i].nozzle_temp;
+ j["print"]["filaments"][i]["ams_id"] = pa_data.calib_datas[i].ams_id;
+ j["print"]["filaments"][i]["slot_id"] = pa_data.calib_datas[i].slot_id;
+ j["print"]["filaments"][i]["nozzle_id"] = generate_nozzle_id(pa_data.calib_datas[i].nozzle_volume_type,to_string_nozzle_diameter(pa_data.calib_datas[i].nozzle_diameter)).ToStdString();
+ j["print"]["filaments"][i]["nozzle_diameter"] = to_string_nozzle_diameter(pa_data.calib_datas[i].nozzle_diameter);
j["print"]["filaments"][i]["max_volumetric_speed"] = std::to_string(pa_data.calib_datas[i].max_volumetric_speed);
if (i > 0) filament_ids += ",";
filament_ids += pa_data.calib_datas[i].filament_id;
}
- BOOST_LOG_TRIVIAL(trace) << "extrusion_cali: " << j.dump();
+ BOOST_LOG_TRIVIAL(info) << "extrusion_cali: " << j.dump();
try {
json js;
@@ -2188,6 +2370,11 @@ int MachineObject::command_set_pa_calibration(const std::vector &
if (pa_calib_values[i].cali_idx >= 0)
j["print"]["filaments"][i]["cali_idx"] = pa_calib_values[i].cali_idx;
j["print"]["filaments"][i]["tray_id"] = pa_calib_values[i].tray_id;
+ j["print"]["filaments"][i]["extruder_id"] = pa_calib_values[i].extruder_id;
+ j["print"]["filaments"][i]["nozzle_id"] = generate_nozzle_id(pa_calib_values[i].nozzle_volume_type, to_string_nozzle_diameter(pa_calib_values[i].nozzle_diameter)).ToStdString();
+ j["print"]["filaments"][i]["nozzle_diameter"] = to_string_nozzle_diameter(pa_calib_values[i].nozzle_diameter);
+ j["print"]["filaments"][i]["ams_id"] = pa_calib_values[i].ams_id;
+ j["print"]["filaments"][i]["slot_id"] = pa_calib_values[i].slot_id;
j["print"]["filaments"][i]["filament_id"] = pa_calib_values[i].filament_id;
j["print"]["filaments"][i]["setting_id"] = pa_calib_values[i].setting_id;
j["print"]["filaments"][i]["name"] = pa_calib_values[i].name;
@@ -2198,7 +2385,7 @@ int MachineObject::command_set_pa_calibration(const std::vector &
j["print"]["filaments"][i]["n_coef"] = "0.0";
}
- BOOST_LOG_TRIVIAL(trace) << "extrusion_cali_set: " << j.dump();
+ BOOST_LOG_TRIVIAL(info) << "extrusion_cali_set: " << j.dump();
return this->publish_json(j.dump());
}
@@ -2210,25 +2397,32 @@ int MachineObject::command_delete_pa_calibration(const PACalibIndexInfo& pa_cali
json j;
j["print"]["command"] = "extrusion_cali_del";
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
+ j["print"]["extruder_id"] = pa_calib.extruder_id;
+ j["print"]["nozzle_id"] = generate_nozzle_id(pa_calib.nozzle_volume_type, to_string_nozzle_diameter(pa_calib.nozzle_diameter)).ToStdString();
j["print"]["filament_id"] = pa_calib.filament_id;
j["print"]["cali_idx"] = pa_calib.cali_idx;
j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(pa_calib.nozzle_diameter);
- BOOST_LOG_TRIVIAL(trace) << "extrusion_cali_del: " << j.dump();
+ BOOST_LOG_TRIVIAL(info) << "extrusion_cali_del: " << j.dump();
return this->publish_json(j.dump());
}
-int MachineObject::command_get_pa_calibration_tab(float nozzle_diameter, const std::string &filament_id)
+int MachineObject::command_get_pa_calibration_tab(const PACalibExtruderInfo &calib_info)
{
reset_pa_cali_history_result();
json j;
j["print"]["command"] = "extrusion_cali_get";
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
- j["print"]["filament_id"] = filament_id;
- j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(nozzle_diameter);
+ j["print"]["filament_id"] = calib_info.filament_id;
+ if (calib_info.use_extruder_id)
+ j["print"]["extruder_id"] = calib_info.extruder_id;
+ if (calib_info.use_nozzle_volume_type)
+ j["print"]["nozzle_id"] = generate_nozzle_id(calib_info.nozzle_volume_type, to_string_nozzle_diameter(calib_info.nozzle_diameter)).ToStdString();
+ j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(calib_info.nozzle_diameter);
- BOOST_LOG_TRIVIAL(trace) << "extrusion_cali_get: " << j.dump();
+ BOOST_LOG_TRIVIAL(info) << "extrusion_cali_get: " << j.dump();
+ request_tab_from_bbs = true;
return this->publish_json(j.dump());
}
@@ -2239,7 +2433,7 @@ int MachineObject::command_get_pa_calibration_result(float nozzle_diameter)
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(nozzle_diameter);
- BOOST_LOG_TRIVIAL(trace) << "extrusion_cali_get_result: " << j.dump();
+ BOOST_LOG_TRIVIAL(info) << "extrusion_cali_get_result: " << j.dump();
return this->publish_json(j.dump());
}
@@ -2249,11 +2443,13 @@ int MachineObject::commnad_select_pa_calibration(const PACalibIndexInfo& pa_cali
j["print"]["command"] = "extrusion_cali_sel";
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
j["print"]["tray_id"] = pa_calib_info.tray_id;
+ j["print"]["ams_id"] = pa_calib_info.ams_id;
+ j["print"]["slot_id"] = pa_calib_info.slot_id;
j["print"]["cali_idx"] = pa_calib_info.cali_idx;
j["print"]["filament_id"] = pa_calib_info.filament_id;
j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(pa_calib_info.nozzle_diameter);
- BOOST_LOG_TRIVIAL(trace) << "extrusion_cali_sel: " << j.dump();
+ BOOST_LOG_TRIVIAL(info) << "extrusion_cali_sel: " << j.dump();
return this->publish_json(j.dump());
}
@@ -2283,7 +2479,7 @@ int MachineObject::command_start_flow_ratio_calibration(const X1CCalibInfos& cal
filament_ids += calib_data.calib_datas[i].filament_id;
}
- BOOST_LOG_TRIVIAL(trace) << "flowrate_cali: " << j.dump();
+ BOOST_LOG_TRIVIAL(info) << "flowrate_cali: " << j.dump();
return this->publish_json(j.dump());
}
return -1;
@@ -2296,7 +2492,7 @@ int MachineObject::command_get_flow_ratio_calibration_result(float nozzle_diamet
j["print"]["sequence_id"] = std::to_string(MachineObject::m_sequence_id++);
j["print"]["nozzle_diameter"] = to_string_nozzle_diameter(nozzle_diameter);
- BOOST_LOG_TRIVIAL(trace) << "flowrate_get_result: " << j.dump();
+ BOOST_LOG_TRIVIAL(info) << "flowrate_get_result: " << j.dump();
return this->publish_json(j.dump());
}
@@ -2514,7 +2710,6 @@ void MachineObject::reset()
last_mc_print_stage = -1;
m_new_ver_list_exist = false;
extruder_axis_status = LOAD;
- nozzle_diameter = 0.0f;
network_wired = false;
dev_connection_name = "";
subscribe_counter = 3;
@@ -2623,29 +2818,38 @@ bool MachineObject::is_camera_busy_off()
return false;
}
-int MachineObject::publish_json(std::string json_str, int qos)
+int MachineObject::publish_json(std::string json_str, int qos, int flag)
{
+ int rtn = 0;
if (is_lan_mode_printer()) {
- return local_publish_json(json_str, qos);
+ rtn = local_publish_json(json_str, qos, flag);
} else {
- return cloud_publish_json(json_str, qos);
+ rtn = cloud_publish_json(json_str, qos, flag);
}
+
+ if (rtn == 0) {
+ BOOST_LOG_TRIVIAL(info) << "publish_json: " << json_str << " code: " << rtn;
+ } else {
+ BOOST_LOG_TRIVIAL(error) << "publish_json: " << json_str << " code: " << rtn;
+ }
+
+ return rtn;
}
-int MachineObject::cloud_publish_json(std::string json_str, int qos)
+int MachineObject::cloud_publish_json(std::string json_str, int qos, int flag)
{
int result = -1;
if (m_agent)
- result = m_agent->send_message(dev_id, json_str, qos);
+ result = m_agent->send_message(dev_id, json_str, qos, flag);
return result;
}
-int MachineObject::local_publish_json(std::string json_str, int qos)
+int MachineObject::local_publish_json(std::string json_str, int qos, int flag)
{
int result = -1;
if (m_agent) {
- result = m_agent->send_message_to_printer(dev_id, json_str, qos);
+ result = m_agent->send_message_to_printer(dev_id, json_str, qos, flag);
}
return result;
}
@@ -2683,6 +2887,11 @@ static ENUM enum_index_of(char const *key, char const **enum_names, int enum_cou
int MachineObject::parse_json(std::string payload, bool key_field_only)
{
+#ifdef ORCA_NETWORK_DEBUG
+ BOOST_LOG_TRIVIAL(info) << "parse_json: payload = " << payload;
+ flush_logs();
+#endif
+
parse_msg_count++;
std::chrono::system_clock::time_point clock_start = std::chrono::system_clock::now();
this->set_online_state(true);
@@ -2693,10 +2902,24 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
/* update last received time */
last_update_time = std::chrono::system_clock::now();
+ json j_pre;
+ bool parse_ok = false;
+ try {
+ j_pre = json::parse(payload);
+ parse_ok = true;
+ }
+ catch(...) {
+ parse_ok = false;
+ /* post process payload */
+ sanitizeToUtf8(payload);
+ BOOST_LOG_TRIVIAL(info) << "parse_json: sanitize to utf8";
+ }
+
try {
bool restored_json = false;
json j;
- json j_pre = json::parse(payload);
+ if (!parse_ok)
+ j_pre = json::parse(payload);
CNumericLocalesSetter locales_setter;
if (j_pre.empty()) {
return 0;
@@ -2734,7 +2957,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
else {
if (!printer_type.empty() && connection_type() == "lan")
print_json.load_compatible_settings(printer_type, "");
- print_json.diff2all_base_reset(j_pre);
+ print_json.diff2all_base_reset(j_pre);
}
}
}
@@ -2844,15 +3067,20 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
for (auto it = j_module.begin(); it != j_module.end(); it++) {
ModuleVersionInfo ver_info;
ver_info.name = (*it)["name"].get();
+ if ((*it).contains("product_name"))
+ ver_info.product_name = wxString::FromUTF8((*it)["product_name"].get());
if ((*it).contains("sw_ver"))
ver_info.sw_ver = (*it)["sw_ver"].get();
+ if ((*it).contains("sw_new_ver"))
+ ver_info.sw_new_ver = (*it)["sw_new_ver"].get();
if ((*it).contains("sn"))
ver_info.sn = (*it)["sn"].get();
if ((*it).contains("hw_ver"))
ver_info.hw_ver = (*it)["hw_ver"].get();
if((*it).contains("flag"))
ver_info.firmware_status= (*it)["flag"].get();
- module_vers.emplace(ver_info.name, ver_info);
+
+ store_version_info(ver_info);
if (ver_info.name == "ota") {
NetworkAgent* agent = GUI::wxGetApp().getAgent();
if (agent) {
@@ -2953,7 +3181,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (jj.contains("support_flow_calibration")) {
if (jj["support_flow_calibration"].is_boolean()) {
- is_support_flow_calibration = jj["support_flow_calibration"].get();
+ is_support_auto_flow_calibration = jj["support_flow_calibration"].get();
}
}
@@ -3022,11 +3250,11 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
}
- //if (jj.contains("support_filament_tangle_detect")) {
- // if (jj["support_filament_tangle_detect"].is_boolean()) {
- // is_support_filament_tangle_detect = jj["support_filament_tangle_detect"].get();
- // }
- //}
+ if (jj.contains("support_filament_tangle_detect")) {
+ if (jj["support_filament_tangle_detect"].is_boolean()) {
+ is_support_filament_tangle_detect = jj["support_filament_tangle_detect"].get();
+ }
+ }
if (jj.contains("support_1080dpi")) {
if (jj["support_1080dpi"].is_boolean()) {
@@ -3157,13 +3385,26 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (jj["print_error"].is_number())
print_error = jj["print_error"].get();
}
+
+ if (jj.contains("sdcard")) {
+ if (jj["sdcard"].get())
+ sdcard_state = MachineObject::SdcardState::HAS_SDCARD_NORMAL;
+ else
+ sdcard_state = MachineObject::SdcardState::NO_SDCARD;
+ } else {
+ sdcard_state = MachineObject::SdcardState::NO_SDCARD;
+ }
+
if (!key_field_only) {
if (jj.contains("home_flag")) {
home_flag = jj["home_flag"].get();
parse_status(home_flag);
}
+
+ /*the param is invalid in np for Yeshu*/
if (jj.contains("hw_switch_state")) {
hw_switch_state = jj["hw_switch_state"].get();
+ m_extder_data.extders[MAIN_NOZZLE_ID].ext_has_filament = hw_switch_state;
}
if (jj.contains("mc_print_line_number")) {
if (jj["mc_print_line_number"].is_string() && !jj["mc_print_line_number"].is_null())
@@ -3174,6 +3415,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (jj.contains("flag3")) {
int flag3 = jj["flag3"].get();
is_support_filament_setting_inprinting = get_flag_bits(flag3, 3);
+ is_enable_ams_np = get_flag_bits(flag3, 9);
}
}
if (!key_field_only) {
@@ -3309,7 +3551,6 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
curr_task->task_progress = mc_print_percent;
curr_task->printing_status = print_status;
curr_task->task_id = jj["subtask_id"].get();
-
}
}
@@ -3335,12 +3576,16 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
if (jj.contains("nozzle_temper")) {
if (jj["nozzle_temper"].is_number()) {
- nozzle_temp = jj["nozzle_temper"].get();
+ if (m_extder_data.extders.size() == 1) {
+ m_extder_data.extders[MAIN_NOZZLE_ID].temp = jj["nozzle_temper"].get();
+ }
}
}
if (jj.contains("nozzle_target_temper")) {
if (jj["nozzle_target_temper"].is_number()) {
- nozzle_temp_target = jj["nozzle_target_temper"].get();
+ if (m_extder_data.extders.size() == 1) {
+ m_extder_data.extders[MAIN_NOZZLE_ID].target_temp = jj["nozzle_target_temper"].get();
+ }
}
}
if (jj.contains("chamber_temper")) {
@@ -3397,7 +3642,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (jj.contains("heatbreak_fan_speed")) {
heatbreak_fan_speed = stoi(jj["heatbreak_fan_speed"].get());
}
-
+
/* parse speed */
try {
if (jj.contains("spd_lvl")) {
@@ -3437,12 +3682,14 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (!key_field_only) {
/*get filam_bak*/
try {
+ m_extder_data.extders[MAIN_NOZZLE_ID].filam_bak.clear();
+
if (jj.contains("filam_bak")) {
is_support_show_filament_backup = true;
- filam_bak.clear();
if (jj["filam_bak"].is_array()) {
for (auto it = jj["filam_bak"].begin(); it != jj["filam_bak"].end(); it++) {
- filam_bak.push_back(it.value().get());
+ const auto& filam_bak_val = it.value().get();
+ m_extder_data.extders[MAIN_NOZZLE_ID].filam_bak.push_back(filam_bak_val);
}
}
}
@@ -3493,21 +3740,6 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
catch (...) {
;
}
- // media
- try {
- if (jj.contains("sdcard")) {
- if (jj["sdcard"].get())
- sdcard_state = MachineObject::SdcardState::HAS_SDCARD_NORMAL;
- else
- sdcard_state = MachineObject::SdcardState::NO_SDCARD;
- } else {
- //do not check sdcard if no sdcard field
- sdcard_state = MachineObject::SdcardState::NO_SDCARD;
- }
- }
- catch (...) {
- ;
- }
}
#pragma endregion
if (!key_field_only) {
@@ -3516,15 +3748,17 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (nozzle_setting_hold_count > 0) {
nozzle_setting_hold_count--;
} else {
+ float nozzle_diameter = 0.0f;
if (jj["nozzle_diameter"].is_number_float()) {
nozzle_diameter = jj["nozzle_diameter"].get();
}
else if (jj["nozzle_diameter"].is_string()) {
nozzle_diameter = string_to_float(jj["nozzle_diameter"].get());
}
- }
-
+ if (nozzle_diameter == 0.0f) {m_extder_data.extders[MAIN_NOZZLE_ID].current_nozzle_diameter = 0.0f;}
+ else { m_extder_data.extders[MAIN_NOZZLE_ID].current_nozzle_diameter = round(nozzle_diameter * 10) / 10;}
+ }
}
}
catch(...) {
@@ -3539,13 +3773,16 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
else {
if (jj["nozzle_type"].is_string()) {
- nozzle_type = jj["nozzle_type"].get();
+ auto nozzle_type = jj["nozzle_type"].get();
+ if (nozzle_type.empty()) {
+ m_extder_data.extders[MAIN_NOZZLE_ID].current_nozzle_type = NozzleType::ntUndefine;
+ }
+ else {
+ m_extder_data.extders[MAIN_NOZZLE_ID].current_nozzle_type = NozzleTypeStrToEumn[nozzle_type];
+ }
}
}
}
- else {
- nozzle_type = "";
- }
}
catch (...) {
;
@@ -3561,7 +3798,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
upgrade_progress = jj["upgrade_state"]["progress"].get();
} if (jj["upgrade_state"].contains("new_version_state"))
upgrade_new_version = jj["upgrade_state"]["new_version_state"].get() == 1 ? true : false;
- if (jj["upgrade_state"].contains("ams_new_version_number"))
+ if (!check_enable_np(jj) && jj["upgrade_state"].contains("ams_new_version_number"))/* is not used in new np, by AP*/
ams_new_version_number = jj["upgrade_state"]["ams_new_version_number"].get();
if (jj["upgrade_state"].contains("ota_new_version_number"))
ota_new_version_number = jj["upgrade_state"]["ota_new_version_number"].get();
@@ -3706,22 +3943,18 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
liveview_local = enum_index_of(ipcam["liveview"].value("local", "none").c_str(), local_protos, 5, LiveviewLocal::LVL_None);
char const *remote_protos[] = {"none", "tutk", "agora", "tutk_agaro"};
liveview_remote = enum_index_of(ipcam["liveview"].value("remote", "none").c_str(), remote_protos, 4, LiveviewRemote::LVR_None);
- if (is_support_agora)
- liveview_remote = liveview_remote == LVR_None ? LVR_Agora : liveview_remote == LVR_Tutk ? LVR_TutkAgora : liveview_remote;
}
if (ipcam.contains("file")) {
char const *local_protos[] = {"none", "local"};
file_local = enum_index_of(ipcam["file"].value("local", "none").c_str(), local_protos, 2, FileLocal::FL_None);
char const *remote_protos[] = {"none", "tutk", "agora", "tutk_agaro"};
file_remote = enum_index_of(ipcam["file"].value("remote", "none").c_str(), remote_protos, 4, FileRemote::FR_None);
- if (is_support_agora)
- file_remote = file_remote == FR_None ? FR_Agora : file_remote == FR_Tutk ? FR_TutkAgora : file_remote;
file_model_download = ipcam["file"].value("model_download", "disabled") == "enabled";
}
virtual_camera = ipcam.value("virtual_camera", "disabled") == "enabled";
if (ipcam.contains("rtsp_url")) {
local_rtsp_url = ipcam["rtsp_url"].get();
- liveview_local = local_rtsp_url.empty() ? LVL_None : local_rtsp_url == "disable"
+ liveview_local = local_rtsp_url.empty() ? LVL_None : local_rtsp_url == "disable"
? LVL_Disable : boost::algorithm::starts_with(local_rtsp_url, "rtsps") ? LVL_Rtsps : LVL_Rtsp;
}
if (ipcam.contains("tutk_server")) {
@@ -3827,14 +4060,8 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
catch (...) {
;
}
- PresetBundle *preset_bundle = Slic3r::GUI::wxGetApp().preset_bundle;
- std::ostringstream stream;
- stream << std::fixed << std::setprecision(1) << nozzle_diameter;
- std::string nozzle_diameter_str = stream.str();
- if (m_printer_preset_name.find(nozzle_diameter_str + " nozzle") == std::string::npos)
- update_printer_preset_name(nozzle_diameter_str);
+ update_printer_preset_name();
update_filament_list();
- std::set need_checked_filament_id;
if (jj.contains("ams")) {
if (jj["ams"].contains("ams")) {
long int last_ams_exist_bits = ams_exist_bits;
@@ -3854,7 +4081,6 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
if (jj["ams"].contains("tray_reading_bits")) {
tray_reading_bits = stol(jj["ams"]["tray_reading_bits"].get(), nullptr, 16);
- ams_support_use_ams = true;
}
if (jj["ams"].contains("tray_is_bbl_bits")) {
tray_is_bbl_bits = stol(jj["ams"]["tray_is_bbl_bits"].get(), nullptr, 16);
@@ -3871,16 +4097,6 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
if (jj["ams"].contains("ams_rfid_status"))
ams_rfid_status = jj["ams"]["ams_rfid_status"].get();
- if (jj["ams"].contains("humidity")) {
- if (jj["ams"]["humidity"].is_string()) {
- std::string humidity_str = jj["ams"]["humidity"].get();
- try {
- ams_humidity = atoi(humidity_str.c_str());
- } catch (...) {
- ;
- }
- }
- }
if (jj["ams"].contains("insert_flag") || jj["ams"].contains("power_on_flag")
|| jj["ams"].contains("calibrate_remain_flag")) {
@@ -3915,23 +4131,31 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
for (auto it = amsList.begin(); it != amsList.end(); it++) {
ams_id_set.insert(it->first);
}
+
for (auto it = j_ams.begin(); it != j_ams.end(); it++) {
if (!it->contains("id")) continue;
std::string ams_id = (*it)["id"].get();
+
+ int nozzle_id = MAIN_NOZZLE_ID; // Default nozzle id
+ int type_id = 1; // 0:dummy 1:ams 2:ams-lite 3:n3f 4:n3s
+
+ /*ams info*/
+ if (it->contains("info")) {
+ std::string info = (*it)["info"].get();
+ type_id = get_flag_bits(info, 0, 4);
+ nozzle_id = get_flag_bits(info, 8, 4);
+ }
+
+ /*AMS without initialization*/
+ if (nozzle_id == 0xE) {
+ continue;
+ }
+
ams_id_set.erase(ams_id);
Ams* curr_ams = nullptr;
auto ams_it = amsList.find(ams_id);
if (ams_it == amsList.end()) {
- Ams* new_ams = new Ams(ams_id);
- try {
- if (!ams_id.empty()) {
- int ams_id_int = atoi(ams_id.c_str());
- new_ams->is_exists = (ams_exist_bits & (1 << ams_id_int)) != 0 ? true : false;
- }
- }
- catch (...) {
- ;
- }
+ Ams* new_ams = new Ams(ams_id, nozzle_id, type_id);
amsList.insert(std::make_pair(ams_id, new_ams));
// new ams added event
curr_ams = new_ams;
@@ -3940,6 +4164,30 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
if (!curr_ams) continue;
+ /*set ams type flag*/
+ curr_ams->type = type_id;
+
+
+ /*set ams exist flag*/
+ try {
+ if (!ams_id.empty()) {
+ int ams_id_int = atoi(ams_id.c_str());
+
+ if (type_id < 4) {
+ curr_ams->is_exists = (ams_exist_bits & (1 << ams_id_int)) != 0 ? true : false;
+ } else {
+ curr_ams->is_exists = get_flag_bits(ams_exist_bits, 4 + (ams_id_int - 128));
+ }
+ }
+ } catch (...) {
+ ;
+ }
+
+ if (it->contains("dry_time") && (*it)["dry_time"].is_number())
+ {
+ curr_ams->left_dry_time = (*it)["dry_time"].get();
+ }
+
if (it->contains("humidity")) {
std::string humidity = (*it)["humidity"].get();
@@ -3950,7 +4198,55 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
;
}
}
-
+
+ if (it->contains("humidity_raw"))
+ {
+ std::string humidity_raw = (*it)["humidity_raw"].get();
+
+ try {
+ curr_ams->humidity_raw = atoi(humidity_raw.c_str());
+ } catch (...) {
+ ;
+ }
+
+ if (curr_ams->humidity_raw != -1)
+ {
+ if (curr_ams->humidity_raw < 20)
+ {
+ curr_ams->humidity = 5;
+ }
+ else if (curr_ams->humidity_raw < 40)
+ {
+ curr_ams->humidity = 4;
+ }
+ else if (curr_ams->humidity_raw < 60)
+ {
+ curr_ams->humidity = 3;
+ }
+ else if (curr_ams->humidity_raw < 80)
+ {
+ curr_ams->humidity = 2;
+ }
+ else
+ {
+ curr_ams->humidity = 1;
+ }
+ }
+ }
+
+
+ if (it->contains("temp"))
+ {
+ std::string temp = (*it)["temp"].get();
+ try
+ {
+ curr_ams->current_temperature = string_to_float(temp);
+ }
+ catch (...)
+ {
+ curr_ams->current_temperature = INVALID_AMS_TEMPERATURE;
+ }
+ }
if (it->contains("tray")) {
std::set tray_id_set;
@@ -3996,26 +4292,6 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
} else {
curr_tray->type = type;
}
- // settings_id is not exist in filament_list
- if (curr_tray->setting_id.size() == 8 && curr_tray->setting_id[0] == 'P' &&
- m_filament_list.find(curr_tray->setting_id) == m_filament_list.end()) {
- if (m_checked_filament.find(curr_tray->setting_id) == m_checked_filament.end()) {
- need_checked_filament_id.insert(curr_tray->setting_id);
- wxColour color = *wxWHITE;
- char col_buf[10];
- sprintf(col_buf, "%02X%02X%02XFF", (int) color.Red(), (int) color.Green(), (int) color.Blue());
- try {
- BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__
- << " ams settings_id is not exist in filament_list and reset, ams_id: " << ams_id
- << " tray_id" << tray_id << "filament_id: " << curr_tray->setting_id;
- this->command_ams_filament_settings(std::stoi(ams_id), std::stoi(tray_id), "", "", std::string(col_buf), "", 0, 0);
- continue;
- } catch (...) {
- BOOST_LOG_TRIVIAL(info)
- << __FUNCTION__ << " " << __LINE__ << " stoi error and ams_id: " << ams_id << " tray_id" << tray_id;
- }
- }
- }
} else {
curr_tray->setting_id = "";
curr_tray->type = "";
@@ -4063,29 +4339,6 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
curr_tray->nozzle_temp_min = (*tray_it)["nozzle_temp_min"].get();
else
curr_tray->nozzle_temp_min = "";
- if (curr_tray->setting_id.size() == 8 && curr_tray->setting_id[0] == 'P' && curr_tray->nozzle_temp_min != "" && curr_tray->nozzle_temp_max != "") {
- if (m_checked_filament.find(vt_tray.setting_id) == m_checked_filament.end()) {
- need_checked_filament_id.insert(vt_tray.setting_id);
- try {
- std::string preset_setting_id;
- bool is_equation = preset_bundle->check_filament_temp_equation_by_printer_type_and_nozzle_for_mas_tray(
- MachineObject::get_preset_printer_model_name(this->printer_type), nozzle_diameter_str, curr_tray->setting_id,
- curr_tray->tag_uid, curr_tray->nozzle_temp_min, curr_tray->nozzle_temp_max, preset_setting_id);
- if (!is_equation) {
- BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__
- << " ams filament is not match min max temp and reset, ams_id: " << ams_id
- << " tray_id" << tray_id << "filament_id: " << curr_tray->setting_id;
- command_ams_filament_settings(std::stoi(ams_id), std::stoi(tray_id), curr_tray->setting_id, preset_setting_id,
- curr_tray->color, curr_tray->type,
- std::stoi(curr_tray->nozzle_temp_min),
- std::stoi(curr_tray->nozzle_temp_max));
- }
- continue;
- } catch (...) {
- BOOST_LOG_TRIVIAL(info) << "check fail and curr_tray ams_id" << ams_id << " curr_tray tray_id"<contains("xcam_info"))
curr_tray->xcam_info = (*tray_it)["xcam_info"].get();
else
@@ -4107,7 +4360,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
}
}
-
+
if (tray_it->contains("remain")) {
curr_tray->remain = (*tray_it)["remain"].get();
} else {
@@ -4119,7 +4372,14 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (!ams_id.empty() && !curr_tray->id.empty()) {
ams_id_int = atoi(ams_id.c_str());
tray_id_int = atoi(curr_tray->id.c_str());
- curr_tray->is_exists = (tray_exist_bits & (1 << (ams_id_int * 4 + tray_id_int))) != 0 ? true : false;
+
+ if (type_id < 4) {
+ curr_tray->is_exists = (tray_exist_bits & (1 << (ams_id_int * 4 + tray_id_int))) != 0 ? true : false;
+ }
+ else {
+ curr_tray->is_exists = get_flag_bits(tray_exist_bits, 16 + (ams_id_int - 128));
+ }
+
}
}
catch (...) {
@@ -4174,149 +4434,13 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (!key_field_only) {
try {
if (jj.contains("vt_tray")) {
- if (jj["vt_tray"].contains("id"))
- vt_tray.id = jj["vt_tray"]["id"].get();
- auto curr_time = std::chrono::system_clock::now();
- auto diff = std::chrono::duration_cast(curr_time - extrusion_cali_set_hold_start);
- if (diff.count() > HOLD_TIMEOUT || diff.count() < 0
- || extrusion_cali_set_tray_id != VIRTUAL_TRAY_ID) {
- if (jj["vt_tray"].contains("k"))
- vt_tray.k = jj["vt_tray"]["k"].get();
- if (jj["vt_tray"].contains("n"))
- vt_tray.n = jj["vt_tray"]["n"].get();
- }
- ams_support_virtual_tray = true;
+ auto main_slot = parse_vt_tray(jj["vt_tray"].get());
+ main_slot.id = std::to_string(VIRTUAL_TRAY_ID);
- if (vt_tray.hold_count > 0) {
- vt_tray.hold_count--;
- } else {
- if (jj["vt_tray"].contains("tag_uid"))
- vt_tray.tag_uid = jj["vt_tray"]["tag_uid"].get();
- else
- vt_tray.tag_uid = "0";
- if (jj["vt_tray"].contains("tray_info_idx") && jj["vt_tray"].contains("tray_type")) {
- vt_tray.setting_id = jj["vt_tray"]["tray_info_idx"].get();
- //std::string type = jj["vt_tray"]["tray_type"].get();
- std::string type = setting_id_to_type(vt_tray.setting_id, jj["vt_tray"]["tray_type"].get());
- if (vt_tray.setting_id == "GFS00") {
- vt_tray.type = "PLA-S";
- }
- else if (vt_tray.setting_id == "GFS01") {
- vt_tray.type = "PA-S";
- }
- else {
- vt_tray.type = type;
- }
- if (vt_tray.setting_id.size() == 8 && vt_tray.setting_id[0] == 'P' &&
- m_filament_list.find(vt_tray.setting_id) == m_filament_list.end()) {
- if (m_checked_filament.find(vt_tray.setting_id) == m_checked_filament.end()) {
- need_checked_filament_id.insert(vt_tray.setting_id);
- wxColour color = *wxWHITE;
- char col_buf[10];
- sprintf(col_buf, "%02X%02X%02XFF", (int) color.Red(), (int) color.Green(), (int) color.Blue());
- try {
- BOOST_LOG_TRIVIAL(info) << "vt_tray.setting_id is not exist in filament_list and reset vt_tray and the filament_id is: " << vt_tray.setting_id;
- this->command_ams_filament_settings(255, std::stoi(vt_tray.id), "", "", std::string(col_buf), "", 0, 0);
- } catch (...) {
- BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << " stoi error and tray_id" << vt_tray.id;
- }
- }
- }
- }
- else {
- vt_tray.setting_id = "";
- vt_tray.type = "";
- }
- if (jj["vt_tray"].contains("tray_sub_brands"))
- vt_tray.sub_brands = jj["vt_tray"]["tray_sub_brands"].get();
- else
- vt_tray.sub_brands = "";
- if (jj["vt_tray"].contains("tray_weight"))
- vt_tray.weight = jj["vt_tray"]["tray_weight"].get();
- else
- vt_tray.weight = "";
- if (jj["vt_tray"].contains("tray_diameter"))
- vt_tray.diameter = jj["vt_tray"]["tray_diameter"].get();
- else
- vt_tray.diameter = "";
- if (jj["vt_tray"].contains("tray_temp"))
- vt_tray.temp = jj["vt_tray"]["tray_temp"].get();
- else
- vt_tray.temp = "";
- if (jj["vt_tray"].contains("tray_time"))
- vt_tray.time = jj["vt_tray"]["tray_time"].get();
- else
- vt_tray.time = "";
- if (jj["vt_tray"].contains("bed_temp_type"))
- vt_tray.bed_temp_type = jj["vt_tray"]["bed_temp_type"].get();
- else
- vt_tray.bed_temp_type = "";
- if (jj["vt_tray"].contains("bed_temp"))
- vt_tray.bed_temp = jj["vt_tray"]["bed_temp"].get();
- else
- vt_tray.bed_temp = "";
- if (jj["vt_tray"].contains("tray_color")) {
- auto color = jj["vt_tray"]["tray_color"].get();
- vt_tray.update_color_from_str(color);
- } else {
- vt_tray.color = "";
- }
- if (jj["vt_tray"].contains("nozzle_temp_max"))
- vt_tray.nozzle_temp_max = jj["vt_tray"]["nozzle_temp_max"].get();
- else
- vt_tray.nozzle_temp_max = "";
- if (jj["vt_tray"].contains("nozzle_temp_min"))
- vt_tray.nozzle_temp_min = jj["vt_tray"]["nozzle_temp_min"].get();
- else
- vt_tray.nozzle_temp_min = "";
- if (vt_tray.setting_id.size() == 8 && vt_tray.setting_id[0] == 'P' && vt_tray.nozzle_temp_min != "" && vt_tray.nozzle_temp_max != "") {
- if (m_checked_filament.find(vt_tray.setting_id) == m_checked_filament.end()) {
- need_checked_filament_id.insert(vt_tray.setting_id);
- try {
- std::string preset_setting_id;
- bool is_equation = preset_bundle->check_filament_temp_equation_by_printer_type_and_nozzle_for_mas_tray(
- MachineObject::get_preset_printer_model_name(this->printer_type), nozzle_diameter_str, vt_tray.setting_id, vt_tray.tag_uid,
- vt_tray.nozzle_temp_min, vt_tray.nozzle_temp_max, preset_setting_id);
- if (!is_equation) {
- BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " " << __LINE__ << " vt_tray filament is not match min max temp and reset, filament_id: " << vt_tray.setting_id;
- command_ams_filament_settings(255, std::stoi(vt_tray.id), vt_tray.setting_id, preset_setting_id, vt_tray.color, vt_tray.type,
- std::stoi(vt_tray.nozzle_temp_min), std::stoi(vt_tray.nozzle_temp_max));
- }
- } catch (...) {
- BOOST_LOG_TRIVIAL(info) << "check fail and vt_tray.id" << vt_tray.id;
- }
- }
- }
- if (jj["vt_tray"].contains("xcam_info"))
- vt_tray.xcam_info = jj["vt_tray"]["xcam_info"].get();
- else
- vt_tray.xcam_info = "";
- if (jj["vt_tray"].contains("tray_uuid"))
- vt_tray.uuid = jj["vt_tray"]["tray_uuid"].get();
- else
- vt_tray.uuid = "0";
-
- if (jj["vt_tray"].contains("cali_idx"))
- vt_tray.cali_idx = jj["vt_tray"]["cali_idx"].get();
- else
- vt_tray.cali_idx = -1;
- vt_tray.cols.clear();
- if (jj["vt_tray"].contains("cols")) {
- if (jj["vt_tray"].is_array()) {
- for (auto it = jj["vt_tray"].begin(); it != jj["vt_tray"].end(); it++) {
- vt_tray.cols.push_back(it.value().get());
- }
- }
- }
-
- if (jj["vt_tray"].contains("remain")) {
- vt_tray.remain = jj["vt_tray"]["remain"].get();
- }
- else {
- vt_tray.remain = -1;
- }
- }
- } else {
+ is_ams_need_update |= vt_tray != main_slot;
+ vt_tray = main_slot;
+ }
+ else {
ams_support_virtual_tray = false;
is_support_extrusion_cali = false;
}
@@ -4325,8 +4449,11 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
;
}
}
- for (auto &filament_id : need_checked_filament_id)
- m_checked_filament.insert(filament_id);
+
+ /*parse new print data*/
+ try {
+ parse_new_info(jj);
+ } catch (...) {}
#pragma endregion
} else if (jj["command"].get() == "gcode_line") {
//ack of gcode_line
@@ -4354,8 +4481,10 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
} else if (jj["command"].get() == "ams_filament_setting" && !key_field_only) {
if (jj.contains("result") && jj.contains("reason")) {
if (jj["result"].get() == "fail") {
- auto err_code = jj["err_code"].get();
- print_error = err_code;
+ if (jj.contains("err_code")) {
+ auto err_code = jj["err_code"].get();
+ print_error = err_code;
+ }
}
}
@@ -4489,14 +4618,16 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
info = reason;
}
GUI::wxGetApp().push_notification(info, _L("Calibration error"), UserNotificationStyle::UNS_WARNING_CONFIRM);
- BOOST_LOG_TRIVIAL(trace) << cali_mode << " result fail, reason = " << reason;
+ BOOST_LOG_TRIVIAL(info) << cali_mode << " result fail, reason = " << reason;
}
}
} else if (jj["command"].get() == "extrusion_cali_set") {
if (jj.contains("result") && jj.contains("reason")) {
if (jj["result"].get() == "fail") {
- auto err_code = jj["err_code"].get();
- print_error = err_code;
+ if (jj.contains("err_code")) {
+ auto err_code = jj["err_code"].get();
+ print_error = err_code;
+ }
}
}
#ifdef CALI_DEBUG
@@ -4545,8 +4676,10 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
else if (jj["command"].get() == "extrusion_cali_sel") {
if (jj.contains("result") && jj.contains("reason")) {
if (jj["result"].get() == "fail") {
- auto err_code = jj["err_code"].get();
- print_error = err_code;
+ if (jj.contains("err_code")) {
+ auto err_code = jj["err_code"].get();
+ print_error = err_code;
+ }
}
}
@@ -4589,100 +4722,110 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
}
}
- }
+ }
else if (jj["command"].get() == "extrusion_cali_get") {
- if (jj.contains("result") && jj.contains("reason")) {
- if (jj["result"].get() == "fail") {
- auto err_code = jj["err_code"].get();
- print_error = err_code;
- }
- }
-
- reset_pa_cali_history_result();
- has_get_pa_calib_tab = true;
-
- if (jj.contains("nozzle_diameter")) {
- if (jj["nozzle_diameter"].is_number_float()) {
- pa_calib_tab_nozzle_dia = jj["nozzle_diameter"].get();
- }
- else if (jj["nozzle_diameter"].is_string()) {
- pa_calib_tab_nozzle_dia = string_to_float(jj["nozzle_diameter"].get());
- }
- else {
- assert(false);
- }
- }
- else {
- assert(false);
- }
-
- if (jj.contains("filaments") && jj["filaments"].is_array()) {
- try {
-#ifdef CALI_DEBUG
- std::string str = jj.dump();
- BOOST_LOG_TRIVIAL(info) << "extrusion_cali_get: " << str;
-#endif
-
- for (auto it = jj["filaments"].begin(); it != jj["filaments"].end(); it++) {
- PACalibResult pa_calib_result;
- pa_calib_result.filament_id = (*it)["filament_id"].get();
- pa_calib_result.setting_id = (*it)["setting_id"].get();
- pa_calib_result.name = (*it)["name"].get();
- pa_calib_result.cali_idx = (*it)["cali_idx"].get();
-
- if (jj["nozzle_diameter"].is_number_float()) {
- pa_calib_result.nozzle_diameter = jj["nozzle_diameter"].get();
- } else if (jj["nozzle_diameter"].is_string()) {
- pa_calib_result.nozzle_diameter = string_to_float(jj["nozzle_diameter"].get());
- }
-
- if ((*it)["k_value"].is_number_float())
- pa_calib_result.k_value = (*it)["k_value"].get();
- else if ((*it)["k_value"].is_string())
- pa_calib_result.k_value = string_to_float((*it)["k_value"].get());
-
- if ((*it)["n_coef"].is_number_float())
- pa_calib_result.n_coef = (*it)["n_coef"].get();
- else if ((*it)["n_coef"].is_string())
- pa_calib_result.n_coef = string_to_float((*it)["n_coef"].get());
-
- if (check_pa_result_validation(pa_calib_result))
- pa_calib_tab.push_back(pa_calib_result);
- else {
- BOOST_LOG_TRIVIAL(info) << "pa result is invalid";
+ std::string str = jj.dump();
+ if (request_tab_from_bbs) {
+ BOOST_LOG_TRIVIAL(info) << "bbs extrusion_cali_get: " << str;
+ request_tab_from_bbs = false;
+ reset_pa_cali_history_result();
+ bool is_succeed = true;
+ if (jj.contains("result") && jj.contains("reason")) {
+ if (jj["result"].get() == "fail") {
+ if (jj.contains("err_code")) {
+ auto err_code = jj["err_code"].get();
+ print_error = err_code;
}
+ is_succeed = false;
}
-
}
- catch (...) {
+ if (is_succeed) {
+ last_cali_version = cali_version;
+ has_get_pa_calib_tab = true;
}
+
+ if (jj.contains("filaments") && jj["filaments"].is_array()) {
+ try {
+ for (auto it = jj["filaments"].begin(); it != jj["filaments"].end(); it++) {
+ PACalibResult pa_calib_result;
+ pa_calib_result.filament_id = (*it)["filament_id"].get();
+ pa_calib_result.name = (*it)["name"].get();
+ pa_calib_result.cali_idx = (*it)["cali_idx"].get();
+
+ if ((*it).contains("setting_id")) {
+ pa_calib_result.setting_id = (*it)["setting_id"].get();
+ }
+
+ if ((*it).contains("extruder_id")) {
+ pa_calib_result.extruder_id = (*it)["extruder_id"].get();
+ }
+
+ if ((*it).contains("nozzle_id")) {
+ pa_calib_result.nozzle_volume_type = convert_to_nozzle_type((*it)["nozzle_id"].get());
+ }
+
+ if (jj["nozzle_diameter"].is_number_float()) {
+ pa_calib_result.nozzle_diameter = jj["nozzle_diameter"].get();
+ } else if (jj["nozzle_diameter"].is_string()) {
+ pa_calib_result.nozzle_diameter = string_to_float(jj["nozzle_diameter"].get());
+ }
+
+ if ((*it)["k_value"].is_number_float())
+ pa_calib_result.k_value = (*it)["k_value"].get();
+ else if ((*it)["k_value"].is_string())
+ pa_calib_result.k_value = string_to_float((*it)["k_value"].get());
+
+ if ((*it)["n_coef"].is_number_float())
+ pa_calib_result.n_coef = (*it)["n_coef"].get();
+ else if ((*it)["n_coef"].is_string())
+ pa_calib_result.n_coef = string_to_float((*it)["n_coef"].get());
+
+ if (check_pa_result_validation(pa_calib_result))
+ pa_calib_tab.push_back(pa_calib_result);
+ else {
+ BOOST_LOG_TRIVIAL(info) << "pa result is invalid";
+ }
+ }
+
+ }
+ catch (...) {
+
+ }
+ }
+ // notify cali history to update
+ } else {
+ BOOST_LOG_TRIVIAL(info) << "printer extrusion_cali_get: " << str;
}
- // notify cali history to update
}
else if (jj["command"].get() == "extrusion_cali_get_result") {
+ std::string str = jj.dump();
+ BOOST_LOG_TRIVIAL(info) << "extrusion_cali_get_result: " << str;
+ reset_pa_cali_result();
+ bool is_succeed = true;
if (jj.contains("result") && jj.contains("reason")) {
if (jj["result"].get() == "fail") {
- auto err_code = jj["err_code"].get();
- print_error = err_code;
+ if (jj.contains("err_code")) {
+ auto err_code = jj["err_code"].get();
+ print_error = err_code;
+ is_succeed = false;
+ }
}
}
- reset_pa_cali_result();
- get_pa_calib_result = true;
+ if (is_succeed)
+ get_pa_calib_result = true;
if (jj.contains("filaments") && jj["filaments"].is_array()) {
try {
-#ifdef CALI_DEBUG
- std::string str = jj.dump();
- BOOST_LOG_TRIVIAL(info) << "extrusion_cali_get_result: " << str;
-#endif
-
for (auto it = jj["filaments"].begin(); it != jj["filaments"].end(); it++) {
PACalibResult pa_calib_result;
pa_calib_result.tray_id = (*it)["tray_id"].get();
pa_calib_result.filament_id = (*it)["filament_id"].get();
- pa_calib_result.setting_id = (*it)["setting_id"].get();
+
+ if ((*it).contains("setting_id")) {
+ pa_calib_result.setting_id = (*it)["setting_id"].get();
+ }
if (jj["nozzle_diameter"].is_number_float()) {
pa_calib_result.nozzle_diameter = jj["nozzle_diameter"].get();
@@ -4690,6 +4833,30 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
pa_calib_result.nozzle_diameter = string_to_float(jj["nozzle_diameter"].get());
}
+ if (it->contains("ams_id")) {
+ pa_calib_result.ams_id = (*it)["ams_id"].get();
+ } else {
+ pa_calib_result.ams_id = 0;
+ }
+
+ if (it->contains("slot_id")) {
+ pa_calib_result.slot_id = (*it)["slot_id"].get();
+ } else {
+ pa_calib_result.slot_id = 0;
+ }
+
+ if (it->contains("extruder_id")) {
+ pa_calib_result.extruder_id = (*it)["extruder_id"].get();
+ } else {
+ pa_calib_result.extruder_id = -1;
+ }
+
+ if (it->contains("nozzle_id")) {
+ pa_calib_result.nozzle_volume_type = convert_to_nozzle_type((*it)["nozzle_id"].get());
+ } else {
+ pa_calib_result.nozzle_volume_type = NozzleVolumeType::nvtNormal;
+ }
+
if ((*it)["k_value"].is_number_float())
pa_calib_result.k_value = (*it)["k_value"].get();
else if ((*it)["k_value"].is_string())
@@ -4739,7 +4906,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
if (it->contains("confidence")) {
flow_ratio_calib_result.confidence = (*it)["confidence"].get();
} else {
- flow_ratio_calib_result.confidence = 0;
+ flow_ratio_calib_result.confidence = 0;
}
flow_ratio_results.push_back(flow_ratio_calib_result);
@@ -4750,6 +4917,7 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
}
}
}
+
if (!key_field_only) {
try {
if (j.contains("camera")) {
@@ -5176,18 +5344,462 @@ std::string MachineObject::get_string_from_fantype(FanType type)
return "";
}
+AmsTray MachineObject::parse_vt_tray(json vtray)
+{
+ auto vt_tray = AmsTray(std::to_string(VIRTUAL_TRAY_ID));
+
+ if (vtray.contains("id"))
+ vt_tray.id = vtray["id"].get();
+ auto curr_time = std::chrono::system_clock::now();
+ auto diff = std::chrono::duration_cast(curr_time - extrusion_cali_set_hold_start);
+ if (diff.count() > HOLD_TIMEOUT || diff.count() < 0
+ || extrusion_cali_set_tray_id != VIRTUAL_TRAY_ID) {
+ if (vtray.contains("k"))
+ vt_tray.k = vtray["k"].get();
+ if (vtray.contains("n"))
+ vt_tray.n = vtray["n"].get();
+ }
+ ams_support_virtual_tray = true;
+
+ if (vt_tray.hold_count > 0) {
+ vt_tray.hold_count--;
+ }
+ else {
+ if (vtray.contains("tag_uid"))
+ vt_tray.tag_uid = vtray["tag_uid"].get();
+ else
+ vt_tray.tag_uid = "0";
+ if (vtray.contains("tray_info_idx") && vtray.contains("tray_type")) {
+ vt_tray.setting_id = vtray["tray_info_idx"].get();
+ //std::string type = vtray["tray_type"].get();
+ std::string type = setting_id_to_type(vt_tray.setting_id, vtray["tray_type"].get());
+ if (vt_tray.setting_id == "GFS00") {
+ vt_tray.type = "PLA-S";
+ }
+ else if (vt_tray.setting_id == "GFS01") {
+ vt_tray.type = "PA-S";
+ }
+ else {
+ vt_tray.type = type;
+ }
+ }
+ else {
+ vt_tray.setting_id = "";
+ vt_tray.type = "";
+ }
+ if (vtray.contains("tray_sub_brands"))
+ vt_tray.sub_brands = vtray["tray_sub_brands"].get();
+ else
+ vt_tray.sub_brands = "";
+ if (vtray.contains("tray_weight"))
+ vt_tray.weight = vtray["tray_weight"].get();
+ else
+ vt_tray.weight = "";
+ if (vtray.contains("tray_diameter"))
+ vt_tray.diameter = vtray["tray_diameter"].get();
+ else
+ vt_tray.diameter = "";
+ if (vtray.contains("tray_temp"))
+ vt_tray.temp = vtray["tray_temp"].get();
+ else
+ vt_tray.temp = "";
+ if (vtray.contains("tray_time"))
+ vt_tray.time = vtray["tray_time"].get();
+ else
+ vt_tray.time = "";
+ if (vtray.contains("bed_temp_type"))
+ vt_tray.bed_temp_type = vtray["bed_temp_type"].get();
+ else
+ vt_tray.bed_temp_type = "";
+ if (vtray.contains("bed_temp"))
+ vt_tray.bed_temp = vtray["bed_temp"].get();
+ else
+ vt_tray.bed_temp = "";
+ if (vtray.contains("tray_color")) {
+ auto color = vtray["tray_color"].get();
+ vt_tray.update_color_from_str(color);
+ }
+ else {
+ vt_tray.color = "";
+ }
+ if (vtray.contains("nozzle_temp_max"))
+ vt_tray.nozzle_temp_max = vtray["nozzle_temp_max"].get();
+ else
+ vt_tray.nozzle_temp_max = "";
+ if (vtray.contains("nozzle_temp_min"))
+ vt_tray.nozzle_temp_min = vtray["nozzle_temp_min"].get();
+ else
+ vt_tray.nozzle_temp_min = "";
+ if (vtray.contains("xcam_info"))
+ vt_tray.xcam_info = vtray["xcam_info"].get();
+ else
+ vt_tray.xcam_info = "";
+ if (vtray.contains("tray_uuid"))
+ vt_tray.uuid = vtray["tray_uuid"].get();
+ else
+ vt_tray.uuid = "0";
+
+ if (vtray.contains("cali_idx"))
+ vt_tray.cali_idx = vtray["cali_idx"].get