diff --git a/build_linux.sh b/build_linux.sh
index eb3c1bc920b..2af0f635995 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 9d775f3cb6b..f6ea7bc1ac3 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 5c4e6820cde..c8d8718dae4 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 e8d78f57426..f5634eb8757 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 c2b6f8324c0..2624aedf17f 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 00000000000..f449e6baea5
--- /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 e904e3e50ca..6eb40f5203b 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 a480a2f94ac..ee2a7723302 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 86f3779257c..bb650dcac1d 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 ca2d680f0d5..55ad3632f1e 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 e7a4c518959..45d5c460de6 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 00000000000..85f329314da
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 00000000000..83bd9115f84
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 00000000000..002c85ccb69
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 00000000000..b84f8558702
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 00000000000..75145adad7f
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 00000000000..8f92633e50d
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 00000000000..1d44decf2bf
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 f920f06f418..99fe13f6f78 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 5d27354d1e9..48d1fcac7ff 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 4390b85403a..6527e14826b 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 00000000000..291f41bb347
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 00000000000..5757a4f9be2
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 00000000000..a524a6bf73c
--- /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 00000000000..cc348c099b0
--- /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 00000000000..e557f810021
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 a67d27a4f46..01900ad1f1a 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 749df03131d..30134a3f839 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 8fdb765017d..31cb7220bea 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 0df2b714d99..b31ad33c3f0 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 3e2f78d47ad..f70f98cde5e 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 fe981fe7925..605f182e655 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 00000000000..1c037b69e4f
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 15e6b67a9aa..1bcc7b217a5 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 0f3a1af3052..2c240e8ec06 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 6a853404a6a..0582468d688 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 dee06c34cd6..930f4e7de9a 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 60399e2e9fa..4c74acbe7ef 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 bf6ec72ef2e..16face86f17 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 257dd83c7c1..00000000000
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 cd9903e34cc..9892bbb5c72 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 67b1ff61fa8..d028a2e442c 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 00000000000..b9592186c5c
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 94afbd3eab9..51c76c400e4 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 1041e01f29e..aae74aa1f39 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 c4b5639b4fc..2f0b84e36c9 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 309910eab43..248276a56f4 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 21159fe3ab2..f86cae30589 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 e2229ae195f..2adfc583fc7 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 e8bbed4e8d7..921b6db9eb3 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 00000000000..3a9adb7ca7c
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 00000000000..40580284abb
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 00000000000..0423a2d1b8c
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 a5e22f35845..b0c84dacc0d 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 f7279aa2537..fe39915e179 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 d2eb7431429..3cefcb777ea 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 394ab8720e0..6730bf4b5db 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 00000000000..aa960ac6c85
--- /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 f922c7878bf..f3792b34535 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 00000000000..799588ec2e1
--- /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 00000000000..2f075c21321
--- /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 00000000000..e6f9fb9f634
--- /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 00000000000..a6c02f1a794
--- /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 00000000000..f04edf7b395
--- /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 00000000000..865a6c4a7f3
--- /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 00000000000..be7c282e144
--- /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 00000000000..9b47beef091
--- /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 00000000000..b84791da268
--- /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 00000000000..b5b08a15050
--- /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 00000000000..e1fbd560f77
--- /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 00000000000..980ada05d86
--- /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 00000000000..4fb5bc7c617
--- /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 00000000000..ab55eff332a
--- /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 00000000000..c96f344b07a
--- /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 00000000000..1a29777339f
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 00000000000..a5bfc3b1546
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 00000000000..7380a6d8064
--- /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 247f77c6d24..c66ea26347a 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 00000000000..9108233afc1
--- /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 00000000000..050c20f449a
--- /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 00000000000..03e40f40c7b
--- /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 a2cbbb078a5..83c403b44a1 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 5cc12a1a66f..66f7f3a9745 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 00000000000..3892481cdd8
--- /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 9ac95694b32..41232f6cda9 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 a46163008e9..48e6ad9c262 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 829e9176753..1ca4fc711f4 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 d05620a789c..fbbc791445f 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 19c218e4e38..7af52f3efe1 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 15f97d190e6..2bd36aafe7b 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 da1f6a89c34..a7c62f45221 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 56388c0b15a..14e6f9474a5 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 15ac55524b1..63826577bfe 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 a77c85e6310..01cdcd24467 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 b54ff1ac714..cb8b2ee21f3 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 080e4005ece..45b7282822c 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 22ed2d79544..c7c1a7eb8d8 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 77459773872..6fe64c28c90 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 7d7f7be4570..1ec74ae7903 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 2d181eae1b3..a3e9d1d41fd 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 71e2f43b7d6..209ce23d830 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 6424eae3c07..937db1fd86c 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 f135573cf2b..ba9af3803e3 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 dc0de89bc68..cad7de9e3bb 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 778b1b9bef1..7ec94c385c0 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 072bfd59b0e..77c8e762e11 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 19f85778222..ed91cd49522 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 99950575865..690daff8058 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 905fef5e097..b8bceee19ce 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 23393e37b97..75077880312 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 cb96b785afe..ba7728beea7 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 f463a9e0601..4d15aa5af6f 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 b1ab2d897b2..b89a17a330c 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 56a9bfacedd..384b4f319a9 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 37a2a127773..9e5597170d0 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 64f47b93a5a..19291675f5c 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 549a6d7fe59..5adf5539818 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 66a9004da7d..18427473b1e 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 675c21747d5..4ba21cba5a9 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 6cb7369ad2d..4769cf9030d 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 74d30722a0c..d0894a61d3f 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 172d506ecaf..2ba69e4d6e1 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 b51e89eb5b1..603658d686c 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 0a1a283141d..819c415474a 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 dbe1743fbcc..5a4483795f6 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 1acd431c126..c6499205325 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 d49e9314854..93f395c1cb6 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 703993972e0..d0f25e9a0ab 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 c1ff7b34a38..05ce32c6af1 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 c8b97600b7c..c60278482b2 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 d19c428cd4a..b5ac82bf571 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 be951de13bf..dcec7383643 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 5632bdbe262..4769751992d 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 fe51c4740f3..97cd71e5cf6 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 a3cd2eb87cf..41e8831710f 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 2e8fb3e44a2..9517c6cb273 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 eedbf6577d5..a3d0c291e10 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 509404f9cd7..10778bcc73b 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 6df7fae3f2e..9c707bbbce5 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 5dc996d120f..39bae7f05a2 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 f19e70c25f0..ef37b467937 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 7b1612a79d2..c7ca32e2149 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 53d29a785fb..0fdea76fe9b 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 6395e965b00..3ebf14f69c0 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 0a01e92daa1..c7d9745406f 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 91feaa67740..960717592f9 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 cea5a44b6d9..226241d6f3b 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 01133f83ec9..d0df6bc4462 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 30e9ca38ee8..063459a6fc2 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 9edb0342ad9..bd131693f4b 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 6635305debd..8700ad327e9 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 20e452f19b0..195a3c7538e 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 4c791c46004..82a34774fba 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 ed3bd535f96..d78362d4a69 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 cc2806ac9fc..3c2667ba65c 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 629884dc7c9..0a1938f8425 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 ca2631fb714..4187b5e97d4 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 7f7934ad5af..99e6c8558e6 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 f8388f6262e..ba272780863 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 28082afef5a..eff76ccaeb6 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 a143d7b6357..4a31ef5a0f1 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 2675aaa3739..9b213430a58 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 9ff95902a77..33d9f252548 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 490c0026cd6..e8ec96ac253 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 f1923e0d69e..a0c3058a710 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 4f9bb7b53ed..a1dbdc67e65 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 4d544e0f97a..0dbb703749d 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 26ad6e58061..dce6cbfc307 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 164c03866f3..4fffef2b26f 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 e501731193c..d622c05abad 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 7a629102571..55a49f3888c 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 775523f0d6d..67cf897a41d 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 044c7c24cbd..e5c6026fb5a 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 284206f4fac..8a711ba4a6d 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 7d39dcfa0c7..dc25f49cb35 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 b1e8658fce1..799c9c96c2a 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 e3778f37093..41209c609db 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 7586ed84bfc..8447e73bc21 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 148b39055b5..50219578c6e 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 e5ebbcfe315..230396014fe 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 0268a0ea0fa..835655d8312 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 51251017b3e..41d988e684f 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 d09c89ecb7c..2348de67e44 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 de5ffe19c33..5fa1b108aae 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 a647b300b65..57196d2671f 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 f5115f43b79..51339de5254 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 15ba67645d6..0a07b0c26e8 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 d6b15c6eba8..2c968b7404f 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 571ab55f0dc..e13b0b7e7ae 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 69578536be0..b0e9ac619ee 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 1005112ff6d..857a50dfbd8 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 d3e5e0c26ab..a60a7495be1 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 dc3159fb7f1..7c619a104c0 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 7a5062a369e..2a056071132 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 40c694d8914..398f8d6f117 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 7669c35cdca..3b8778eaee6 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 8090a646179..e4719a71d66 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 fcc8b66b82f..bd77cf1e45f 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 9b80a1a5dda..fa913af494f 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 d77980a29d8..00000000000
--- 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 f4c9efb1843..870c3bb3bf7 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 364bcaa1ee4..ea35d93d185 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 61897f7a738..e9b651f2826 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 52a1749075b..643d8667c2c 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 020a3f9cc87..2caa8812d2a 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 e22593fb300..43878152786 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 56aedfd03ed..f2c1662d40a 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 7c10c6c6730..0cae00d0307 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 3d60b01d8bb..5bcb42994dc 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 31c88af561e..db8428fad79 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 331f77e4e70..a6809f2df2d 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 1a0bd76e40d..72d1f540097 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 ca621513421..76d6443637d 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 88e1f680758..516aeab7254 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 efd2cc4d010..ebaf9c18a17 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 08476dbb784..0fb84521137 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 c1622d28f55..4c950cea9f5 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 f9c917dfc58..5deb4a3d4b5 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 be6eb5944a3..0b8258b96e4 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 d879b17b8b0..6923ab22363 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 e9955abd55e..f66069668c0 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 99fb6bf6e7d..41e489443b7 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 00000000000..9edabd17ec6
--- /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 0b08cb66bbe..97fc0d11f13 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 9657edc6614..09f6147be2f 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 d081db43511..0405ba19239 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 f43aca97b29..b31a1d16074 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 fe057dc3f12..58b3e953715 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 d218006bee6..6f10184faf0 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 fb227626fd0..c11c22991ad 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 3f92bb8b6fd..a21add8f871 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 b2fe7cb3bb9..99c3bae3852 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 89a48d31bbf..c392d0ee9c6 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 140f6e7331d..e5c28d36eb2 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 c63dffe1a47..bc0686ffb87 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 2d299244745..37809dbca96 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 6c41ea8e3f1..a4eae17d26e 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 23e5a273408..66371f83394 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 b31526453e0..ed49f5d0e96 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 7c29054e32c..dbc599a13c7 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 aee1feb20f7..70284b77199 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 3493d123c87..b1a5683ad9b 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 0b68f55207f..2468e03eb30 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 d41f42e7059..2b699eef159 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 0f7399c0ffe..3f0ce712d23 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 7b4a4d159dc..72862163d2f 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 4703c9bd976..22e7ceab3b0 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 46495ffd045..187a24d811e 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 73188a627a3..51c677d51f3 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 c89228221ae..69f766b0a59 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 0dd4f8e8299..de38bf2726f 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 d745f58ddad..86d937870f3 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 15fade29642..62e578beb8b 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 35257823ae7..e842267f207 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 6a3bd6f05db..891e3e65279 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 90fae21397b..e19a49279b9 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 a53df8b5a9f..2a87fdde762 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 3890b18a5c3..b31a0b012a7 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 8a76d4c7cb2..432d530d207 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 81bd28b30c3..ec826048d7c 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 98523a0fa66..016a2a1a016 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 1a9120fdb98..9fb9a8582fa 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 12fe82dd123..a03d7a0e750 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 bb43494a56e..ff5cbbbdd46 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 aec643962c1..b2d86d7f21e 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 55d9be4407f..a271c409896 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 aeb45ebe562..fc2ea3c5d81 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 37decfe4dad..0834bbf0d64 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 6172f32e94e..4519ea607d9 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 a8a8a1387a6..4c2316f806d 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 aa514e6f044..d643b852b74 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 7d9309c1b1c..35e8b4a7b9e 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 d026bdc7469..92b4378781a 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 f43ab7e2e5f..8039c670211 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 0f484cdbedf..09e687514ca 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 3e4b2431bbc..9e6363d6e20 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 b652ce689f7..2257ae5f558 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 5e21e02d24e..59e236db380 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 1b782a6ee62..6a1bc24d81c 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 e56d4b2ec7e..e001690ce47 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 eadcfbf537b..34a1ff1b50a 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 d4b117b99d6..3ec9ec36858 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 9f5a54a0d9b..8936f5f55fe 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 4348ba51275..89974c3fdea 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 3772a1fec2d..359c4252c49 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 12c9a8cfecf..caa8459becd 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 3e37ddbc84d..e750425a820 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 5cd7ae57971..502de9d51ce 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 261ae3c0460..62cb005a686 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 99692b4b683..4750fc55fc3 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 72c6d54ca7c..00c588283d4 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 255270421ab..35ee46b27da 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 42de0f68ccc..723c1eb3ef0 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 a71adcab884..de981319d21 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 8c13c43cc21..b07c11163f2 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 05f39f9b2c9..ef2033eefdc 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 c9a950d8860..d7db10fd81b 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 31af715bc79..a0e82cd9d37 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 348557e679f..a71c26508ab 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 9b6149d6622..db04cf5065d 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 c058ac769f4..3c8743b6347 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 396eda3960d..181236fad30 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 127d6094145..ff5fac17101 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 75f274ba0bd..7c64cba2f2e 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 7224ec34e2f..3d5bbcd646e 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 8f7b49a25a6..b8ef7666e30 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 9a16c133222..8fa07b924fc 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 a993ff28869..eafb380c79a 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 27c70c63bfb..6c3b92cd966 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 34550b4b7fa..28bf9376926 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 cd63eaf38ab..927285c149c 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 12cb6e233e1..0d995657594 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 4adcd858f3a..176006994c1 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 dc024e06a4b..5e7dd3f4931 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 6b76b22acb3..aa63a75a187 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 01e641d6783..3622d290eec 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 00000000000..8688317f422
--- /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 00000000000..b15e0b9757b
--- /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 134538137dd..aad4c9be305 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 a42af2664c7..6d926c135dc 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